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 unscalable 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.