MLdonkey

From MLDonkey
Jump to: navigation, search
(better feature overview)
(some editorial changes)
Line 14: Line 14:
 
** (FastTrack, SoulSeek, Gnutella and G2 need work)
 
** (FastTrack, SoulSeek, Gnutella and G2 need work)
 
* The core can download the same file from several different networks simultaneously.
 
* The core can download the same file from several different networks simultaneously.
* Written in [[ObjectiveCaml]], with some [[C]] and even some [[Assembler]] parts.
+
* Scriptable command-line interface available. It's possible to control all aspects of mldonkey from the CLI.
 +
* Written in [[ObjectiveCaml]], with some parts written in [[C]] and some in [[Assembler|Assembly]].
  
 
===Background===
 
===Background===
Line 22: Line 23:
 
::A lot of designers of functional languages have one dream: finding a killer application, outside of the world of symbolic programming ( compilers, theorem provers, DSLs ), that would make their language spread in the open-source community. One year ago, we tackled this problem, and decided to use Objective-Caml to program a network application in the emerging world of peer-to-peer systems. The result of our work, MLdonkey, has superseded our hopes: it is currently the most popular peer-to-peer file-sharing client on the well-known freshmeat.net site, with about 10,000 daily users. Moreover, MLdonkey is the only client able to connect to several peer-to-peer networks, to download and share files. It works as a daemon, running unattended on the computer, and can be controlled remotely using three different kind of interfaces. In this paper, we present the lessons we learnt from its design and implementation.
 
::A lot of designers of functional languages have one dream: finding a killer application, outside of the world of symbolic programming ( compilers, theorem provers, DSLs ), that would make their language spread in the open-source community. One year ago, we tackled this problem, and decided to use Objective-Caml to program a network application in the emerging world of peer-to-peer systems. The result of our work, MLdonkey, has superseded our hopes: it is currently the most popular peer-to-peer file-sharing client on the well-known freshmeat.net site, with about 10,000 daily users. Moreover, MLdonkey is the only client able to connect to several peer-to-peer networks, to download and share files. It works as a daemon, running unattended on the computer, and can be controlled remotely using three different kind of interfaces. In this paper, we present the lessons we learnt from its design and implementation.
  
MLDonkey was originally intended as a pure [[eDonkey2000]] clone, running on [[Unix]] and [[Linux]], a sector that the original client never served well. Since the release of version 2, there has also been development to access other networks (see OtherNetworksSupported), most notably the [[eDonkey2000]] offspring [[Overnet]].
+
MLDonkey was originally intended as a pure [[eDonkey2000]] clone, running on [[Unix]] and [[Linux]], a sector that the original client never served well. Since the release of version 2, there has also been development to access [[OtherNetworksSupported|other networks]], most notably the [[eDonkey2000]] offspring [[Overnet]], [[BitTorrent]], [[Kademlia]] and [[DirectConnect]].
  
The history of MLDonkey has been lined with controversy, mostly based on the fact that the original client has always been proprietary, in terms of source code as well as transfer protocol. This has forced the MLDonkey developers to reverse engineer the basic mechanisms, but they didn't stop at that. In many cases, new functionality has been introduced, sometimes great and sometimes questionable.
+
The history of MLDonkey has been lined with controversy, mostly based on the fact that the original [[Overnet]] client has always been proprietary, in terms of source code as well as transfer protocol. This has forced the MLDonkey developers to reverse engineer the basic mechanisms, but they didn't stop at that. In many cases, new functionality has been introduced, sometimes great and sometimes questionable.
  
 
The first controversy was regarding servers. MLDonkey introduced a method to connect to several servers simultaneously, thereby increasing search efficiency greatly. This was at a time when servers were relatively small, and already strained (mainly by bots). Too many users, too few servers, new solutions needed.
 
The first controversy was regarding servers. MLDonkey introduced a method to connect to several servers simultaneously, thereby increasing search efficiency greatly. This was at a time when servers were relatively small, and already strained (mainly by bots). Too many users, too few servers, new solutions needed.
Line 32: Line 33:
 
