Dear Freenet Developer,

Please find attached my proposal for the project:

"Develop a File Sharing System, accessible from inside the Freenet web
interface"

All suggestions are welcome.

Thanks and Regards,
Jai Sharma
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20090329/45d3425e/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.

Reply via email to