Gnutella

[4] The first client (also called Gnutella) from which the network got its name[5][6] was developed by Justin Frankel and Tom Pepper of Nullsoft in early 2000, soon after the company's acquisition by AOL.

[7][8] The source code was to be released later, under the GNU General Public License (GPL); however, the original developers never got the chance to accomplish this purpose.

[9] The next day, AOL stopped the availability of the program over legal concerns and restrained Nullsoft from doing any further work on the project.

This did not stop Gnutella; after a few days, the protocol had been reverse engineered, and compatible free and open source clones began to appear.

[13][14] The Gnutella network is a fully distributed alternative to such semi-centralized systems as FastTrack (KaZaA) and the original Napster.

The initial popularity of the network was spurred on by Napster's threatened legal demise in early 2001.

In early 2001, variations on the protocol (first implemented in proprietary and closed source clients) allowed an improvement in scalability.

The word Gnutella today refers not to any one project or piece of software, but to the open protocol used by the various clients.

The name is a portmanteau of GNU and Nutella, the brand name of an Italian hazelnut flavored spread: supposedly, Frankel and Pepper ate a lot of Nutella working on the original project, and intended to license their finished program under the GNU General Public License.

On October 26, 2010, the popular Gnutella client LimeWire was ordered shut down by Judge Kimba Wood of the United States District Court for the Southern District of New York when she signed a Consent Decree to which recording industry plaintiffs and LimeWire had agreed.

This event was the likely cause of a notable drop[16] in the size of the network, because, while negotiating the injunction, LimeWire staff had inserted remote-disabling code into the software.

As the injunction came into force, users who had installed affected versions (newer than 5.5.10) were cut off from the P2P network.

The shutdown did not affect, for example, FrostWire, a fork of LimeWire created in 2004 that carries neither the remote-disabling code nor adware.

This lowers the amount of traffic routed through the Gnutella network, making it significantly more scalable.

However, if the node is firewalled, stopping the source node from receiving incoming connections, the client wanting to download a file sends it a so-called push request to the server for the remote client to initiate the connection instead (to push the file).

Each node is a regular computer user; as such, they are constantly connecting and disconnecting, so the network is never completely stable.

[25] To address the problems of bottlenecks, Gnutella developers implemented a tiered system of ultrapeers and leaves.

[26] Additionally, gnutella adopted a number of other techniques to reduce traffic overhead and make searches more efficient.

The Gnutella 0.4 standard is outdated but it remains the latest protocol specification because all extensions, so far, exist as proposals.

[32] The following tables compare general and technical information for a number of applications supporting the Gnutella network.

A sore point with many Gnutella developers is that the Gnutella2 name conveys an upgrade or superiority, which led to a flame war.

Other criticism included the use of the Gnutella network to bootstrap G2 peers and poor documentation of the G2 protocol.

An advantage often cited is that Gnutella2's hybrid search is more efficient than the original Gnutella's query flooding.

A diagram of Gnutella nodes and their connections.
The gnutella search and retrieval protocol