# EMule

eMule est un logiciel gratuit de partage de fichiers en pair à pair, il fonctionne sur Microsoft Windows et sur macOS depuis 2006. Fondé en mai 2002 dans le but de contourner eDonkey2000, eMule se connecte désormais aux réseaux eDonkey et Kad. Les avantages qui distinguent eMule incluent l'échange direct des sources entre clients, le diagnostic rapide des fichiers corrompus et l'utilisation d'un système de crédit pour les utilisateurs les plus fidèles.
eMule est programmé en C++ et utilise Microsoft Foundation Classes. Depuis juillet 2002, eMule est un logiciel libre, diffusé sous licence publique générale GNU. En date d'avril 2013, le logiciel est le second logiciel le plus téléchargé sur SourceForge.net, avec 660 millions de téléchargements juste derrière VLC avec un peu plus de 840 millions.
Bien que la dernière version stable date d'avril 2010, le développement continue. Depuis le 22 mars 2015, la 0.50b est en beta test public.

## Histoire
### Genèse du projet

Le projet eMule a commencé le 13 mai 2002 avec à son origine Hendrik Breitkreuz (alias Merkur), mécontent du client original eDonkey2000 et qui s'est par la suite retiré du projet eMule. Six développeurs supplémentaires ont rejoint le projet jusqu'alors. Le code source a été diffusé pour la première fois lors de la version 0.02 et il a été publié le 6 juillet 2002 sur SourceForge.net. Le fichier exécutable a été diffusé pour la première fois le 4 août 2002 lors de la version 0.05a. Le site web du projet eMule a été ouvert le 8 décembre 2003.
En 2005, le projet est maintenu par 16 personnes : 2 développeurs, 2 gestionnaires de projet (incluant le fondateur Hendrik Breitkreuz), 3 testeurs, 9 testeurs-débogueurs. Le site officiel est maintenu par 7 développeurs Web et 4 modérateurs.

### Fonctionnalités

La v0.19a (14 septembre 2004) a été la première à posséder le système de crédit.
La v0.42 (et suivantes) permet en plus du réseau eDonkey de se connecter à son propre réseau appelé Kademlia (ce réseau possède l'avantage de pouvoir se passer de serveurs de connexion). La v0.47c a introduit une option de brouillage de protocole, afin de contourner les mesures de "bridage de protocole" (traffic shaping) pratiquées par certains FAI (en France : Free et Club Internet entre autres). Même s'il est toujours possible, pour les fournisseurs d'accès de retrouver les traces$^,$.

### Poursuites judiciaires

Le 21 février 2006, à 10h, la police fédérale belge a saisi le plus gros serveur mis en place pour les fonctions eMule, Razorback2. Cette opération constituait principalement un coup médiatique car l'importance des serveurs dans le fonctionnement d'eMule a été considérablement diminuée avec l'arrivée du protocole Kademlia.
À la mi-septembre 2007, de nombreux serveurs (allemands) ont fermé. Cependant, depuis novembre 2007, 3 nouveaux serveurs Razorback (Razorback 3.0, Razorback 3.1 et Razorback 3.2), de capacités équivalentes voire supérieures à celles de Razorback 2 et autres Donkey Server, ont su rapidement combler ces fermetures. Notons que si ces serveurs portent toujours le nom Razorback, rien n’indique un lien quelconque avec les anciens serveurs.

### Déclin du nombre d'utilisateurs

En France, à partir de 2009 le nombre d'utilisateurs d'eMule a commencé à décliner par crainte des risques légaux accrus avec l'apparition de la HADOPI : « Emule a perdu près d'un million d'utilisateurs en quatre mois, de 5 millions à 4 millions de visiteurs uniques ». Du fait du risque encouru, eMule est alors déconseillé par les experts informatiques. Une minorité des utilisateurs délaissent eMule et se tournent vers des logiciels de P2P anonyme tels que iMule, tandis que la majorité des utilisateurs se tourne vers des sites d'hébergement de fichiers tels que, par exemple, Megaupload.
En 2013, le site web Numerama.com (anciennement Ratiatum.com, qui fut axé sur le P2P entre autres) publie un article intitulé « BitTorrent a gagné contre eMule. Le P2P a perdu. » dans lequel il déplore que BitTorrent a mis de côté les notions de partage des fichiers entre utilisateurs, à la manière d'une bibliothèque d'Alexandrie qui serait décentralisée, au profit de l'intérêt immédiat de télécharger rapidement des nouveautés, quitte à ce que ces fichiers deviennent inaccessibles quelques mois plus tard (en raison du concept technique de BitTorrent). Quant à son concurrent, il est actuellement aussi sur son déclin à cause de fermetures successives des trackers (plus de 50 ont été fermés depuis 2013).

## Concepts de base

Le logiciel expose une grande base d'utilisateurs ; une moyenne de 20 millions en 2007, ce qui le rend excellent pour trouver des fichiers rares. Il gère le gestionnaire de correction d'erreurs AICH (aussi efficace que BitTorrent). Il gère également l'échange de sources entre clients via le réseau Kademlia (lui permettant de réduire sensiblement les charges sur les serveurs) ; un HighID permet d'ailleurs de garder les sources longtemps après la déconnexion des serveurs ED2K et/ou de KAD. eMule reprend plus complètement le protocole d'eDonkey 2000 et ses améliorations. eMule ne fonctionne pas comme un simple serveur (ou ordinateur) qui envoie juste les données ; il donne une fois, et l'ordinateur qui a reçu donne à un autre, puis à un autre, etc. permettant ainsi de répartir sur de nombreux ordinateurs une charge qui pourrait mettre à mal un ordinateur centralisé.

### Low ID

Le mode « LowID » (basse identification) est attribué par les serveurs et désigne les ordinateurs clients qui ne peuvent pas être atteints de l'extérieur parce qu'ils sont derrière un pare-feu (ou dispositif national) qui n'a pas été correctement paramétré (ports non ouverts), ou encore dont l'adresse IP se termine par un zéro (par exemple, 123.45.67.0)$^,$. Ils peuvent encore télécharger et émettre mais ont besoin de l'aide (automatique) de serveurs ou de clients du réseau Kademlia pour pouvoir être atteints par d'autres clients. Cela ralentit considérablement leur progression dans les files d'attente. Un client en LowID ne peut télécharger/envoyer que depuis/vers un client en HighID.
Du côté des serveurs, un client de LowID consomme également beaucoup plus de bande passante qu'un client de HighID, du fait des lowidcallbacks. En outre, un releaser ou un téléverseur lourd qui emploie un mod de releaser tel que MorphXT ou Xtreme qui est contraint de fonctionner en LowID (ex : au travail, à l'hôtel) constatera qu'il aura peu de contrôle de ses priorités de téléchargement (particulièrement powershares) parce que les serveurs limitent leur raccordement-expédition pour chaque client.

