Buildbot 1.0.0

Hi I am happy to announce the release of Buildbot 1.0.0.

Yes, that’s right, after 16 year of development, Buildbot finally reaches 1.0. TLDR: Don’t worry major version bump does not mean you will have to spend a week to upgrade. It just means that we have achieved the API stability that we wanted.

Brian Warner and Dustin Mitchell.. or not.

Buildbot comes with a quite long history, we can clearly say that it has been part of the precursors of continuous integration as we know it now. The development started in 2002, just one year after the Agile Manifesto was released. The new Buildbot repo was first in CVS, then Arch until 2006, then Darcs until 2008, when Dustin finally convinced Brian to move to Git. Brian first presented it at PyCon in early 2003, and Twisted was the first customer. A couple of other projects picked it up, and eventually Mozilla switched over too. There is now a long non exhaustive list of Success Stories.

Twisted folks in PyCon2003. Brian is on the left with the hawaian shirt. Glyph is on the
far right

Since that beginning, the Agile movement really took off, so did the continuous integration technologies. Most of them backed by big companies. It was difficult for a purely community baked Buildbot to stay on the top of the list. The project kept that niche market of the continuous integration framework. It does not comes with one-click ready to use workflows, but rather provides you with solid and mature framework which can help you to build the exact workflow that your team need. While this requires a little bit more effort, we believe there are still lots of use-cases where these efforts pays off.

Project starting in 2002 means it was built using 2002 python. A long journey started to make it more sustainable for large scale. The introduction of schedulers was the big change for 0.7.0 (2005), 0.7.10 added the support of EC2 latent slaves. For 0.8.0 (2010), Dustin did the major introduction of a database layer. This introduced the multi-master capability and fixed a lot of scalability at Mozilla. But it was not too pretty, as it didn’t add the asynchronous layer that a database needs. Indeed as historically, most of Buildbot serialization code was done by writing files directly on disk, there was a big refactoring work needed so that the database layer really can run in parallel which would helps scaling further. 0.8.1 introduced the split of master and slave packages. 0.8.4 (2011) introduced the use of sqlalchemy, which was a huge gain in maintainability regarding the support of several database backends.

At that time (2012), Dustin started the nine branch. He figured the work necessary to make Buildbot really scalable would not be possible incrementally. There was a huge work to rewrite the synchronous status layer into an asynchronous data layer following the REST principles, including real-time updates capabilities. This work was eventually released in 2016, and came up with a new UI, a new REST api, and lot more scalable framework. It unfortunately also came with a lot of incompatibility, and we still have people not yet ready to do the transition. Since 2016, we have polished Buildbot nine, up to the point that there is no major feature that has not been ported from the 0.8.x series. That is the reason why it is time to call it 1.0.0.

Our goal is to maintain the compatibility as much as possible with the current set of API that are documented. We will continue to update Buildbot, and make all our possible to avoid breaking this compatibility. This is very important to us, as this help our community to stay on latest version of Buildbot, and encourage them to contribute their modifications, and to continue growing the open source project. Starting from now, we will use semantic versioning for our versions. We will continue to release every month, upgrading the minor or patch number depending on whether there are big new features or not.

As always, please see our release notes for the details of what changed between 0.9.15 and 1.0.0.

Thanks a lot to our contributors for this release!

git shortlog --no-merges -ns v1.0.0...v0.9.15
50 Pierre Tardy
5 bb-nl
4 Will Newton
3 Craig Rodrigues
3 Dmitry Baryshnikov
3 uglycoyote
2 bruce oberg
2 ila
2 luz.paz
1 Brian Dolbec
1 Dustin J. Mitchell
1 Robin Jarry
1 Vadim Zeitlin