The BitTorrent Engineering Team: Building Faster Releases

3.4 is an exciting release for the uTorrent team. 3.4 is the first version to include a major change in the way that uTorrent works. Want all the technical details? Read on or check out the original post on our Engineering Blog.

3.4 is the first version to include a major change in the way that uTorrent chooses peers in a swarm. When a bittorrent client joins a swarm, it needs a way to select which peers it connects to. If it chooses poorly, or if there are malicious actors in the swarm, the connections between clients are not well distributed through the swarm, leading to a large number of hops from node to node. That slows down the ability to each client to pass data on to the next.

You can read a more detailed technical discussion of the issues here, along with graphs and figures that drive home how bad the worst case can be. You can read more about graph connectivity here.

BitTorrent With Bundle

Perhaps one of the biggest changes, though, is one you cannot see. Our engineering team has been growing rapidly, and we have been busy changing our development and release processes. uTorrent 3.4 will mark the first release using improved processes that should allow us to release much more often, while keeping stability at the levels you have come to expect from the world’s fastest and lightest torrent client.

Our previous release cycle was slow. We followed the traditional alpha -> beta -> stable model that a lot of software development follows, ,for example large video games or operating systems. One of the problems with this style of development is as stabilization work continues on the features you just developed, new features are requested, or requirements change, and now you have to balance two lines of development in the same tree.

Also, with more developers, more changes can be made simultaneously … in theory. In reality, changes in unrelated modules (e.g. the installer) would impact when we could ship new code in other areas (e.g. the disk code), and of course, vice versa. This creates a vicious cycle, where each small problem creates a knock-on effect that impacts other features.

In a situation like this, instead of asking the business to “pick one thing and stick with it” the correct response is for the engineering team to change how they operate.

* On a small scale, picking one thing and sticking with it.
* On a larger scale Multiplexing the work into separate branches.

We needed a way to release changes fast and reliably. This implied quite a few things:
* Don’t mix changes
* Release fast, review results fast

This required us to build a few systems. Some of the larger ones:
* Our release system (code-named “Cherry”)
* Or automatic update system (code-named “The automatic update system”)

It also required programming policies into the smaller parts of the system that already existed
* The build server
* The version control system
* New test servers

These systems, working together, can now answer the question: Is this feature ready for release?
Will deploying this feature likely increase or decrease the crash rate?

We now build individual features in separate branches, which are automatically tested for stability before being integrated into the mainline. That gives us confidence that we won’t slow other engineers down, and that we won’t release a low-quality build to customers.

This effort would not have been possible without the support of the excellent engineering team at Bittorrent.

I look forward to covering these in detail in later posts.

From the uTorrent engineering team, and the rest of Bittorrent as a whole, Happy torrenting!

Written by: Adam Kelly

Adam is the lead software engineer on the µTorrent Windows client team. He also has the most experience battling sharks of any engineer in the office.

 Related Posts:

13 Responses to “The BitTorrent Engineering Team: Building Faster Releases”

  1. James D Rob

    Question my utorrent quite working keeps telling me no incoming connections how do I fix it

    • JimmyZ

      i have found this an i am so piss…
      Reason for block





      Port 0 is a reserved port, which means it should not be used by
      applications. Network abuse has prompted the need to block this port. i would like help how to fix this.. thanks

  2. slovokia

    “while keeping stability at the levels you have come to expect from the world’s fastest and lightest torrent client”. Uh I don’t think you really want to brag about uTorrent’s stability. It is one of the buggier pieces of software I use as of late. Vuze is far more stable in comparison. In fact I only use uTorrent for the few private trackers that do not allow Vuze. I’d be willing to pay $10 per year for a rock solid reliable uTorrent where the priority of the development team was fixing all the numerous bugs this product contains. Unfortunately you guys are not headed in that direction – I have stopped even updating my client for fear of encountering new bugs in addition to all the old ones. Many other users of your product are using older releases that they regard as being more stable and dependable – you can verify this on your own by downloading torrents and looking at the clients your peers are using.

  3. Mark Foley

    I agree, I think operation of existing basic features would be good. Today I tried to setup what I thought would be a simple feature – making items of a given tag go to a folder for their category once downloaded. All the forum posts seem to agree the feature just doesn’t work.

    It’s always interesting to see that these ingenious engineers who are probably using 10 kinds of bayesian inference to optimise swarm compositions are often tripped up on simple procedural programming things like getting folder management to work. I guess it’s not as interesting as the sexy stuff – but it’s important! Please fix that feature.


    is there a utorrent (64 bit)? how to change from utorrent 32 bit to utorrent 64 bit without loosing the ongoing downloads etc ?

  5. bulljunkie

    im having a huge issue i got a new comcast dual band gateway modem and i cant connect to peers after i set it up. i go to setup guide and run a test and this is what i get

  6. bulljunkie

    please help me i cant get past connecting to peers after i got my neww gateway modem

  7. JimmyZ

    anybody know a bypass for this.. my port is close.. comcrap.. provider..

    Reason for block





    Port 0 is a reserved port, which means it should not be used by
    applications. Network abuse has prompted the need to block this port.

  8. ardsur

    I just learn that uTorrent 3.4.2 has a cryptovaluta-miner installed. This apparently is miss-ussing your computer to make all kind of usages of your free CPU. So you PC is constant on high workload and most likely the download of a torrent file is slower.
    Not nice for uTorrent, have now removed it from my PC, there are other torrent downloaders …


Leave a Reply

  • (will not be published)