class: center, middle, inverse # Vox Pupuli - The Community behind Puppet ??? Hi everybody, my name isn't Tim but Alex Fisher and I would like to talk to you today about Vox Pupuli, the community behind puppet --- background-image: url(blue-skies.jpg) background-size: cover ## $ whoami * ~~Tim 'bastelfreak' Meusel~~ * ~~DevOps Engineer at GoDaddy EMEA~~ * ~~Puppet Contributor since 2012~~ * ~~Merging stuff on Vox Pupuli since 2015~~ * Vox Pupuli PMC member ??? * --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ###What? ] .right-column[ * Maintain many many Puppet modules ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * We maintain more modules than the company Puppet * This leads to some challenges, which I want to discuss today * 88 modules during puppetconf2017, 92 in January 2018 --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ] .right-column[ * Maintain many many Puppet modules * Be helpful and polite to each other ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * 24/7 someone is in the IRC to help you * We've a code of conduct but never had to enforce it * Everybody is friendly, which isn't common these days --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ] .right-column[ * Maintain many many Puppet modules * Be helpful and polite to each other * Be open-minded to people and technology ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * People get easily access to our repos * we encourage users to contribute * We're always happy to play with new software (automation scripts, IRC bots...) or adopt new modules --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ] .right-column[ * Maintain many many Puppet modules * Be helpful and polite to each other * Be open-minded to people and technology * Provide a home for orphaned Puppet modules ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * as a user, it's an awful experience to find a module for your usecase, and notice afterwards that it is dead * We want to avoid that as a collective of module developers --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ] .right-column[ * Maintain many many Puppet modules * Be helpful and polite to each other * Be open-minded to people and technology * Provide a home for orphaned Puppet modules * Unite lonely module and tooling authors to a collective ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * Developing alone sucks * There is a hard pressure on a single person, if your module gets famous * Sometimes you want to go on vacation, switch jobs, lose interest in developing --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ] .right-column[ * Maintain many many Puppet modules * Be helpful and polite to each other * Be open-minded to people and technology * Provide a home for orphaned Puppet modules * Unite lonely module and tooling authors to a collective * Ensure continued development for our code ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ### Who? ] .right-column[ * Currently 130 people with merge permissions * We were 113 in February 2018 * We were 107 in October 2017 * We were 80 in November 2016 * Just a few people work for Puppet Inc. * Most of the contributors participate in their free time * Normal administrators that have to deal with puppet at work ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * we're independent from Puppet Inc. --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ### Who? ] .right-column[ ## Science! .nowidth[  ] ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * Someone sad in the past, a good talk always contains scientific charts * Currently 130 people with merge permissions * We were 80 in November 2016 --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ### Who? ] .right-column[ * Many git newbies * Rebasing a feature branch against upstream master is hard * Many newcomers to test frameworks * Dealing with rspec/rubocop/beaker is hard as well * Many administrators of legacy infrastructures * Stuff older than Puppet 5 without proper hiera5/datatype support ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * Many contributors are new to git and github * Many never wrote tests * we don't have to teach them writing good puppet code, but all the related tooling --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ### Who? ### Why? ] .right-column[ * Maintaining a module on your own is hard * Changing best practices, vacations, losing interest * Proper testing of a module requires a lot of stuff from the ruby ecosystem * Ruby ecosystem and related tools are changing too fast for a single person * Everything has to work on multiple Ruby/Puppet versions * Rubocop * Rubocop ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * Who tried to fix rubocop warnings in a module and couldn't fix all? * rubocop is listed twice because it's twice the pain * Shout out to hailee/HAIL9000 who fixed maaaaaaaany rubocop errors in the mongodb module for many days --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### How? ] .right-column[ ## modulesync * We are managing 111 puppet modules and (164 git repos) * We had 105 imodules in November 2018 * We had 92 modules in February 2018 * We had 75 modules in November 2016 * modulesync was developed by Puppet Inc, moved to Vox Pupuli * It takes a config file + templates, throws it into every modules git repo * Works with GitHub Pull Requests * Everybody can start it * Every of our Collaborators can approve/merge it ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * amount of modules grows * Keeping generic files like Gemfile/Rakefile in sync is pain, if done by hand * modulesync saves us sooo much time * modulesync is similar to `pdk sync` --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### How? ] .right-column[ ## travis  * Free CI platform * Puppet Inc. sponsors us 20 concurrent travis slots * rpsec-puppet on common Puppet*Ruby versions * release modules to the forge * beaker acceptance tests ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * nobody knows how many travis slots we can use, but it works well! * Thanks to David Schmitt for organizing this --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### How? ] .right-column[ ## Release task * Gem called voxpupuli-release * provides rake task to bump + tag a module * Also pushed to the forge * Upcoming: Also create a github release ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * everybody can start it, each collaborator can approve it * We encourage users to contribute by providing easy to use tools --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### How? ] .right-column[ ## Tooling * https://github.com/underscorgan/community_management * Open Issues and PRs sorted in different ways * https://voxpupuli-open-prs.herokuapp.com/ * Also open PRs * https://github.com/voxpupuli/thevoxfox * IRC bot, allows us to merge stuff + trigger modulesync (soon, maybe) * https://github.com/bastelfreak/contributorstats * count contributions ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### How? ] .right-column[ ## Docs * Review Guidelines: https://voxpupuli.org/docs/#reviewing-a-module * puppet-strings generated mardown docs in more and more modules, for example * puppet-selinux * puppet-autofs * puppet-mumble * puppet-cassandra * puppet-rabbitmq * puppet-ferm * puppet-rsyslog ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * We now have a list of things that we check during a review! This allows us to get consistent code style and a better quality. Those docs are so so so important! * We got a few modules with puppet-strings docs! * we provide it as REFERENCE.md in the repo which is embedded into the forge * does anybody want to have html docs at voxpupuli.org/$modulename? (would be possible) --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ###PMC ] .right-column[ * We elected a third Project Management Committee in 2019! * PMC enforces [CoC](https://voxpupuli.org/coc/) * Brings Vox Pupuli into the Software Freedom Conservancy * (after almost three years, this is actually almost done) * PMC guidelines are created by the community https://tinyurl.com/voxpupuli-governance-md * Current members: * Tim 'bastelfreak' Meusel (reelected) * David 'dhollinger' Hollinger (reelected) * Alex 'afisher' Fisher (reelected) * Lee 'friedbob' Lowder * Nate 'natemccurdy' McCurdy ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### PMC ### Collaborators ] .right-column[ * Review pull requests * Explain why we don't support ruby187 anymore * New: Explain why we don't support Puppet 3 and Puppet 4 anymore * Help with git * Trigger the automated release process ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * people are often scared to contribute * They often think they can't write the needed code, but they can! * encourage them --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * TL;DR still people use outdated ruby/puppet versions from time to time :( --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * travis cheets for 100: closing/reopen a PR will retrigger travis * A project admin can do this in the travis UI, outside-contributors can't * close/reopen can be triggered by the PR author --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * we try to get at least a unit test for all new features * on a bugfix: Dope to include a test that fails without the patch, but works with it * Always say thanks! Be friendly to contributors. We're always happy for a new Issue/PR (We prefer PRs) --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * everybody is good at blaming others * we rarely tell people that they made something good * bastelfreak is happy about all new datatypes --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * people often don't notice that travis has a failed job * Do we need to change the visibility? --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * for a clean history we want people to use a correct email address --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * Something that many people very often forget: Is the new feature documented in the README.md? --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[  ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * often people ask us to migrate a dead module into our namespace * we head out to the maintainer and ask for that --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ] .right-column[ .something2[  ] ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? some explanation: bastelfreak noticed in the Archlinux community that people are happy, if you send them sweets We tried this in the Puppet community as well. Puppet Inc. received 15pounds of sweets for all their encouragement for the community. You all keep contributing and bastelfreak will send you sweets as well! --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ### Broken Stuff ] .right-column[ * Vox Pupuli is the place to be if something is broken * puppetlabs-stdlib * puppetlabs-stdlib again * puppetlabs-apt * puppet-systemd (sorry) ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] ??? * story time: Everytime one popular module is broken, people will join the Vox Pupuli IRC channel * This happend twice for stdlib (we didn't break it, we just noticed it) * bastelfreak once added a breaking change to the systemd module which killed the openstack CI pipelines (happened twice) --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ### Broken Stuff ### Quotes ] .right-column[ * 'Release early - release often' - [Igor Galic](https://twitter.com/hirojin) ] ??? * people are scared about making released because it could break things * Maintainers are scared to break the environments from their users * release as often as possible. Less changes per release -> less broken releases --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ### Broken Stuff ### Quotes ] .right-column[ * 'Release early - release often' - [Igor Galic](https://twitter.com/hirojin) * 'Version numbers are cheap - use them' - [Igor Galic](https://twitter.com/hirojin) ] ??? * people are often scared to merge breaking changes. Merging them is totally okay if you do proper versioning * we don't delete broken releases and try to fix it, we just do a new release --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Daily Business ### Broken Stuff ### Quotes ] .right-column[ * 'Release early - release often' - [Igor Galic](https://twitter.com/hirojin) * 'Version numbers are cheap - use them' - [Igor Galic](https://twitter.com/hirojin) * 'DevOps is all about empathy' - [Rob Nelson](https://twitter.com/rnelson0) ] ??? * working closely together, listen to users, always be constructive, don't blame others for mistakes, we all break stuff from time to time * the 'listen' gem issue --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Summary ] .right-column[ * We have great tooling and automation * We have great people * You need help with Puppet? * Let us know, we help out! * You have an orphaned module or know one? * Ping us, migrate it to us * You have domain specific knowledge? * Ruby, Python, Rspec, Beaker, $software we automate ] .footnote[Alex Fisher for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### Summary ] .right-column[ * You want to help out? * We are always looking for new Collaborators and Maintainers Contact: * IRC #voxpupuli on freenode (preferred) * Slack: #voxpupuli on puppetcommunity.slack.com * voxpupuli@groups.io * pmc@voxpupuli.org * alex@linfratech.co.uk / tim@bastelfreak.de * More talks from Tim at [https://github.com/bastelfreak/talks](https://github.com/bastelfreak/talks#collection-of-talks-proposals-and-related-stuff) ### Thanks for your attention! ]