A A
RSS

Yonkly – Open Source Twitter

Fri, Apr 11, 2008

ASP.NET, ASP.NET MVC, Yonkly

[update: Yonkly source code is now public]

[update 2: I just created www.isweat.com using the yonkly engine]

[update 3: Tons of new features]

Asp.net MVC framework rocks. I wanted to play with it more and decided why not build an open source twitter. Unfortunately, I couldn’t come up with a better name for it that had an available domain so Yonkly it is. Come to think of it Yonkly is not too bad – http://yonkly.com

I will post the source code online very soon at either codeplex or Google – not sure which one is better yet. Any suggestions? I just need to clean it up and add some comments before I post it online. Hopefully, no one will laugh at my code.

This first release has the following features (Note: this is only one week’s worth of work):

  1. Conversation threads – here is an example
    image
  2. Message replies automatically turn into a conversation, just hit the reply button image
  3. Message deletes – cannot delete messages that have been replied to.
  4. Follow and Un-follow friends
  5. Built-in URL shortening
  6. Public timeline
  7. Friends and followers stats
  8. Integration with Gravatar (www.gravatar.com)
  9. Search for friends by email or username
  10. Invite friends

Depending on community support and involvement, I am hopping to add the following features in the next release(s):

  1. REST API
  2. RSS feeds
  3. Twitter and Facebook integration
  4. Expanded user profile
  5. Friend finder – using gmail, hotmail, outlook imports, etc…
  6. Email notifications with opt-in/opt-out options
  7. Silverlight, Windows, mac and mobile clients (require the API)
  8. Migrate to SQL Server standard
  9. UI changes and improvements

The following was used to build the site:

  1. Asp.net 3.5 MVC Framework Preview 2
  2. JQuery for JavaScript and Ajax
  3. SQL Server Express

This was an excellent learning experience which was only possible because of all the MVC fans, bloggers and community. These are all my mvc-related bookmarks that I kept referring to during the development process – http://del.icio.us/eibrahim/mvc

FUN STUFF

How about becoming part of this open source project? If you are interested, leave a comment below or contact me via the contact page. Also, subscribe to my blog to get notified of updates, new releases and so on.

You can also find me on yonkly at yonkly.com/eibrahim or twitter (how ironic) at twitter.com/eibrahim

