gtk-gnutella 0.96.8 on Debian lenny
|Developer(s)||Raphael Manfredi, Richard Eckart|
|Initial release||16 April 2000|
|Stable release||1.1.5 (October 8, 2015[±])|
|Preview release||Git [±]|
|Written in||C (GTK+)|
|Available in||de el es fr hu it ja nb nl uk +|
|Type||Peer-to-peer file sharing|
|License||GNU General Public License|
gtk-gnutella is a peer-to-peer file sharing application which runs on the gnutella network. gtk-gnutella uses the GTK+ toolkit for its graphical user interface. Released under the GNU General Public License, gtk-gnutella is free software.
Initially gtk-gnutella was written to look like the original Nullsoft Gnutella client. The original author Yann Grossel stopped working on the client in early 2001. After a while Raphael Manfredi took over as the main software architect, and the client has been in active development ever since. Versions released after July 2002 do not look like the original Nullsoft client.
gtk-gnutella is programmed in C with an emphasis on efficiency and portability without being minimalistic but rather head-on with most of the modern features of the gnutella network. Therefore, it requires fewer resources (such as CPU and/or RAM) than the major gnutella clients. It can also be used as headless gnutella client not requiring GTK+ at all.
gtk-gnutella has a filtering engine that can reduce the amount of spam and other irrelevant results. gtk-gnutella supports a large range of the features of modern gnutella clients. gtk-gnutella was the first gnutella client to support IPv6 and encryption using TLS. It can handle and export magnet links. It has strong internationalization features, supporting English, German, Greek, French, Hungarian, Spanish, Japanese, Norwegian, Dutch and Chinese. gtk-gnutella also has support to prevent spamming and other hostile peer activity.
Several software distributions provide pre-compiled packages, but they are usually outdated as many distributions version freeze old stable releases. The gnutella network benefits from running the latest version obtainable as peer and hostile IP address lists change rapidly, making building the latest SVN snapshot the best option. There are also pre-compiled packages for many Linux distributions available online. Persons concerned about security might wish to compile their own. The gtk-gnutella sources use dist as build and configuration system instead of Autoconf. Most users are only familiar with the configure scripts generated by the latter. Another hazard for novices is configuring NAT devices to enable full network connectivity for gtk-gnutella. gtk-gnutella, like any gnutella client, is still usable behind a firewall or a router, but with some reduced functionality, if it cannot receive incoming TCP connections or UDP packets. In an attempt to mitigate the issue for newcomers, gtk-gnutalla implements the UPnP and NAT-PMP client protocols.
gtk-gnutella supports features for downloading larger files (videos, programs, and disk images). Version 0.96.4 supports Tiger tree hash serving and versions after 0.96.5 support tiger tree hashes for uploads and downloads. Tiger tree hashing and other gtk-gnutella features make file transfers as efficient as BitTorrent. Specifically, gtk-gnutella supports partial file sharing, remote queueing  and files larger than 4 GiB. Overlap checking was the only mechanism to guard against bad data prior to versions 0.96.4. Overlap checking does not guard against malicious corruption like Tiger tree hashing does.
Version 0.96.6 introduced preliminary support for a Kademlia DHT, which was completed in version 0.96.7. The DHT is replacing search by SHA-1, when locating alternate sources for a known file or looking for push-proxies. In version 0.96.7, the DHT is enabled by default. LimeWire first developed the DHT and named it  Mojito DHT.
Version 0.96.9 introduced full native support for UPnP and NAT-PMP, making the usage behind a compatible router much easier since there is no longer any need to manually forward ports on the firewall. In this version the code was also ported to Microsoft Windows however the Windows port is still considered beta due to lack of wide testing so far.
Version 0.97 was a major release, introducing client-side support for HTTP pipelining, "What's New?" queries, MIME type query filtering, GUESS support (Gnutella UDP Extension for Scalable Searches) and partial file querying. Although many Gnutella vendors already supported server-side GUESS, gtk-gnutella introduced the client-side as well, also enhancing the original specifications of the protocol to make it truly usable.
Version 0.98.2 employs a minor patch to correct malloc memory allocations and multiple threads issues, mainly on Ubuntu 11.10 operating systems. This 2011 gtk-gnutella version was also dedicated to the memory of Dennis Ritchie, 1941-2011.
Version 1.1 is a major release which added G2 support: gtk-gnutella will now connect to the G2 network in leaf mode. This allows searches from G2 nodes and lets local queries be propagated to the G2 network as well. File exchanges with G2 hosts are fully inter-operable and are permitted without restriction.
|1.1||2 July 2014|
|1.0.1||31 December 2013|
|1.0||1 September 2013|
|0.98.4||4 November 2012|
|0.98.3||4 June 2012|
|0.98.2||30 December 2011|
|0.97.1||11 September 2011|
|0.97||18 July 2011|
|0.96.9||14 March 2011|
|0.96.8||21 March 2010|
|0.96.7||7 March 2010|
|0.96.6||29 March 2009|
|0.96.5||2 April 2008|
|0.96.4||7 July 2007|
Every year, the gtk-gnutella developers release a new "stable" version. Revision control versions have a "u" appended to the version; the "u" standing for unstable. Unstable versions from git are outdated in 3 months. Stable releases become outdated after one year.
gtk-gnutella tracks other gtk-gnutella versions seen on the gnutella network. If newer versions are seen, the user is notified, but an update is not mandated. If ancient versions of gtk-gnutella are seen, they are treated suspiciously.
gtk-gnutella does not rank as one of the most popular clients on GnutellaNet crawls. gtk-gnutella developers' proposals have been incorporated into many gnutella clients.
- "gtk-gnutella 0.90 screenshot". 2002.
- Klingberg, Tor (2002). "Partial File Sharing Protocol". Tor Klingberg.
- Manfredi, Raphael (2003). "Passive/Active Remote Queueing". Raphael Manfredi.
- "The 'LF' GGEP Extension". 2004.
- "gtk-gnutella ChangeLog".
- "Limewire Forum (defunct), Mojito DHT".
- "Efficient DHT Attack Mitigation Through Peer's ID Distribution" (PDF).
- "GitHub gtk-gnutella ChangeLog".
- Gnutella vendor extensions
- Gnutella working proposals
- Salon lists gtk-gnutella as one of the top five gnutella clients. (2002)
- Wang, Wallace (2004). Steal this file sharing book. San Francisco: No Starch Press. ISBN 1-59327-050-X.
- Ganslandt, Björn (2000). "Distributed file sharing" (PDF). Linux Magazine. Retrieved 1 October 2000. Check date values in:
- Athanasopoulos, Elias (2006). "Misusing Unstructured P2P Systems to Perform DoS Attacks: The Network That Never Forgets" (PDF). Institute of Computer Science.
- Aggarwal, Vinay (2006). "Analysis of overlay-underlay topology correclation using visualization" (PDF). Deutsche Telekom Laboratories.
- Davison, Brian (2004). "Lessons from a Gnutella-Web Gateway". ACM Press.