Dear list, I have written down some ideas I have about a few GSoC projects here. I'd love nothing more than you reviewing them before I fill out the GSoC form! (warning: this gets really long (& ranty):D)
1. Chat Interfaces: Most of this project is done in 1.0.x already, AIM is already finished. So I thought of writing a libpurple plugin and a telepathy plugin too... These would let StatusNet connect to many number of protocols without doing the protocol compliance heavy lifting... Besides new protocols are often ported as purple plugins which can be used right out of the box! Both purple and telepathy extensively support DBus, there's a PHP-DBus binding in PECL (http://svn.php.net/viewvc/pecl/dbus/trunk/examples/) being developed by one of the PHP core developers, its been under development for quite some time but doesnt have a release, but is quite stable. I have contacted him and he's "put a release on his TODO list". About scalability: DBus is built to be compact and fast, and Meebo uses libpurple, guessing by the amount of traffic they handle (millions of users), it should be pretty scalable! I am very very excited about telepathy support. It's the "Open Standards" way! Don't know about scalability details though. Deliverables: 1st Phase: 1. Standalone IRC, MSN, Y!IM plugins [use external libraries. I searched and there isn't one for Yahoo.] 2. Code to format notices for delivery over a good number of protocols 3. A libpurple DBus api library with all functions required by an ImManager 4. Purple plugin for bidirectional updates. 5. UI for setting up accounts (a config option for setting maximum IM accounts per user and per protocol) 2nd Phase (supposed to be hard since there are many things to take care of): 1. A Telepathy Client API (all functions required by an ImManager) 2. A Telepathy Client Plugin This would implement most of the things described here http://ur1.ca/t1ul If time remains (or even if it doesn't): 1. Telepathy protocol implementation. i.e implement statusnet as a telepathy protocol, this would allow awesome tubes (http://telepathy.freedesktop.org/wiki/Tubes) to be set up between applications for sharing statuses. [I still wonder how that could be used] (I doubt there will be any more time) 2. Implement tracking in IM updates. This project is the project I'm moost excited about, but I am concerned about the timeframe. (Should I reorder the deliverables?) 2. Real-time search & Twitter Stream API: I think these two projects are largely related and can be accomplished parallelly (Presenting the data in HTML, XML & JSON is very much secondary to getting the logic correct), cracking how to implement one of these is the key to the other. It is a pity that Sphinx is optimised for reading and not for writing, making real-time indexing an expensive process. But there is this weird idea of a delta index http://sphinxsearch.com/docs/current.html#live-updates wherein you have a smaller real-time updated index and a large main index which is less frequently updated. When searching, the smaller one is searched first and then the bigger one. This can be used to load search results that are up-to-date to the second of search request, then the real real-time part can be implemented as follows - Write a daemon which sets a unique ID to each search request when it is received, then appends the keywords to an inverted index file. - When a notice is posted, after being checked for conditions like is_local etc. it is sent to this daemon, which then matches its conents against the inverted index file, the daemon then sends any matches to a plugin hook say, RealtimeSeachHit. - A RealtimePlugin class then implements transport to browser (in onRealtimeSearchHit) to the search requestee with the given unique ID. It also notifies the daemon when a search window has been closed/disconnected the daemon then removes the keywords from the index file. - Another RealtimePlugin class can be similarly written to expose the stream api using meteor (note that pure Bayeux Protocol implementations cannot do this, so something like tornado or Jetty://). - The API requires a handful of methods to be implemented, So it will require the daemon to have these built in. (Note: the daemon above would be implemented in the same plugin, sucking on HandleQueuedNotice or a similar hook) 3. Twitter Lists! This is one of the easy ones! I happen to know much about notice handling and caching from my work on the gallery plugin. Here goes an implementation plan: - Use peopletags, add the inbox delivery logic to whoGets() mark the source as NOTICE_INBOX_PEOPLETAG. - Write a widget for the sidebar in profile pages (showstream) showing most recently updated peopletags for that user. - Allow subscription to tags (new peopletag_subscription table) - Implement OStatus for each /user/all/peopletag resource (I have yet to find out how to do this, guessing it will be easy) - Allow ajaxy remote subscription through a form in the widget. - Show the most subscribed lists in the Public Timeline sidebar. - Take care of caching. (1 cache per-list, cache is blown ("key;last" isn't) when a new notice arrives) - API! (That is going to be clever copy paste. :D) 4. People Search server I think this idea is the most intriguing of all, mainly because I know little about search engines. I think ideally, it would use Sphinx and a weightage system similar in algorithm to @cvollick's Karma plugin to rank people. Also will it be good to aggregate just hCards without OStatus? something like http://sig.ma does? (I think no) -- I am absolutely torn between these projects, and, I want to make sure I get to participate, obviously ;). So, do you think it would be right to apply to more than one project and see which one gets through once the mentors have ranked the applications? I asked #gsoc IRC channel and they said it shouldn't be an issue (GSoC allows a maximum of 20 applications from one applicant. SN is the only project I'll be applying to, so 4 projects)... Sorry for not having done Mock-ups and prototypes, I so wish that I could have. It is that time of the year when I have to have to concentrate on studies (I have no choice). I will, hopefully be free (and with OK exam results) in May when there will be a lot of time before the actual coding starts. Thanks a lot for reading! No, really, thanks a billion! :-) -- Shashi OStatus: identi.ca/g0 _______________________________________________ StatusNet-dev mailing list StatusNet-dev@lists.status.net http://lists.status.net/mailman/listinfo/statusnet-dev