Yesterday was an interesting day. Mailing lists, IRC channels, google groups, all came to life as the Summer of Code began. It's quite an amazing feat when so many technically minded people are thinking around the term "collaboration". In the flurry of activity, I somehow got subscribed to Jabber's Summer of Code mailing list. Initially, I had submitted applications for both Jabber and Internet2 but according to Google's Summer of Code page, only the Internet2 project was accepted.
As I investigated the Jabber mailing list a bit more, I came across a list of Jabber's accepted students, with my name at the top! Severely confused, I sent an email to Chris DiBona as I could not find any other contact information for Google's Summer of Code team. I hopped on my jabber.org account and started talking with the SoC mentor that had added me to the list. He's not quite sure what happened either, but we agreed that it'd be best to see just what Google says.
When I woke up this morning, my mailbox had 240+ messages from various Summer of Code mailing lists. The general content of most of the messages was "OMG! I can't believe I'm in!" I have to admit, I spent a few hours in this state after finding out that I was accepted, but I tend to avoid needlessly cluttering other peoples' mailboxes. I instead, bugged every online contact on my buddy list (which at 3am amounted to about four people).
I spent about two hours sorting through the messages and building procmail rules to keep the lists confined to their own folders. Finally, I found the needle in the haystack: an email from Chris DiBona. Unfortunately, it was just a form letter stating that I must submit my request to the Summer of Code support address. No problem, apparently this address was listed in the acceptance mail, I just skimmed over it.
So, as I'm waiting to hear back about my confusing acceptance to the Jabber project, I am beginning my work on my Internet2 project. One of the first tasks I have assigned to myself is to figure out the big picture view of the project. Here is what I've come up with so far:
- An event is sent to the server using a simple XML or RFC 2822 based protocol (To be decided)
- The server parses the event and adds it to the database along with a timestamp
- The server creates a new notifier object with a reference to the entry in the database
- The notifier sends out emails and updates static content on the web server. I'd like to use some sort of listener API to keep this open to new implementation formats
As far as the event protocol, I've tossed out a couple of ideas. In terms of Web 2.0 trends, everybody seems to be using SOAP/WebServices but I think this is overkill and something that HTTP was never designed for. For this reason, I think the underlying protocol should just be TCP, preferably SSL encrypted. The XML/RFC2822 object will be sent back and forth. My mentor, Henrik, wants to use UNIX domain sockets instead of TCP. I agree that this makes sense, I'm just a little unsure of the implementation. It looks like I'll be spending a few hours digesting man pages :)
I've posted this information about my Summer of Code project because I believe the spirit of this project is to spark interest in open source software. If I don't talk about it in public view, it's not very open, is it? I'm pretty sure the mailing list archives will be public, but I think that in blog format, I have a bit more freedom to be overly verbose in explaining how things work. I've found that by explaining the simple parts of a program, I often have an opportunity to simplify the complicated parts too so this is as much for my benefit as anybody else's. Finally, this will make great documentation in the future.
If you have any comments, ideas, suggestions, or rants about the way I'm writing this program, by all means, contact me.