Name: Remy Chi Jian Suen
Email: CENSORED
IM:
MSN - CENSORED
AIM - CENSORED
ICQ - CENSORED
IRC - CENSORED

Background:
BitTorrent has seen widespread usage both in legal and illegal activities since its original conception. It is becoming a very common method of distributing a file to a large number of parties. Eclipse.org itself offers torrent files for interested users that wish to download files through the BitTorrent protocol.

Eclipse's ECF project has BitTorrent listed as one of its core framework features that is waiting to be implemented (http://www.eclipse.org/ecf/plan.html).

Purpose:
Adding BitTorrent to ECF's repertoire of features will give it a lot more exposure than it currently has, which will help attract more users and developers to assist in the ECF project (which is extremely important for any open source project). The ECF project plan currently lists the popular Azureus client as a candidate implementation, but this can only happen if Azureus and all of their contributors thus far agrees to relicense the code into a license that is compatible with the EPL (as Azureus is currently licensed under the GPL). This may become a reality when GPLv3 is released, but the ETA on that license is 2007 and it is not known as to whether Azureus will change their license from GPLv2 to GPLv3. I do not think any relicensing negotiations has been put forth by the ECF team members to the Azureus team yet since they appear to have better things to deal with right now. Of course, if negotiations have already started (or is currently in the planning stages), this project may effectively be voided.

Project Description:
I intend to create a clean-room implementation of the BitTorrent protocol in 100% Java for integration with the ECF project. This implementation will provide the standard bells and whistles that the official BitTorrent client has (downloading, seeding, capping your speeds). An example application will be created to allow developers to see how to create a BitTorrent client via interacting with the ECF API (something really simple like an open file dialog to pick a file, then a progress bar and maybe some other text widgets to display information, nothing big). I also intend to develop a torrent file creator if time permits in an Eclipse forms based plug-in of sorts.

After the protocol implementation has been fleshed out and synchronized with the org.eclipse.ecf.fileshare API, time permitting, I would like to work with the Eclipse platform team to investigate how the fileshare API can be used to distribute Eclipse to other users. I think that it would be great if a way was devised for the filesharing API to be used silently (in as low a memory footprint as possible) in the background with a cap-able speed that allows the current user to distribute their Eclipse folder's JAR files to other users. The update manager could run and start collecting the JAR files from various users. Even a cap of 1kb/sec would be quite sufficient given the number of Eclipse users around the globe. Of course, the user would have the choice of using the swarm method of retrieving the feature/plug-in or to use the standard downloading mechanism through the provider's update site.

Project Schedule:
Today to May 22 - I will spend this "grace period" time between now and when I find out for sure as to whether I am accepted or not on familiarizing myself with the BitTorrent protocol and the ECF APIs.

May 23 to May 29 - This week will be spent on discussions with the ECF team to determine the API specifics and how the BitTorrent provider should be plugged into the core framework.

May 30 to June 30 - Hacking on the code and keeping it synchronized with any ECF API/framework changes. At this point, I envision that no matter how slow I'm working, I should at least have a simple workable client going (minus the "powerful" features like selective file downloading and speed capping). Given that the end of June is the mid-way mark, I will take this opportunity to discuss with my mentor and the ECF team as to whether he thinks I should be concentrating my time more on feature x than feature y.

July 1 to July 14 - I'll be using these two weeks to spruce up the protocol's API to make it as developer-friendly as possible, bug fixes included, of course. This "code freeze" will also give me time to redesign anything that needs to be reworked per my discussions with the ECF team and my mentor.

July 15 to July 21 - This week will be spent writing up a stellar example application using the API and also an accompanying article to possibly be featured at Eclipse.org's articles section to get some publicity for ECF.

July 22 to July 28 - Given my familiarity of the protocol at this point, a torrent file creator should easily be doable within a week's time.

July 29 to August 21 - The coding continues until the deadline with the obvious protocol improvements and API fleshing. If time can be spared, I plan to start speaking with the platform team during this time period to see whether it is possible to implement some sort of swarm distribution method from within Eclipse to other users.

Bio:
My resume is at CENSORED, so I won't bother regurgitating that.

I can safely say that every one of my classmates and their grandmother knows that I love Eclipse. I have Eclipse swag purchased from EPIC's cafepress "marketplace" (http://www.cafepress.com/eclipseide), which I wear to class quite often (I don't everyday as developers actually lead clean lives, unlike what most would think). I've also went to the trouble of setting my wallpaper to the Eclipse logo when we had an assignment that could be completed in Java, to ensure that everyone that happened to walk by my laptop screen would see those seven important characters.

Open source interests me because I like programming. That probably sounds rather clichéd, and I have to admit that I don't know of any other way to put it. I like sharing my ideas and code with other people, so whenever I wrote something by myself, I'd always release it under the MIT license to ensure that anyone can do what they will with it. If someone makes a million dollars out of it thanks to witty marketing, well, I'm glad I've been able to help feed their grandchildren.

The Eclipse project, whilst not under the MIT license (understandably so), matches my core ideals of open source. We're here to share things with one another in hopes of benefiting all developers regardless of what language they like programming in or whether they use the framework the software we built on runs on. Eclipse's components can be broken apart and used as anyone wishes, just like how my MIT code can be chopped up and used if anyone wishes. This is why I love Eclipse and its community (I also love it because it totally rocks as an IDE, but we all know that anyway).