GNUnet

GNUnet is a free software framework for decentralized, peer-to-peer networking and an official GNU package. The framework offers link encryption, peer discovery, resource allocation, communication over many transports (such as tcp, udp, http, https and wlan) and various basic peer-to-peer algorithms for routing, multicast and network size estimation.

GNUnet's basic network topology is that of a mesh network. GNUnet includes a distributed hash table which is a randomized variant of Kademlia that can still efficiently route in small world networks. GNUnet offers a "F2F topology" option for restricting connections to only the users' trusted friends. The users' friends' own friends (and so on) can then indirectly exchange files with the users' computer, never using its IP address directly.

GNUnet uses Uniform Resource Identifiers (not approved by IANA). GNUnet URIs consist of two major parts: the module and the module specific identifier. A GNUnet URI is of form gnunet://module/identifier where module is the module name and identifier is a module specific string.

The primary codebase is written in C, but with gnunet-java there is an effort to produce an API for developing extensions in Java. GNUnet currently runs on GNU/Linux, BSD, Mac OS X, Solaris and Windows.

GNUnet includes various P2P applications in the main distribution of the framework; additionally, a few external projects (such as SecuShare) are also extending the GNUnet infrastructure.

Read more about GNUnet:  File Sharing, GNU Alternative Domain System, Protocol Translation, Chat