Most of you will say that the succesor to eMule is BitTorrent as it is the most widely used P2P network today, but there are some things that BitTorrent lacks and eMule provides. The most notorious for me are the following:
- Built-in network-wide search
- Easy sharing
- Unique links
Maybe you don’t consider this features important, but the fact is that with the approach BitTorrent takes, we are highly dependent on central points that make the network vulnerable. With BitTorrent we depend on trackers and link listing websites to share content. A torrent client is useless on its own if we don’t have a link listing site to get torrents or magnet-links from. On the other side, with the built-in search eMule provides, one can start downloading without the need for a website to take links from.
Easy sharing is also very important, because it provides more peers to download files from. This is specially important on rare files, because with torrents the seeds to download a file can become scattered between different torrents and there can be 5 different torrents seeding the same data, yet they don’t share peers. It is clear that one torrent with multiple seeds is preferred that multiple torrents with one seed each, for example.
When there is one single way to identify a file on the network (like with ed2k hashlinks) even the less tech-savvy users are able to contribute. Sharing on eMule is as simple as dropping the file you want to share on your incoming folder (even if it is not the optimal way to do it). In BitTorrent, you must download an existing torrent file or magnet link, stop the download, replace the half downloaded files with the ones you already had downloaded, making sure that you use the same directory structure and filenames that are defined in the torrent, recheck the torrent and start it, all this in order to share files you had downloaded previously. Tell a noob user to do that to help you download some rare file…
And now imagine that you have an entire drive full of sharing material, but the directory structure and filenames differ from the ones used on the torrents (because you like to keep things ordered in your hard drive). This scenario makes it impossible to share those files on the torrent network without creating brand new torrents, so you can’t contribute and be one more seed on already existing torrents.
Why not use eMule then? Because it’s slow, inneficient, and there is practically only one client that is no longer actively developed. Searching for alternatives, the most similar program that has various clients and is multiplatform is Direct Connect, but it is not decentralized, and different servers don’t communicate with each other, so peers for the same file are not shared globally and instead are scattered around different hubs
Is there really no other program that works the way eMule does? Is there no true spiritual succesor to eMule nowadays?
The absolutely massive advantage of BitTorrent over older networks is that current downloaders (leechers) can share the parts they have already downloaded. So instead of just a few seeders getting hammered with traffic and hitting a bottleneck as on Limewire, etc., you can get just the parts you need from the critical seeders.
Trackers also make this easier by avoiding the slow search through nodes and broadcast issues that P2P gossip-style networks have.
That said you could totally imagine a client that lets you share .torrent files like Limewire, etc. with direct search, and even merging it with the concept of trackers - like how RAFT can maintain a list of active nodes - i.e. you could just track the peers per torrent, and then let the actual traffic take place via direct connections like BitTorrent does.
I highly recommend reading the libp2p docs - https://libp2p.io/
The various Wikipedia articles on Gnutella, BitTorrent etc. - https://en.wikipedia.org/wiki/Gnutella
And Tailscale’s article on NAT traversal - https://tailscale.com/blog/how-nat-traversal-works/
To appreciate some of the challenges and development over time.
I really wish someone would write a book like How Music Got Free, but about the technical history and challenges of piracy / file-sharing. From Modem BBSs to Usenet to Napster, Gnutella, BitTorrent, and Freenet, I2P, IPFS, etc.
undefined> The absolutely massive advantage of BitTorrent over older networks is that current downloaders (leechers) can share the parts they have already downloaded
This is not true at all. Bit torrent as protocol didn’t brought any new concept to p2p. Bit torrent didn’t invent download swarms or sharing while download (even the gnutella clients do that). Bit torrent won, because emule was ahead of it’s time and was too greedy. The bittorrent block is 512KiB while the emule is 9MiB. Emule appeared in a time where ADSL was started to be rolled out, and before bittorrent, so the internet speeds and connectivity were not the best. Since the block is 9MiB, the users needed to download first 9MiB in shitty speeds before starting to share. Also people wouldn’t realize that the network implements a credit system, so you need to upload (ideally to the person from who you are downloading from - the upload credits aren’t global) otherwise you are going to the bottom of the download queue. This would cause a bottleneck in the speeds. Btw, emule continues to be used massively (not as bittorrent but more than 200k users)
Do you have a source for this (like genuinely, I’d like to read about it) as I was 99% sure that Gnutella didn’t do out-of-order swarm piece downloading like BitTorrent.
I’m not that familiar with eMule and its networks though - but it’d be interesting to learn about. These slides were cool - https://pages.cs.wisc.edu/~akella/CS640/F07/slides/F07_Lecture19_p2p.pdf but also don’t cover eMule lol
here you have gtk-gnutella screenshots:
gtk-gnutella download progress bar: https://imgur.com/FIzJa1b.png gtk-gnutella upload options: https://imgur.com/yLg0LOl.png
Btw, gnutella died (it will never die because of the way it works, but it’s a shell of what it was) because of the fake files (the DHT and magnet links appeared to late - with this the downloads can be curated), and because of the clients implementations. This last one was the gnutella downfall - There’s the open protocol and then each client started to implement their own features making and giving priority in the connections between them, making almost subnetworks - kinda the same that happened with XMPP.
BTW 2, those slides are not up to date. The gnutella search as it is described in those slides are for gnutella 0.4. The protocol is now in version 0.6 (and probably won’t be updated anymore) and it has now supernodes - kinda lika kazaa. Gnutella (mojito), emule (KAD) and bittorrent have DHT.
I am actually surprised IPFS isn’t leveraged more for this.