Improving our Terminology

Dustin Mitchell
Buildbot
Published in
2 min readFeb 8, 2017

--

We just completed the process of renaming all references to “slave” to refer to “worker” instead. This change had been requested many times over the years, by representatives of some substantial users like Rust and Cray Supercomputers.

We had high standards for this change — a simple text substitution would not be sufficient: users have lots of custom configuration and code for which they need a clear migration path. Despite many valiant attempts, the task proved difficult.

With the help of the Mozilla Open Source Support program, we were able to sponsor a bounty for the project. Vladimir Rutsky took on the project at the end of 2015, with a detailed plan to address the compatibility issues such a big change would raise.

The key is in worker_transition.py, which uses sophisticated Python introspection techniques to issue warnings for uses of old names — be they modules, classes, attributes, methods, or module-level values. Despite the warnings, the old names continue to function as before. Users can select how they would like to treat those warnings — ignoring, logging, or even raising exceptions for them. The documentation describes all of the name changes to guide users migrating their custom code.

The bulk of this work was completed before the 0.9.0 release, which ships with a buildbot-worker package. Since that release the focus has been on cleaning up loose ends, including references in wiki pages, documentation, and so on.

A big thank-you to Vladimir for his diligent work on this project: he has set a high standard for quality and attention to detail that will serve Buildbot well in the future.

--

--