### Système de crédit

Habituellement, les clients ne téléchargent pas depuis une source lorsque le contact est établi ; ils doivent patienter dans une file d'attente menant à la source jusqu'à ce qu'une place devienne disponible. Ce système de crédit favorise la diffusion des sources en donnant priorité dans la file d'attente à ceux qui téléversent le plus. Les clients peuvent être identifiés de façon sécurisée, puisqu'à partir de la version .29b il est possible d'activer l'option "utiliser l'identification sécurisée", une fonction de cryptographie asymétrique qui permet de chiffrer les identifiants clients aussi appelés hachage utilisateur. Grâce au système de crédit, un client peut grimper jusqu'à dix fois plus vite qu'un autre dans une file d'attente. Chaque logiciel client mémorise sur disque dur combien de données il a reçues et envoyées de ou vers chaque client auquel il a été relié. Afin d'éviter la tricherie, les crédits de chaque client sont stockés sur les ordinateurs clients avec lesquels il a échangé, et non sur le disque dur de son propre ordinateur. Cependant chaque utilisateur a la possibilité de consulter : le taux global d'émission/réception dans la partie "statistiques" et le taux envoi/réception de données associées à un client spécifique dans la boîte de dialogue "détails" associée au client.
Le calcul exact pour le système de crédit officiel est composé des deux ratios suivants :
    $Ratio1=2\times {\frac {\text{Envoyé}}{\text{Reçu}}}$
    $Ratio2={\sqrt {{\text{Envoyé}}+2}}$
Les deux ratios sont comparés et le plus petit est utilisé comme modificateur. Plusieurs conditions existent :
* Si l'envoi total est plus petit que 1 MB, alors le modificateur sera à 1.
* Si le client envoie des données mais ne reçoit rien, le modificateur sera fixé à 10.
* Le modificateur ne peut qu'être entre 1 et 10.

## Logiciels dérivés ou alternatifs

La licence GNU GPL permet à des programmeurs de distribuer des versions modifiées d'eMule à condition de fournir le code source. Ainsi beaucoup de ces versions modifiées, surnommées les « mods », sortent avec des améliorations graphiques, des optimisations, davantage d'options paramétrables...

### Mods

Les mods sont des logiciels créés à partir du code source d'eMule le plus récent afin d'ajouter des améliorations ou modifications. Cependant, quelques abus ternissent la pratique : jusqu'en 2004 environ, certains mods exploitaient un bogue d'eMule, permettant de tricher avec le système de crédits afin de télécharger avec une priorité supérieure à celle des autres utilisateur. Ces logiciels sont susceptibles à grande échelle de déstabiliser le réseau entier ; ils sont qualifiés par l'anglicisme de mods leechers (de l'anglais leech : sangsue). Certains sites web malveillants se contentent de republier le logiciel officiel, parfois avec une contrepartie financière, en y intégrant en plus des logiciels espions ou des publiciels.
Les mods les plus répandus sont Emule ScarAngel, Emule MorphXT et Emule Xtreme.

### Forks

Les forks sont créés à partir du code d'eMule mais ne suivent pas les modifications de la version originale : ils suivent leur propre développement.
Par exemple le logiciel iMule est un fork du logiciel aMule, qui lui-même est un portage de eMule pour les autres systèmes d'exploitation.

### Portages

Les portages (ports en anglais) sont des logiciels compatibles développés pour d'autres systèmes d'exploitation. Ces logiciels incluent aMule, lMule, xMule, et JMule (en) (écrit en Java).