Creating a successful
peer to peer filesharing network involves one simple concept: user
sharing. Consider two opposing examples of peer to peer networks and their varying success rates. Everyone has heard of
Napster, the
MP3 sharing program. Napster has enjoyed great success (at least as far as its effectiveness at locating MP3s is concerned). Compare the success of Napster to
Nullsoft's
Gnutella filesharing program. Gnutella is a much more theoretically interesting and distributed peer to peer model. Because of the difficulty in blocking its
protocol and the vast diversity of files which can be shared through it, Gnutella should be an amazing file searching utility capable of locating most common files easily.
Why then is it that Napster searches return more numerous, accurate results from better hosts than Gnutella does?
Napster acheives its high rate of user sharing participation by automatically sharing all files
downloaded. Sure you can change the sharing and download directories to alternative locations, but most users won't alter these settings. Furthering the encouragement of the user to keep all of his MP3s in the shared music repository is the fact that Napster includes a built in
MP3 player and music library manager that
cooperates best with the
default download location and sharing
scheme. By making it
easy for users to keep their downloaded
music archives in the shared folder, Napster (perhaps inadvertantly) creates higher user sharing.
While some may argue that the core of Gnutella's problems lay in its un
scalable protocol and
hodgepodge of client software, I assert that the primary reason successful
searching on Gnutella is so difficult is its lack of sharing encouragement. Because all file types are shared on the Gnutella
network, great difficulty arises in encouraging users to leave their downloaded files in their
public folder. Throwing up its hands when confronted with this daunting effort, Gnutella includes
no file viewing or download management features. This results in users simply moving their downloaded files to private folders where they can implement some kind of organization scheme on their own.
We've now established that the core focus of any public peer to peer filesharing system has to be encouraging user sharing
participation if a successful network is to be created, but let me be clear that
forced sharing is rarely successful either. You may note that the least popular servers in the
Hotline community are those which require
upload to download ratios.
FTP servers with similar requirements are also becoming less used as the masses flock to Napster's superior searching capabilities and relaxed download requirements. Forced sharing is simply unacceptable to the vast morass of
dial-up users who cannot justify doubling their already lengthy download times by piping up a sizable
upload.
Broadband users who can upload megs in minutes might write off such a time loss as
negligible, but everyone else sees it as a major
headache they'd rather avoid. The obvious compromise in this situation is the encouraged filesharing system outlined above.
When designing peer to peer filesharing protocols, it's important to remember two things: most people are
greedy and most people are
lazy. By harnessing the laziness of the majority of your users it's possible to overcome their greedy nature and create a successful architecture.