Dear Freenet Developer, Please find attached my proposal for the project :
"Develop a File Sharing System, accessible from inside the Freenet web interface" Please feel free to send back any suggestions. Thanks and Regards, Jai Sharma -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20090329/0cf05974/attachment.html> -------------- next part -------------- Name - Jai Sharma ---- Email - sharmajai at gmail.com ----- Project Title - Develop a File Sharing System, accessible from inside the Freenet web interface. ------------- Benefits to the Freenet Community --------------------------------- By successfully finishing this project I wish to improve the state of the art of file-sharing inside Freenet to the extent that it becomes, at least as popular as current state of the art of peer to peer file sharing system - the bit-torrent system. Expected Results ----------------- Here are my proposals for the new file sharing system: I propose to use distributed version of bit-torrent protocol as the basis of the file-sharing system, because it is a mature system and works extremely well in a distributed peer to peer file sharing context with relatively slower upload speeds than download speeds. I propose the following implementation: - Files with size less than a threshold will be downloaded directly apiece from the CHK. - For other files the Content Hash Key (CHKs) instead of identifying the file itself, will identify the torrent file. - The torrent file will have the list of CHKs for the pieces of the bigger file which will be downloaded simultaneously from multiple peers to have higher download speeds. For the implementation above, I propose to provide the following deliverables: - The HTML UI for pages for searching, downloading and inserting files. - JAVA classes for handling the insertion, search and download requests. Project Schedule ----------------- The project should take less than three months, but I have full availability during the extended summer we have, here in Buffalo. That is I will be available mid of may, when my final examination will be over, to the end of august, when my next semester starts. No I don't have any other commitments for the summer. Bio ---- I am a student in the Master of Science program, majoring in, Computer Science and Engineering, at University at Buffalo, The State University of New York. I feel my skill-set is suited for the project, because of the following reasons: 1) I was very surprised to find that something like Freenet actually existed because I myself was thinking of developing a distributed web like Freenet. In my original drafts anonymity was not a concern but I loved the idea of anybody being able to publish his/her content on the web without paying hefty hosting charges and, utilizing the bandwidth in proportion to the merit and popularity of their content. Since the conception of this idea I absolutely fell in love with the possibility of democratization of web and wanted to give it a try whenever I had those elusive spare weeks, which I never managed to find till now. It was delightful to stumble across something like Freenet that aligns so perfectly with the dream that I had been brewing and furthermore the possibility of actually contributing to it. 2) The conception of the idea can be attributed to my passion with distributed algorithms. I first came across distributed systems and JAVA so to speak, during my undergraduate engineering project called - "Peer to Peer file sharing system" in the year 2004. It was a distributed file sharing system (as compared to the centralized file sharing systems of the time like Gnutella network or even more centralized Napster), which used a Distributed Hash Table based on the CHORD lookup protocol developed at MIT, to store and retrieve content. The main goal of the project was not very far from one of the goals of Freenet, that is to share content without the fear of censorship, as it did not rely on a centralized servers like other systems of the time, hence was immune to any kind of censorship. In the project I ended up implementing the chord lookup protocol in JAVA for storage and retrieval of files. Since then I have executed many more projects in JAVA and have successfully completed Sun Certified Java Professional CERTIFICATION. 3) In my current semester at University at Buffalo I am taking a course called Distributed Systems and have so far topped the class. The course is an in depth exploration of the theoretical issues involved in Distributed Systems including: a) A formal distributed program specification language and a distributed computing model. b) Logical, Vector clocks and Clock Synchronization c) Mutual Exclusion problems d) Consensus, Leader Election e) Fault-tolerant agreement, Byzantine agreement f) Self-stabilization g) Examples of self-stabilizing algorithms h) Systems design primitives: shared memory, message passing, overlays i) Representative distributed computing environments I feel that these topics will equip me fully to successfully finish the project in the stipulated three months time period.