Vox Pupuli has long been the backbone of the open source Puppet community. But as often happens when a group is so capable and ubiquitous, sometimes the work done by individuals in the group goes unsung. In this episode, Eric and Hunter tell the story of their own involvement in the group and share some fun historical stories.
Today's musical intro was recorded by Eric Putnam.
Ben Ford is a developer advocate at Puppet.
Ben [00:00:08] Hi, my name is Ben Ford. I'm the developer advocate here at Puppet. It's my job to build relationships between developers within the company and developers in the community. So I regularly work with Vox Pupuli. With me I have Hunter and Eric, who've both had a pretty long history with them. Could you introduce yourselves?
Eric [00:00:26] Hi, my name is Eric Putnam and I like to work cool socks. I worked on the modules team here at Puppet for about two years and was interacting with Vox Pupuli pretty regularly. I'm also known as eputnam on the Internet and I now work on the Pipelines team.
Hunter [00:00:44] Hi, my name is Hunter Haugen. I'm often known as Hunter both on GitHub and on the Puppet Forge. I've been working with Puppet for many years since back when the Apache module was small and simple, and it's grown quite large since. We were also a small company that existed on IRC on freenode itself. Since then I've been working with the Puppet community that has been renamed itself as Vox Pupuli. I've also moved recently to the Pipelines team and work with Eric on various projects.
Ben [00:01:17] The history is kind of an interesting segue there. Could you tell us maybe a little bit about the Puppet namespace on the Forge and kind of the difference between that and Puppet Labs?
Hunter [00:01:25] Yeah sure. That's actually kind of an interesting bit of history. So Puppet itself, Puppet Inc., used to be named Reductive Labs and Puppet was the main product and out of that we became identified by our software called Puppet. So we changed the name from Reductive Labs to Puppet Labs and about that time the Puppet community, the modules community currently named Vox Pupuli came up and they chose to go with Puppet Labs as the official organization. They chose the name of the Puppet community because they were the open source community around the open source product name Puppet. On the Forge official modules were released under the Puppet Labs namespace and the namespace is kind of on the Forge who you identify as and many authors could be known by their name. So my name on the Forge was Hunter and I could publish modules under that and so you would understand the qualifications of the author that you're getting a module from. So Puppet Labs had good a good reputation for quality modules. The Puppet community chose the name of Puppet just because Puppet community was really long and ended up when Puppet Labs decided to rebrand as Puppet Inc, the puppet community was also requested to change their name and so we had a vote and common Latin phrase is voice of the people Vox Pupuli and the play on words was voice of the puppets, so Vox PUpuli and that's how the community got their name. Also known as just VP for short, but fully spelled out as Vox Pupuli on IRC, on freenode and on the community Slack.
Ben [00:03:07] So what is working together as that group like what does that do for the community as a whole?
Eric [00:03:14] I think it's extremely beneficial having a community that's as involved as they are, and it was always a pleasure working with them and I think at times or most of the time we wish we could have some of them working here.
Hunter [00:03:31] You know some of the largest amount of contributions for the modules team has actually been coming out of the Vox Pupuli group. Basically they produced enough code changes and updates to the modules that our team was almost full time just doing code review, merge and release to maintain the pace coming out of the coding coming out of Vox Pupuli. They were really on the ground and engaging with the community from a internal company perspective of who is using these modules. The members of Vox Pupuli were the people at companies using these modules and they could produce and update them on their day to day job.
Ben [00:04:10] What would you say that like maybe their charter or purpose is? Like what why did they band together as a group?
Eric [00:04:15] I think they mean it's just they want to organize people around maintaining these high quality modules that they build, and another big driver behind having a group of them is that they share administrative rights to the modules. And this helps prevent, you know, if somebody were to add a module to the community and then for whatever reason abandoned it or had to leave it, Vox Pupuli enables the maintenance of that module to continue because that entire group maintains every module.
Ben [00:04:59] It sounds like you're talking about a lot of modules. What kind of modules are they maintaining?
Hunter [00:05:04] So the Vox Pupuli group works with generally everything licensed Apache 2 so it's all open source. The modules themselves are a lot of times the base layer needed to support an infrastructure from the operations and even the developer perspective. Actually the kind of modules they have is the baseline like the LDAP and the React and Node.js.
Eric [00:05:28] And there's there's not really any duplication, I don't think. They don't maintain any modules that we have.
Hunter [00:05:32] And we try to work with the community to make sure that we don't step on each other's toes and duplicate things, so they have a lot of the baseline functionality needed.
Eric [00:05:40] And it's probably worth noting also that it's not just modules. I mean most of the what they are is modules but also you know some best practices and some tooling around modules also come out of the Vox Pupuli.
Ben [00:05:59] I was gonna ask about that. It seems like maintaining a lot of different modules might be a lot of work to keep them all in sync and keep them all like like following the same or similar patterns. What sort of tooling have they built, have they developed?
Hunter [00:06:12] A large portion of the tooling is they maintain many different puppet-lint parsing rulesets so that we can maintain code consistency across all the modules. Another tool that came out of this effort was the modulesync so they were probably the biggest users of modulesync itself before the PDK kind of came in to provide some of the similar functionality, but it just synchronizes the basic config testing documentation, code of conduct, etc. contribution markdown files and everything across the modules themselves to keep them consistent.
Ben [00:06:54] So what about the people in the group. I mean there's lots of different people, there must be lots of different personalities. Are there like conflicts? Do people, do you talk about things? What's it like to work with with this group?
Eric [00:07:07] They're great people. There's a dynamic in the group I think that everybody is, there's maybe a feeling in the group that everybody is there for the greater good of the modules. I don't know. I mean that's what it feels like and so when there are disagreements they're handled with, in my experience everybody is just very direct and everybody understands that nobody's like taking shots at each other. We're just trying to make better modules, so I think with an attitude like that there's very, you know, nobody wants to kill each other. We're all just in it for the modules. I think it's a cool environment.
Ben [00:07:54] Yeah I'd have to say that most of the arguments that I've seen on the list or in pull requests or whatnot, they've been very very kind and focusing more on the thing that you're talking about and nobody takes anything personally.
Hunter [00:08:09] We've been really lucky to work with a solid community like that. From Eric and my perspective being on the modules team inside of Puppet, there was definitely opportunities for conflict of interests from a open source versus corporate interests, but they we had a standing weekly hour in which we could all get together and anybody could propose discussion topics and that really helped. Just seeing each other in person via video chat every single week and maintaining communication via IRC just really helped keep the human perspective on the whole thing and that we're all just here because it's helpful and we enjoy it.
Ben [00:08:47] It's really good to hear. How would somebody - like, like how do people get involved with the project?
Hunter [00:08:53] Getting involved is actually really easy. The GitHub namespace github.com/voxpupuli has any sort of code bases you'll also see these modules published in the Forge, so any user of the modules if they run into any pain points can you can document the fact that you know a feature that you would like is missing or you can start opening a pull request that just proposes some changes that you might want. GitHub makes pull requests really easy to open up and get started on. And don't worry about the code because as we've said the community is very friendly and they'll give lots of great feedback on how how you can just improve your own code base and learn your learn your skills and improve them on the fly. So back and forth review if you want to talk to people in real time about some issues that you're having or questions about how to implement things or even getting started, there's always IRC channel and that is hashtag hash VOX PUPULI on freenode.net and there is the Slack Vox Populi channel on the Puppet community Slack.
Ben [00:10:05] So it sounds like there's not really a formal process for getting involved. It's just you see something in their name space it sounds interesting to work on and you step up and maybe contribute a pull request or an issue or something and just get involved.
Hunter [00:10:18] Yeah definitely. There's also a list of open issues on a lot of the modules so if something looks interesting and documentation is definitely always a good way to go because you can document things without making code changes but really get to know a code base through that process - you know the git workflows and the code structure and all of these different sorts of aspects of how the modules are used, just by doing documentation.
Ben [00:10:44] Yeah definitely. Like from a personal standpoint I can say that getting involved with documentation and just helping people to like clarify and write the docs. That's maybe one of the lowest cost ways of getting involved and one that offers so much reward out of it. And there's not as many there's not as many people interested in doing that as there are in writing code. So that's a real good way to get to use your skills. So if you have a module that that you want to share with the community what how do you go about doing that? What's the process like?
Eric [00:11:17] Getting Vox to adopt the module you mean?
Ben [00:11:21] Right.
Eric [00:11:22] That's actually on their website. They have some pretty good instructions that I myself have been referred to when asking the same question. So I would encourage people to go voxpupuli.org under their documentation section. There is some step by step instructions for that.
Ben [00:11:40] What are some reasons you think that people might be interested in getting involved? I mean, it sounds like a lot of work. What are some of the rewards you see coming out of it?
Eric [00:11:47] For the wider the wider community just the the continuation of the Vox Pupuli community is a benefit to anyone using Puppet because they do maintain high quality modules and you want high quality when you're defining production systems. I think you can also expect some personal growth. If you're regularly involved in writing modules and interacting with this community, there's a lot of people in it that know a lot of things and a lot of things for you to learn. A lot of people in Vox Pupuli have been in it for a while.
Hunter [00:12:27] One of the things about getting started with Puppet is puppet-ing your infrastructure from scratch to 100 percent takes a whole lot of effort and the groundwork has been laid in the Vox Pupuli code base pretty heavily. So lots of times people actually end up getting involved just through the side effect of using the modules there and having a feature in mind that they'd also like, they contribute it, and now they're part of the community. And the community is just so welcoming that they end up getting part of the daily chatter and the meetups and all of these sorts of things that we might do from time to time just by the side effect of using the modules in their own work environments.
Eric [00:13:08] And the more people we have in our community doing things like that and the more we keep kind of open source side alive.
Ben [00:13:15] So do you think that Vox Pupuli has very much influence maybe unlike like product roadmaps or different features that Puppet might offer?
Hunter [00:13:23] I think actually sadly probably the answer is no. They tend to have their own roadmaps and their own corporate direction but they also are the heartbeat of the community. The Puppet users themselves. And oftentimes they are the first ones to implement the things that the community most needs before Puppet Inc. Gets there. So we on the modules team actually try to enable them because they are fast moving, they're fast moving creators with original ideas and original content. And so it actually might be kind of the other way around where we can influence their workflow and support them in their efforts.
Ben [00:14:07] Do they ever do anything like, I don't know, like catch problems with Puppet modules or tools or anything and help us identify and fix the problems before other people get to them?
Hunter [00:14:18] The one thing we work together quite a lot on is the testing tooling, so Puppet Inc. creates testing tooling for Puppet modules and they're a huge consumer of that so any problems that arise from modules upstream nightly builds of Puppet or the testing and tooling itself, they often are some of the first people to notice what's going on. Or being part of the Ruby ecosystem is always a wild ride, so upstream problems with Ruby gems that might emerge from the community outside of our control, they're often noticing it and proposing solutions before it even hits our CI. We worked back and forth just to keep the ecosystem going for ensuring quality for all of our customers.
Eric [00:15:00] Yeah a lot of them are in Europe. So you know we would wake up in the morning and find out that they had already figured it out and proposed a solution.
Ben [00:15:07] Well thanks for letting us share the story with you. Vox Pupuli is a fascinating group of people and they do a really important job in our community. I don't think it's going too far to say that we wouldn't even be where we are today without them. We've all benefited from the work whether you really know it or not. So if you happen to see somebody at a conference somewhere with a fox sticker on their laptop you should really walk up to them and thank them or shake their hand and thank them for a job well done. Part of my job today is deepening that relationship that Puppet has with Vox Pupuli and making sure that they're well supported. I'm excited to see where that can take us in the future. So if this group sounds like something you'd be interested in getting involved with I'd suggest stopping by their website. We've mentioned it several times, voxpupuli.org. Thanks, Eric and Hunter and thanks for all your good work.
Hunter [00:15:55] Thank you very much.
Eric [00:15:57] Yeah, thanks.