Tags: , , , ,

  • CodePlex has good management tools, but the source control is difficult to work around (SvnBridge is nice and all, but SVN straight up is better, IMHO). Google has SVN which is better, but not as nice management tools.

    Assembla seems to have the best mix I've seen, so far. You might check them out too.
  • Oh yeah, forgot to post my main comment: TOTALLY AWESOME! Thanks for doing this and I hope it continues to grow.
  • Very cool! I've been trying to build my own twitter clone as an example as well. Looks like yours is much further along than mine. I'll check it out.
  • Awesome stuff! I'm keen to get a look at the source and I'd be up for having a hack :)
  • Great stuff, love the missing Twitter features.
  • Looking forward to poking around...how long did it take you to get this off the ground?
  • @chad thanks, I will look into them
    @haacked, @mike, @sam I will let you know when I post the source code online. I will announce on this blog
    @chris, working on it :) keep throwing ideas at me
    @sam: it took me about one week - but it is still missing a lot of features... so, be on the lookout for a new release next week
  • Grant C
    Cool stuff, Emad. Good luck and stay focused. :)
  • emad, this is outstanding - if you'd like some help with documentation please drop me a note (my email is in my comment details)...i don't write code, but i'd love to maybe sit on the phone with you for an hour to create some easy to follow installation and set up instructions for interested users...have written tons of recipes and mod documentation for drupal (and elgg too), so quite familiar with "keeping it easy" - and you can find me on twittter as passingnotes
  • @dave thanks for the enthusiastic support, replying by email right now..
  • Albert
    How can I get the source code? I was looking for exactly this functionality.

    Thanks
  • @Albert, I have already added the code to assembla but it is not public yet. I have just had a new member join the team and we will try to get this to a point where we can make it public i.e. add documentation and installation scripts. Stay tuned.
  • Jason
    I'd love to check out the source when its available! What a great way to learn a new framework.
  • Fantastic. Not sure how similiar castle is to asp mvc, but it would be interesting to see how it can be implemented in both. Just started using Twitter TWO days ago (twitter.com/barakhyahu). Still would have liked to think of this before you did. :) Kidding, great work. I'm going to sign up.

    I'd love to help, but me thinks I need to get comfortable with asp mvc first....
  • @A'braham Barakhyahu I have never used castle and don't know much about it... Good luck getting comfortable with MVC... I think you will like it. By the way, your twitter link doesn't work - you can find me at http://twitter.com/eibrahim
  • inet
    Hi,

    Wicked stuff.

    Was unable to see the comment reply in Opera, would not open ??

    Food for thought, Can this be used as a decentralized version of Twitter? This is what is being searched for and an open source solution is the only feasible option from my perspective.
    Not what everyones thoughts are on how this can be done, there has been wider discussion on techcrunch regarding this:

    http://www.techcrunch.com/2008/05/05/twitter-ca...

    comments on the timeline can be shared on the host of the individual servers that upload the script and results of the public timeline can be displayed on your website i.e. mysite.com/yonkly/public-timeline, it would be a case of publising the public timeline link in our sites/blogs, etc. Theres no need for a central public timeline it can be viewed on any of these sites that hosts it by having the script uploaded, Like RSS feeds.

    We could look at minimising the amount of space that each site takes up to host public timeline and a method to distribute the timeline equally. The more that sign up to upload the script to the server the simpler it gets to distribute.

    Just thinking out load
  • @azzam: I didn't test in opera. Being a 1-developer team, I figured targeting 90% of the user base should be ok. I actually use a jquery plugin for the reply popup, so my guess is that the plugin is the one not working with opera :)

    Someone made a similar suggestion about creating a distributed twitter-like platform. But that is one tough problem... I haven't had time to really think about it but just dealing with data on multiple servers and authentication alone would cause you a headache...

    So let's say we have server a and server b. Each has its own version of the database and a different set of users. How would you deal with user a on server wanting to friend user b on server b? Sure you can server a talk to server b but then what if we have 20 servers?

    Or another scenario, user a leaves a message while on server a, how will this message show on the other servers? Having every server query every server on every request would just not work...

    Eventually one server/provider would be the most popular and you will end up with the same problem of a centralized twitter system... It's kind of similar to OpenID, sure there are several providers, but in a few months/years, 80% of the users will be with 20% of the providers - probably one of the bigger players (yahoo or aol).

    How would you handle upgrading the servers and multiple versions of the protocol floating around?

    A more important question, why would anyone bother hosting one on there servers? I mean, what is the financial benefit to them?

    Obviously, I haven't thought this through but it is not a simple problem...

    I would love to hear what others think. Any ideas?
  • Jason
    Distributed Twitter is the same thing as the email concept... why do we need to copy it? Isnt twitter just basically a public email inbox with a 'friend list' ?
  • inet
    @Emad: After leaving the comment I went back to Opera and it seemed to work. So do not go out of your way in this area unless a few others identify issues with the opera browser, at this stage seems fine.

    Simply put you can not have a version of the that collects users for an individual server and attempt any kind of resolve, it will not be practical. You could offer a version that is open source that a community driven site would want specifically for its own niche to build its own list of users, for sure. But there would have to a be custom version that maybe works using OpenID only, each user having ownership to their ID (character extension could be given to cater for the length of the OpenID, i.e. 150 characters and not 140 to make responses such as @claimID/azzam ....). The custom scripts would communicate with each server.

    The question about each server talking with each other to display the messages realtime you got me there!
  • Source code is available over here
  • Jordan
    can someone please help me install this thing?
  • You will need to get the source code, change the settings in the web.config
    file, compile the project, create the database and deploy.
    -Emad
  • raj
    How do I compile I am a newbie database stuff I can do
  • You need visual studio 2008 and mvc framework preview 4 from codeplex. I
    haven't upgraded the code to us epreview 5 yet but the beta is coming out
    soon, so I might as well wait a couple of weeks.
  • JC
    How easy would it be to implement sending messages from mobile devices?
  • It's not hard at all, there are services out there that provide sms gateways
    that would post a message to web page as an HTTP POST that I can then take
    and insert into the database. The only problem is cost. These services are
    not free and every message costs money. There are some out there that are
    ad-supported but I don't want to go that route for now.
  • dbonchabo
    Hey eibrahim i tryed doing exactly that to added a new web config file and used the web.sample.config file that came with the code but when i run the project there is tones of errors how can i fix this and do you know how i can get the source code that was used on hokie talkie thank you
  • The source code used in hokie talk has not been opened yet. As for the
    problems with compilation, try posting the question to the codeplex
    discussion at http://www.codeplex.com/yonkly/Thread/List.aspx
    Thanks.
  • dukon21
    Is someone able to make yonkly post only messages just like twitter without posting images
  • If you are refering to the hosted solution at yonkly.com, yes you can turn
    off/on images from the admin control panel, if you are the network admin.
    If you are referring to the open source version then it is not an option but
    can easily be added - after all it is open source :)
  • may i ask, why did you use mvc instead of web forms? how difficult do you think it would be for someone to convert your project to use web forms instead of mvc?
  • Because I wanted to learn. I have more control over the HTML generation.
    No view state. Easier to unit test. better seperation between
    presentation and code.
    I haven't tried converting to a webform but my guess is that it won't be
    easy. It will probably be easier for you to learn MVC than try to convert
    it.
  • sounds good to me... mvc seems to be popping up more and more. I think it'll be a while before it's ubiquitous, HOWEVER, I am certainly always up to learning new things!

    thanks for your input
  • stuvie
    everytime i try to upload an image it shows status error code 500
    does any know how to fix this
  • Please ask support question over here
    http://groups.google.com/group/yonkly-os
    Thanks.
  • Nice features you have added i have one quetions i want to create the same feature on the admin page where it lists the registered users and there roles how to i do this cause when i do it it only lists users and not with there avatars
  • How did you display a list of member in the admin page cause I'm trying to do the same prosedure but mine returns a list with only usernames no email or photo
  • nice youtube posting feature you have added i want to include the same feature on my site is there a way that i can go and learn how to do this or are you able to post a tutorial so people can learn how to do this it seems like an easy way of letting users add videos to your website.
  • nice work man! i just wish it was in php : (

    thanks for sharing
blog comments powered by Disqus
Advertise Here

What I'm Doing...

Yonkly Open Source

Sign up for my newsletter

powered by MailChimp!

Cyber Identity