Rust merge process

New contributors on the Rust project are generally a bit lost on how the merge process is working. This little article intends to make things a bit more clear. But first, let's start with steps before opening a Pull Request.

Things to do before asking a review

First, it might seem obvious but better sure than sorry: run tests! The command is as follow:

make check

It can takes some time so don't worry and go do something else meanwhile.

Next, it's a very common mistake: new contributors (and all contributors more generally) don't know or don't think about running the make tidy command. As long as this command doesn't end successfully, this work won't get merged!

Once this done, you can open the pull request.

Review process

Once the pull request has been opened, a Rust contributor/reviewer will review it. Don't be surprised if it isn't accepted at first try: it's normal. A few typos or formatting issues can still be present, so don't worry and just fix them.

If you update your code (and don't add new features in this process), you'll need to squash your commits. If you don't know how to do it, you can take a look here.

When it's all good, a reviewer will then "r+" your pull request. It means that it's now added to the pull requests list that need to be tested with buildbot (an open source test platform, the rust instance is hosted by Mozilla). You can see the current pull request queue here.

buildbot

It tests your changes on a wide range of platforms (Windows, Linux, OSX, ...) and architectures (32 bits, 64 bits, arm, ...). Once again, it can take some time so once your pull request has received "r+", just go do something else. Either your changes have succeeded or not, buildbot will leave a message on the pull request (with bors pseudo).

Confusion with travis and buildbot

It's important to differentiate both of them: travis is an online platform which tests changes. If travis passes, it doesn't mean that your changes will succeed on buildbot too. However, if travis fails, buildbot will as well.