File sharing typically follows the P2P model, where the files are stored on and served by personal computers of the users. Generally, people who engage in file sharing on the Internet both give (upload) files and receive files (download).
There are plenty of excellent free and open source P2P file sharing software available today. Here are some of them:
*GNUnet is a framework for secure peer-to-peer networking that does not use any centralized or otherwise trusted services. A first service implemented on top of the networking layer allows anonymous censorship-resistant file-sharing. GNUnet uses a simple, excess-based economic model to allocate resources. Peers in GNUnet monitor each others behavior with respect to resource usage; peers that contribute to the network are rewarded with better service.
*Torrentflux is a multi-user GUI for BitTornado. Unlike most BitTorrent clients, its main user interface is a web interface. It is scripted in PHP, with a and runs on a web server. It can also be run from a hosting service, allowing very high download speeds for the enduser. The file host company runs Torrentflux on their server to download a torrent, while the enduser connects to the company via FTP to download the file. The advantage of this method is that hosting companies have much higher bandwidth compared with residential homes. This is also an advantage for people with traffic-shaped internetaccess which agressively decreases speed on P2P traffic protocols like bittorrent.
*gtk-gnutella is a server/client for Gnutella. It runs on every Unix-like system which supports GTK+ (1.2 or above) and libxml. The GNOME desktop environment is not required. It is currently developed and tested under Linux (Debian) as well as NetBSD. It is known to run at least on Linux, FreeBSD, NetBSD, OpenBSD, Darwin, Solaris, Tru64 UNIX (OSF/1), SGI IRIX, BeOS whereas CPU architectures include x86, AMD64, PowerPC, SPARC, MIPS. gtk-gnutella is not finished yet, but it is fully functional: you may share, search, and download. And it is stable too, users usually just leave it run unattended for days.
*KTorrent is a BitTorrent client written in C++ for KDE using the Qt user interface toolkit. It is maintained in the KDE Extragear.
– Upload and download speed capping / throttling & scheduling
– Internet searching with torrent search engines using KHTML part.
– Support for UDP trackers.
– IP address blacklist plugin
– Port forwarding with UPnP (Universal Plug and Play)
– Protocol encryption
– DHT (mainline version), and support for trackerless torrents
– µTorrent peer exchange (PEX) support (as of 2.1 RC1).
– File Prioritization
-Ability to import partially-downloaded files
– Directory scanner to automatically watch directories for new torrents
– Manual addition of trackers to torrents
– RSS feed support
*aMule is a peer-to-peer file sharing application that works with the eDonkey2000 network and the Kad Network, but offers more features than the standard eDonkey client, including support for Kademlia. It is a fork of the xMule source code, which itself is a fork of the lMule project, which was the first attempt to bring the eMule client to Linux.
*BitTornado is a BitTorrent client. It is developed by John Hoffman, who also created its predecessor, Shad0w’s Experimental Client. Based on the original BitTorrent client, the interface is largely the same, with added features such as
– upload/download speed limitation;
– prioritised downloading when downloading batches (several files);
– detailed information about connections to other peers;
– UPnP Port Forwarding (Universal Plug and Play);
– IPv6 support (if your OS supports it/has it installed);
– PE/MSE support as of version 0.3.18.
Super seeding mode and web seeding were originally developed by the BitTornado group. It is programmed using Python, for platform independence.
*iFolder is an open source application, developed by Novell, Inc., intended to allow cross-platform file sharing across computer networks. iFolder operates on the concept of shared folders, where a folder is marked as shared and the contents of the folder are then synchronized to other computers over a network, either directly between computers in a peer-to-peer fashion or through a server. This is intended to allow a single user to synchronize his files between different computers (for example between a and a home computer) or share files with other users (for example a group of people who are collaborating on a project).
*Limewire is a peer-to-peer file sharing (P2P) client for the Java Platform, which uses the Gnutella network to locate files as well as share files. Released under the GNU General Public License, LimeWire is free software. It also encourages the user to pay a fee, which will then give the user access to LimeWire PRO. Written in the Java programming language, LimeWire is able to run on any computer with Java Virtual Machine installed. Installers are provided for Microsoft Windows, Mac OS X, and Linux. For Linux users, check out how to install LimeWire on Linux post.
*MLDonkey is an open source, free software multi-network peer-to-peer application. It is also the name of the peer-to-peer overlay network that the MLDonkey uses. Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, Mac OS X, Windows and MorphOS and supports numerous peer-to-peer protocols. It is written in Objective Caml, with some C and even some Assembly parts.
*Azureus is a Java-based BitTorrent client, with support for I2P and Tor anonymous communication protocols. In 2003, the core developers of Azureus formed a company called Vuze, Inc. (formerly Azureus, Inc.) The program’s logo is the Blue Poison Dart Frog (Dendrobates azureus). The Azureus name was given to the project by co-creator Tyler Pitchford, who uses the Latin names of poison dart frogs as codenames for his development projects. Azureus was first released in June 2003 at SourceForge.net, mostly to experiment with the Standard Widget Toolkit from Eclipse. It is now one of the most popular BitTorrent clients. Released under the GNU General Public License, Azureus is free software.
*rTorrent is a text-based ncurses BitTorrent client written in C++, based on the libTorrent libraries for UNIX (which is not the libtorrent library developed by Arvid Norberg), with a focus on high performance and good code. The library differentiates itself from other implementations by transferring data directly between file pages mapped to memory by the mmap() function and the network stack. On high-bandwidth connections, it is claimed to be able to seed at many times the speed of the official client. rTorrent packages are available for various Linux distributions and Unices, and it will compile and run on nearly every POSIX-compliant operating system, such as FreeBSD. rTorrent uses ncurses and is suitable for use with screen or dtach. It supports saving of sessions and allows the user to add and remove torrents. It also supports partial downloading of multi-file torrents. In the release of rTorrent-0.7.0 support for BitTorrent protocol encryption is also implemented. PEX and DHT was recently implemented in rTorrent.