# Gtk-gnutella

gtk-gnutella es un cliente P2P para los sistemas operativos de la familia Unix que usa las bibliotecas gráficas GTK+ para implementar su interfaz. Utiliza la red Gnutella para poder realizar el intercambio de ficheros (audio, video, aplicaciones, etc.).

## Historia

gtk-gnutella fue creado en un principio como un clon gráfico del cliente oficial Gnutella de Nullsoft. Su autor original, Yann Grossel, dejó de trabajar en él a principios del año 2001. Poco después Raphael Manfredi se convirtió en el principal desarrollador del software, desde entonces el cliente Gtk-gnutella ha estado en constante desarrollo.

## Características

gtk-gnutella es programado en C con énfasis en la eficiencia y portabilidad sin ser minimalista, sino más bien estar a la cabeza de las características más modernas de la red Gnutella. Por lo tanto, requiere pocos recursos (como CPU y/o RAM) que la mayoría de los clientes de Gnutella. Puede ser usado remotamente sin usar GTK+ para nada.
gtk-gnutella tiene un filtro que puede reducir la cantidad de spam y otros resultados irrelevantes. gtk-gnutella soporta un gran rango de características de los clientes Gnutella modernos. gtk-gnutella fue el primer cliente Gnutella en soportar IPv6 y encriptar usando TLS. Puede gestionar y exportar enlaces magnet. Tiene fuertes características de internacionalización, soporta inglés, alemán, griego, francés, húngaro, español, japonés, noruego, neerlandés y chino. Además gtk-gnutella tiene soporte para prevenir spam y otras actividades hostiles para los nodos.
Muchas distribuciones de software proveen paquetes precompilados, pero por lo general son obsoletas porque muchas distribuciones congelan versiones estables antiguas. También existen paquetes precompilados para muchas distribuciones de Linux. Las personas que estén preocupadas por la seguridad tal vez quieran compilar la suya. El código de gtk-gnutella usa dist para construir y configurar el sistema en lugar de Autoconf. La mayoría de los usuarios solo están familiarizados con los scripts generados por este último. Otro peligro para los principiantes es configurar los dispositivos NAT para habilitar completamente la conectividad para gtk-gnutella. gtk-gnutella, como cualquier cliente Gnutella, se puede usar detrás de un firewall o un router, pero con su funcionalidad reducida, si no puede recibir conexiones TCP entrantes o paquetes UDP. En un intento de mitigar este asunto para los nuevos, gtk-gnutella implementa los protocolos UPnP y NAT-PMP.
gtk-gnutella soporta funciones para descargar grandes archivos (vídeos, programas, o imágenes de disco). La versión 0.96.4 soporta árboles de hash y las versiones posteriores a la 0.96.5 soportan árboles de hash para subidas y descargas. Árboles de hash y otras características de gtk-gnutella hacen que las transferencias de archivos sean tan eficientes como en BitTorrent. Específicamente, gtk-gnutella soporta intercambio parcial de archivos, cola remota y archivos superiores a 4 GiB. Comprobación por solapa era el único mecanismo para protegerse de información corrupta antes de la versión 0.96.4. Comprobación por solapa no ofrece la misma protección de archivos corruptos que los árboles de hash.
La versión 0.96.6 introdujo soporte preliminar para DHT de Kademlia, el cual fue completado en la versión 0.96.7. El método por DHT está remplazado las búsquedas por SHA-1, a la hora de localizar fuentes alternas de un archivo conocido o buscar push-proxies. En la versión 0.96.7, DHT está habilitado por defecto.
La versión 0.96.9 introdujo soporte completamente nativo para UPnP y NAT-PMP, haciendo que el uso detrás de un router compatible sea mucho más fácil porque ya no es necesario configurar los puertos en el firewall. En esta versión el código fue portado a Microsoft Windows, sin embargo el puerto para Windows es todavía considerado como beta debido a la falta de pruebas amplias hasta ahora.
La versión 0.96.9 también introdujo una protección importante para DHT en contra de los ataques Sybil, usando algoritmos basados en propiedades estadísticas.
La versión 0.97 fue una versión principal, introduciendo soporte para el lado del cliente para HTTP pipelining, preguntas "¿Que hay de nuevo?", filtrado de preguntas de tipo MIME, soporte GUESS (Gnutella UDP Extension for Scalable Searches) y búsqueda parcial de archivos. Aunque muchos proveedores de Gnutella ya soportan GUESS para los servidores, gtk-gnutella introdujo soporte para el cliente también, además de mejorar las especificaciones del protocolo para hacerlo realmente usable.
La versión 0.98.2 emplea un parche menor para corregir asignaciones de memoria malloc y problemas de múltiples hilos, principalmente para sistemas operativos Ubuntu 11.10. La versión de gtk-gnutella de 2011 fue dedicada en memoria de Dennis Ritchie, 1941-2011.

## Historia de versiones

| Versión | Fecha |
| 0.96.4 | 7 de julio de 2007 |
| 0.96.5 | 2 de abril de 2008 |
| 0.96.6 | 29 de marzo de 2009 |
| 0.96.7 | 7 de marzo de 2010 |
| 0.96.8 | 21 de marzo de 2010 |
| 0.96.9 | 14 de marzo de 2011 |
| 0.97 | 18 de julio de 2011 |
| 0.97.1 | 11 de septiembre de 2011 |
| 0.98.2 | 30 de diciembre de 2011 |
| 0.98.3 | 4 de junio de 2012 |
| 0.98.4 | 4 de noviembre de 2012 |
| 1.0.0 | 1 de septiembre de 2013 |
Cada año, los desarrolladores de gtk-gnutella liberan una nueva versión "estable". Las versiones de control tiene una "u" adjunta al número de versión; la "u" es por unstable (inestable en español). Las versiones inestables de subversiones se consideran obsoletas en 3 meses. Las versiones estables se consideran obsoletas en un año.
gtk-gnutella rastrea otras versiones de gtk-gnutella en la red Gnutella. Si es vista alguna versión nueva, el usuario es notificado, pero no es obligatoria la actualización. Si es vista alguna versión antigua de gtk-gnutella, es tratada como sospechosa.

## Popularidad

gtk-gnutella no está clasificado como uno de los clientes más populares de Gnutella en GnutellaNet. Sin embargo, hasta la versión 0.96.9 era solo lanzada para sistemas operativos Unix-like, que son 10% de la población general de computación. Las proposiciones de los desarrolladores de gtk-gnutella han sido incorporadas en muchos clientes de Gnutella. Los proveedores de extensiones de gtk-gnutella son los terceros más prolíficos en GDF, seguido de LimeWire y BearShare. Salon clasificó a gtk-gnutella como una de las cinco aplicaciones más famosas para Gnutella. XoloX y Toadnode, también en la lista, ya no son desarrollados activamente.