Razor is an exciting provisioning project, and one that has attracted an awesome group of contributors who helped test and build it out. One contributor who stands out is Chris Portman. To my surprise, this also turns out to be the very first open source project he has ever worked on!
Chris was one of the earliest adopters and contributors to the rewritten Razor. His first contributions centered around specific itches that he had with some of the commands in Razor, such as how it handles updates to tags. Even though these were his first open source contributions, he handled the process like he’d been doing this forever – always willing to discuss small tweaks to his ideas and code, extremely responsive, absolutely pleasant to work with, and an enrichment to the Razor community from the very beginning.
Chris really started to shine, though, when he started to think about a concrete problem he had: controlling which OS goes onto a machine on a machine-by-machine basis, rather than more general machine characteristics. He kicked the discussion off with code solving his problem, which, through a number of discussions, morphed into an incredibly useful feature: node metadata that can be manipulated through the public API, from tags and from installers. Over time, he made many more contributions, especially commands, that came directly out of his daily needs while using Razor.
One of Chris' more recent and incredibly important contributions is a feature that shipped with Razor 0.16.0: user-defined hooks that allow users to tailor Razor’s behavior to their needs without having to get involved with the actual server code. We had known from the beginning that Razor needed a way to allow users to add some behavior, something we had kicked around under the name “generators” for a while without a clear idea of how and where it would fit in with Razor, overall. Chris came up with the idea of giving people pre-defined points in a node’s lifecycle to have their own code run that was both simpler and more powerful than the initial generator idea.
Chris shares, “I first came across Razor via the original version and really liked the concept of policy driven deployment. When the rewrite started, I installed it and saw it was still early days and there were quite a few commands that were yet to be implemented. After talking to the guys about roadmaps and timelines, I was invited to contribute pull requests. I had only just started dabbling with Ruby code at this point, coming from a Perl background, but I saw it as a good opportunity to develop the skillset and so I started submitting pull requests for the basic CRUD type commands to manage the various Razor objects.
“After that, I started talking to David, Daniel and Scott about ideas to adapt it to be able to suit other various use cases I’d come across, which helped develop features like metadata, microkernel extensions and secondary node identification.
“This is the first open source community project I’ve gotten myself involved with and its been a thoroughly enjoyable experience. Not coming from a programming background (I’m predominantly a sysadmin, with a focus on automation and integration, which is where my programming skills get put to use), it’s been an incredibly educational experience and my Ruby skills have developed out of sight. The guys have been incredibly welcoming and supportive of different ideas, and always supplying constructive feedback, which in many cases, saw a simple idea develop into a rather powerful feature.
“Outside of Razor, much of my time has been spent getting Puppet implemented across the organization to take over the management of a few thousand machines.
“When I’m not in front of the computer, you’ll probably find me in the ocean with a SCUBA tank on my back, participating in competitions down at the local range or off camping somewhere with family and friends.”
Puppet Labs software engineer Scott McClellan says, “Chris is a consistent contributor who's been a pioneering member on Razor. His design work, enthusiasm, and eye for improving the product have helped make Razor what it is today.”
One of the hallmarks of the open-source development model is user-driven innovation, the idea that software is used by a variety of people – their needs, feedback and improvements are crucial in improving software. I can’t think of a better example for user-driven innovation than Chris’ contributions to Razor; in particular, his design ideas have had a strong positive impact on Razor’s functionality and usability.
David Lutterkort is a principal software engineer at Puppet Labs.