Why uTorrent on Linux sucks
µTorrent is probably by far the most popular bittorrent client around, it's what most people on windows systems use at home, so it's what alot of people want to use when they order a seedbox, simply because they're used to it and know how to work it. This is understandable of course, who wants to go to the trouble of getting to know a different program when you can use one you already know? Now, every now and then someone comes into our irc channel and is suprised when everyone flinches when they mention they're running µTorrent through wine on their slice. This article will hopefully provide a link we can send to these people to make it a bit more clear. So, while running µTorrent in this way generally works, one of the main drawbacks of doing this is that since it's a closed source windows program, you need to run it through wine to get it to work on linux and along with that comes a wold of pain:
- Resources: Our stats, collected over roughly 400 users on around 50 servers show that µTorrent uses more cpu aswell as more memory then any other client we offer (as of now the alternatives are rtorrent, deluge and transmission) . It's worse in both categories than the next best one, deluge, by a whopping factor of ten.
- No proper logging: Another real problem with it is, since it's closed source and lacks even basic logging abilities on the command line, it's a real debugging nightmare, as I have personally experienced, but more on that in a different article :)
- Autoupdate can break it: Since we've got the binaries in a single system-wide accesible directory, as you usually have on linux, autoupdating (trying to replace the global file) goes horribly wrong, spawning a new process called utmpsomething.exe which consumes 100% cpu, doesn't do anything and blocks µTorrent from beeing rebooted until it's killed. With a default of asking the user on any boot if they want to autoupdate, this has cost countless hours of support.
- Port problems: In wine, there's an issue when you close an application that was listening on a port (as for example the µTorrent webui does). Wine blocks the port from beeing used again for a few minutes. This results in a reboot of µTorrent unpredictably sometimes leading to an unreachable webui, even worse, sometimes this even randomly happens while µTorrent is running! And the solution is insanly annoying: Open µTorrent, change the webui port up by one, change it back, and you're done. Since µTorrent is closed source, there's no way to look behind the scenes and to get it to work. Also, there's no way to write a script or something that can fix it properly, since it's gui-only.
- Ugly Config File: µTorrent uses a config file "settings.dat" which is serialised by bencodeing it. While bencoding is in theory somewhat human-readable, when attempting to edit the file with anything but specificly crafted editors, if you make a small mistake, hell breaks lose and µTorrent discards the whole config file. A space at the end of the file is enough to break it. Compare this to deluge, rtorrent, ...
- No wine "support": Since running µTorrent on wine is in no way "oficially" supported, it can happen that an upgrade breaks µTorrent, as this is at the time of writing the case for the newest µTorrent version, 2.0.
- No way to gracefully exit: Usually when you kill a process, there's more then one way of doing it: On linux you've got SIGTERM which you can send to process to allow it to exit gracefully, saving it's data and doing shutdown related things. If that doesn't work and program stops reacting you can switch to SIGKILL and force it to exit, potentially losing important state information. µTorrent doesn't care what signal you send to it, it just dies without saving settings, freeing ports or doing anything you'd expect it to do.
Note: I don't want to say µTorrent itself is a bad or inefficient torrent client, also wine is a really epic project and getting windows apps like µTorrent to work on linux is an amazing feat, what I want to say is, that running µTorrent through wine is a really bad idea when you draw the comparison to other clients. It works, yes, but using it is really not a great idea.
Most of the above issues can be summerized pretty well as: It's simply not a unixy program. No real commandline options (there are a few, but nothing really useful is in there), no proper config files you can simply edit in a texteditor without breaking anything, the port problems with wine, builtin autoupdate (not needed, since you've got a package manager on *nix!), etc. It just feels completly out of place when running on a seedbox, especially when you come from a mainly unixy background.