# GnucDNA

GnucDNA es una librería para construir aplicaciones P2P. Ofrece a los desarrolladores una capa común para crear su propio cliente o red del tipo Gnutella y/o Gnutella2. Por ser un componente separado, GnucDNA puede ser actualizado independientemente del cliente, implementando mejoras a las aplicaciones que la usan.

## General

GnucDNA es una librería amplia y establecida que puede ser extendida por los programadores. Incluye la capacidad de formar una red descentralizada entre nodos con soporte Ultrapeer, permitiendo a la red evitar cuellos de botella en los nodos de bajo ancho de banda. Sin embargo, el soporte de Ultrapeer —respectivamente Hub en Gnutella2— está desactualizado en comparación con las implementaciones modernas de los clientes como Gtk-gnutella y Shareaza.
La librería da a los programas que la usan la habilidad de intercambiar archivos y da soporte para subir, descargar, generar cola de archivos e intercambio parcial de archivos (la habilidad para subir trozos verificados de un archivo mientras se descarga), calcular el hash de esos archivos, extraer metadatos para ser compartidos a través de la red, y la habilidad para realizar búsquedas avanzadas con los parámetros de hash y meta-data. GnucDNA también ofrece a las aplicaciones la habilidad de actualizar su software fácilmente a través de la misma red P2P que ellos crearon.
Los componentes de GnucDNA están basados en la plataforma COM para heredar la ventaja de independencia del lenguaje y la versatilidad. Aplicaciones en C++, Visual Basic, .NET e incluso scripts pueden utilizar GnucDNA. También por ser un componente separado, puede ser usado en un número de situaciones alternadas como ser parte de un plugin, ser un servicio web o ejecutarse detrás de servidor web.

## Historia

Más de 5 años de desarrollo han transcurrido en programación, mejoramiento, y prueba de GnucDNA como parte del proyecto Gnucleus. Como otros se han dado cuenta el núcleo del proyecto se ha duplicado más de 15 veces, pero mientras las interfaces y servicios que otros han proveído han sido buenas, ellos no pudieron mantener el desarrollo del proyecto. Entonces se tomó la decisión de mover el núcleo de Gnucleus, ahora llamado GnucDNA, a un componente separado, para que cualquiera pueda tener acceso a él sin temor de quedarse atrás en la evolución y mejoras que se hacen. También abre nuevas puertas a aquellos que están interesados en crear sus propias redes P2P, pero que no quieren re-inventar la comunicación de bajo nivel y mecanismos de intercambio de archivos.

## Clientes
### Gnucleus

Gnucleus es el cliente para Microsoft Windows de los proyectos Gnutella y Gnutella2. El código de la librería GnucDNA fue originalmente diseñado para este, antes de separarse en dos proyectos distintos. Igual que como la librería GnucDNA, Gnucleus fue creado bajo la GNU General Public License.

### Kiwi Alpha

Kiwi Alpha es una aplicación P2P para intercambio de archivos que usa la librería GnucDNA para conectarse a las redes Gnutella y Gnutella2. El objetivo de su diseño se enfoca en usar pocos recursos y ser simple de usar para los principiantes.
Kiwi Alpha no contiene funciones de reproductor multimedia, debido a su objetivo de ser ligero. Sin embargo, la aplicación incluye dos piezas de adware, como SaveNow, que parecen contradecir el objetivo de ser ligero. Además, la página web del programa afirma que "Kiwi Alpha does not require users to register and protects the user's privacy by connecting anonymously to the network" (traducción "Kiwi Alpha no requiere que los usuarios se registren y protege la privacidad del usuario conectándolo a la red anónimamente"). Esto es engañoso, ya que ambos protocolos soportados no ocultan la dirección IP, que la declaración parece indicar.