class: center, middle, inverse # Vox Pupuli - Empowering the Puppet Community ## Spontaneous OSDC 2019 Edition --- 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 ## Vox Pupuli .left-column[ ### 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[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ### Who? ] .right-column[ * Currently 134 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[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### 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[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### 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[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- ## Vox Pupuli .left-column[ ## How? ] .right-column[  ] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ] .right-column[ * We are managing more than 113 modules * modulesync was developed by Puppet Inc, moved to Vox Pupuli * It takes a config file + templates, throws it into every modules git repo * Everybody can start it ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ] .right-column[  * Free platform * rpsec-puppet common Puppet*Ruby versions * release modules to the forge * 10-60min per module ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ### beaker ] .right-column[ * creates a virtual machine or docker instance * starts a complete OS in it * executes puppet in it * checks if everything looks as expected ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ### beaker ] .right-column[ Can be executed: * on your notebook before you contribute a patch (same for rspec) * with docker on travis ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ### beaker ### Tooling ] .right-column[ * 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[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- ## Vox Pupuli .left-column[ ## Governance? ] .right-column[  ] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## Governance? ### PMC ] .right-column[ * We elected our third Project Management Committee last fall! * PMC enforces CoC * Brings Vox Pupuli into the Software Freedom Conservancy * (This point is on the slides since 2016. But we're almost done! "Just" every PMC member needs to sign a document from the SFC) * PMC guidelines are created by the community https://tinyurl.com/voxpupul-governance-md ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## Governance? ### PMC ### Contributors ] .right-column[ * Review pull requests * Explain why we don't support ruby187 anymore * Trigger the automated release process * Work on our style/review guidelines at [https://voxpupuli.org/docs/#reviewing-a-module-pr](https://voxpupuli.org/docs/#reviewing-a-module-pr) ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Summary ] .right-column[ * We have great tooling and automation * We have great people ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### 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? * Ping us, migrate it to us * You have domain specific knowledge? * Ruby, Python, Rspec, Beaker, $software we automate ] .footnote[[@bastelsblog](https://twitter.com/bastelsblog) for [@voxpupuliorg](https://twitter.com/voxpupuliorg)] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Summary ] .right-column[ * You want to help out? * We are always looking for new Collaborators and Maintainer Contact: * IRC #voxpupuli on freenode * Slack: #voxpupuli on puppetcommunity.slack.com * voxpupuli@groups.io * pmc@voxpupuli.org * tim@bastelfreak.de * More talks at [https://github.com/bastelfreak/talks](https://github.com/bastelfreak/talks#collection-of-talks-proposals-and-related-stuff) ### Thanks for your attention! ]