Today we’re handing over the maintenance of our Puppet::Syntax tool to an open source community group. We regularly code in the open and have some open source software, but this is the first time we’ve relinquished ownership of something we’ve developed. In this post I’m going to explain the history of how we got here, and why we're doing it.
Why we developed it
First, a little background. GDS developed the Puppet::Syntax Ruby gem to check the syntax of the files people use to give Puppet instructions. Puppet is one of a number of tools for configuration management which we use on GOV.UK to configure servers.
Puppet::Syntax can detect when a simple mistake like forgetting a semicolon is going to derail your deployment, so you can fix it before there’s a problem.
We originally developed Puppet::Syntax for use on GOV.UK, but in 2013, Dan Carley (one of our web ops team) spent his own time outside of work to extract the code and make it available for everyone. Like most of the code GDS produces, Puppet::Syntax was released under the permissive MIT license, so everyone can take it and modify it for their own uses.
Over 3 years on, Puppet::Syntax has become an important piece of the Puppet ecosystem. It has been downloaded over 3 million times and is depended on by over 2000 code bases. Now most of the patches to improve the code come from developers outside of GDS.
Why we’re handing it over
The success of the project has created a slight problem. Because our focus has to be on GOV.UK and the wider digital transformation of government, we haven’t always had the time to respond as quickly as we should when it comes to accepting patches for Puppet::Syntax. GDS has become a bottleneck to the development of the tool, slowing down further improvements.
In February, I went to the Config Management Camp conference in Belgium and talked to several members of Vox Pupuli, a collective of Puppet module, tooling and documentation authors.
Vox Pupuli was the ideal group to take on Puppet::Syntax, with a large team of coders who share responsibility for maintaining a range of Puppet-related tools and modules, helping to avoid bottlenecks like the one that is afflicting the project currently.
Vox Pupuli is a non-commercial group that aims to serve the community of Puppet users. The collective is already a major contributor to Puppet::Syntax, and the members were keen to take on a bigger role. It seemed like a natural step to hand over the reins.
While I still intend to be involved, stepping back is the right thing to do for the future of the project.
You can follow Bob on Twitter, sign up now for email updates from this blog or subscribe to the feed.
If this sounds like a good place to work, take a look at Working for GDS - we're usually in search of talented people to come and join the team.