Yonkly - Open Source Twitter

Date April 11, 2008

[update: Yonkly source code is now public]

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

kick it on DotNetKicks.com

22 Responses to “Yonkly - Open Source Twitter”

  1. Chad Myers said:

    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.

  2. Chad Myers said:

    Oh yeah, forgot to post my main comment: TOTALLY AWESOME! Thanks for doing this and I hope it continues to grow.

  3. Haacked said:

    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.

  4. Mike Minutillo said:

    Awesome stuff! I’m keen to get a look at the source and I’d be up for having a hack :)

  5. Chris Love said:

    Great stuff, love the missing Twitter features.

  6. Mind Gravy » Blog Archive » links for 2008-04-12 said:

    […] Yonkly - Open Source Twitter | Emad Ibrahim (tags: asp.net mvc twitter design) […]

  7. Sam Huggill said:

    Looking forward to poking around…how long did it take you to get this off the ground?

  8. Emad Ibrahim said:

    @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

  9. Chris Love's Official Blog - Professional ASP.NET : Links of the Week April 12th 2008 said:

    […] Yonkly - An MVC Twitter Clone, so cool!!! […]

  10. Grant C said:

    Cool stuff, Emad. Good luck and stay focused. :)

  11. dave said:

    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

  12. Emad Ibrahim said:

    @dave thanks for the enthusiastic support, replying by email right now..

  13. Albert said:

    How can I get the source code? I was looking for exactly this functionality.

    Thanks

  14. Emad Ibrahim said:

    @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.

  15. Jason said:

    I’d love to check out the source when its available! What a great way to learn a new framework.

  16. A'braham Barakhyahu said:

    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….

  17. Emad Ibrahim said:

    @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

  18. azzam said:

    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-can-be-liberated-heres-how/

    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

  19. Emad Ibrahim said:

    @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?

  20. Jason said:

    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’ ?

  21. azzam said:

    @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!

  22. Emad Ibrahim said:

    Source code is available over here

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Close
E-mail It