Complaints started to come in from eDonkey users about MLDonkey being too efficient, i.e. utilizing an unfair amount of network resources. This probably has to do with the extreme reluctance of the developers of [[eDonkey2000]] to improve their product, which led to larger and larger servers, instead of following the approach MLDonkey stood for: increasing the connectivity of the network as a whole. But, then again, making the [[eDonkey2000]] network too efficient would probably not be in line with the plans to develop the Overnet, which is indeed a high connectivity serverless network.
 
Complaints started to come in from eDonkey users about MLDonkey being too efficient, i.e. utilizing an unfair amount of network resources. This probably has to do with the extreme reluctance of the developers of [[eDonkey2000]] to improve their product, which led to larger and larger servers, instead of following the approach MLDonkey stood for: increasing the connectivity of the network as a whole. But, then again, making the [[eDonkey2000]] network too efficient would probably not be in line with the plans to develop the Overnet, which is indeed a high connectivity serverless network.
  
MLDonkey also featured a way to exchange file sources between clients, thereby making the servers less important, of course another threat to the pride of the server admins. Soon, a strange alliance was formed by the developer of the popular [[LugdunumServers]] server and MetaMachine, the [[eDonkey2000]] development company. This resulted in a long series of attempts to ban MLDonkey, bans which were easily worked around, and due to the nature of open source projects, also easy to deploy among users.
+
MLDonkey also featured a way to exchange file sources between clients, thereby making the servers less important, of course another threat to the pride of the server admins. Soon, a strange alliance was formed by the developer of the popular [[LugdunumServers|Lugdunum]] server and MetaMachine, the [[eDonkey2000]] development company. This resulted in a long series of attempts to ban MLDonkey, bans which were easily worked around, and due to the nature of open source projects, also easy to deploy among users.
  
It is important to note that, being an OpenSource project, the MLDonkey team have always offered their solutions to the original developers, as well as the rest of the community. This courtesy has never been returned, even though numerous pleas have been forwarded; MetaMachine insists on keeping their code and protocols proprietary.
+
It is important to note that, being an open source project, the MLDonkey team have always offered their solutions to the original developers, as well as the rest of the community. This courtesy has never been returned, even though numerous pleas have been forwarded; MetaMachine insists on keeping their code and protocols proprietary.
  
 
Later on, as MetaMachine turned all their efforts into creating the [[http://www.amule.org]] was developed from xMule source code and most of their developers, which is listed on eMule homepage as the eMule for linux right now. With [[eMule Overnet]], another eDonkey client emerged: [[eMule]]. This was the result of popular demand from users to provide (a) nice graphics and (b) balanced of upload and download. It runs only on [[Windows]]. An eMule port to linux was created [[lMule||http://lmule.sf.net/]], available on Sourceforge, which later was forked to [[xMule||http://www.xmule.org]], and then [[aMule]] came the total surrender of the term \"file sharing\" per se, in favor of ultra liberal demands to convert the network to a file trading model, using a currency of credits, complicated queue systems, and internal preference. The credit system in eMule is no longer mandatory as of release 0.28a. eMule's  biggest deficiency is that it cannot be used with a remote GUI, making it impractical for use on a server machine.
 
Later on, as MetaMachine turned all their efforts into creating the [[http://www.amule.org]] was developed from xMule source code and most of their developers, which is listed on eMule homepage as the eMule for linux right now. With [[eMule Overnet]], another eDonkey client emerged: [[eMule]]. This was the result of popular demand from users to provide (a) nice graphics and (b) balanced of upload and download. It runs only on [[Windows]]. An eMule port to linux was created [[lMule||http://lmule.sf.net/]], available on Sourceforge, which later was forked to [[xMule||http://www.xmule.org]], and then [[aMule]] came the total surrender of the term \"file sharing\" per se, in favor of ultra liberal demands to convert the network to a file trading model, using a currency of credits, complicated queue systems, and internal preference. The credit system in eMule is no longer mandatory as of release 0.28a. eMule's  biggest deficiency is that it cannot be used with a remote GUI, making it impractical for use on a server machine.

Revision as of 23:34, 24 March 2008

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox