The eDonkey Network (also known as the eDonkey2000 network or eD2k) is a decentralized, mostly server-based, peer-to-peer file sharing network created in 2000 by US developers Jed McCaleb and Sam Yagan that is best suited to share big files among users, and to provide long term availability of files. Like most sharing networks, it is decentralized, as there is not any central hub for the network; also, files are not stored on a central server but are exchanged directly between users based on the peer-to-peer principle.
The server part of the network is proprietary freeware. There are two families of server software for the eD2k network: the original one from MetaMachine, written in C++, closed-source and proprietary, and no longer maintained; and eserver, written from scratch by a person Lugdunum in pure C, also closed-source and proprietary, although available free of charge and for several operating systems and computer architectures. The eserver family is currently in active development and support, and almost all eD2k servers as of 2008 run this server software.
There are many programs that act as the client part of the network. Most notably, eDonkey2000, the original client by MetaMachine, closed-source but freeware, and no longer maintained but very popular in its day; and eMule, a free program for Windows written in Visual C++ and licensed under the GNU GPL. eMule is in constant development and currently represents about 90% of all clients in the eD2k network.
The original eD2k protocol has been extended by subsequent releases of both eserver and eMule programs, generally working together to decide what new features the eD2k protocol should support. However, the eD2k protocol is not formally documented (especially in its current extended state), and it can be said that in practice the eD2k protocol is what eMule and eserver do together when running, and also how eMule clients communicate among themselves. As eMule is open source, its code is freely available for peer-review of the workings of the protocol. Examples of eD2k protocol extensions are "peer exchange among clients", "protocol obfuscation" and support for files larger than 4 Gigabytes, etc. The other eD2k client programs, given time, generally follow suit adopting these protocol extensions.