class: center, middle, inverse # Vox Pupuli - The Funny Community Journey ## PuppetConf 2017 Edition --- background-image: url(blue-skies.jpg) background-size: cover ## $ whoami * Tim 'bastelfreak' Meusel * DevOps Engineer for heg.com -> GoDaddy EMEA * Puppet Contributor since 2012 * Merging stuff on Vox Pupuli since 2015 * Vox Pupuli PMC member * Organizing BBQ events for Arch Linux Community --- background-image: url(blue-skies.jpg) background-size: cover .left-column[ ## Vox Pupuli ### What? ] .right-column[ ### How to write and pronounce * Vox Pupuli * VoxPupuli * Voxpupuli * voxpupuli * puppet-community -> Vox Pupuli ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ###What? ] .right-column[ * Maintain many many modules ] .footnote[@bastelsblog for @voxpupuliorg] ??? We maintain more modules than the company Puppet this leads to some challenges. 88 modules --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ] .right-column[ * Maintain many many modules * Be helpful and polite to each other ] .footnote[@bastelsblog for @voxpupuliorg] ??? 24/7 someone is in the IRC to help you We've a code of conduct but never had to enforce it --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ] .right-column[ * Maintain many many modules * Be helpful and polite to each other * Be open-minded to people and technology ] .footnote[@bastelsblog for @voxpupuliorg] ??? People get easily access to our repos we encourage users to contribute --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ] .right-column[ * Maintain many many modules * Be helpful and polite to each other * Be open-minded to people and technology * Provide a home for orphaned Puppet modules ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ] .right-column[ * Maintain many many 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[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ] .right-column[ * Maintain many many 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 for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ### Who? ] .right-column[ * Currently 107 people with merge permissions * 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 for @voxpupuliorg] ??? 5 regular contributor work at Puppet Inc. --- 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 ] .footnote[@bastelsblog for @voxpupuliorg] ??? Many contributors are new to git and github Many never wrote tests --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### What? ### Who? ] .right-column[ * Many administrators of legacy infrastructures * Puppet3, Ruby191, Ruby2.0 * November 2016: Puppet2.7, Ruby187 * Do we already call Puppet4 legacy? (yes pls) ] .footnote[@bastelsblog for @voxpupuliorg] ??? Was: Ruby hashrocket notation doesnt work on ruby187 Now: There is a strange datatype that my code Now: Data-in-modules doesn't work --- 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 for @voxpupuliorg] ??? Who tried to fix rubocop warnings in a module and couldnt fix all? --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ] .right-column[ * We are managing more than 88 modules * We had 75 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[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ] .right-column[  * Free CI platform * Puppet Inc. sponsors us unlimited? concurrent travis slots * rpsec-puppet on common Puppet*Ruby versions * release modules to the forge * beaker acceptance tests ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ### Release task ] .right-column[ * Gem called voxpupuli-release * provides rake task to bump + tag a module * Also pushed to the forge * Upcoming: Also create a github release ] .footnote[@bastelsblog for @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 ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ### Release task ### 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 for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## How? ### modulesync ### travis ### Release task ### Tooling ### Docs ] .right-column[ * puppet-strings generates html docs * https://voxpupuli.org/puppet-selinux * https://voxpupuli.org/puppet-autofs * https://voxpupuli.org/puppet-mumble * https://voxpupuli.org/puppet-cassandra ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Governance? ###PMC ] .right-column[ * We elected a Project Management Committee in 2016! * PMC enforces CoC * Brings Vox Pupuli into the Software Freedom Conservancy * PMC guidelines are created by the community https://tinyurl.com/voxpupuli-governance-md * Next election will start soonish ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Governance? ### PMC ### Collaborators ] .right-column[ * Review pull requests * Explain why we don't support ruby187 anymore * New: Explain why we don't support Puppet3 anymore * Help with git * Trigger the automated release process ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ## Governance? ### PMC ### Collaborators ### Officers ] .right-column[ * Election officer * Spencer Krum (@nibalizer) * Runs the PMC election 2017 * Security officer * Julien Pivotto (@roidelapluie) * Official contact for security issues, deals with CVEs * Defines our security guidelines: https://voxpupuli.org/security/ ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ] .right-column[  ] .footnote[@bastelsblog for @voxpupuliorg] ??? people are often scared to contribute encourage them --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ] .right-column[  ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ] .right-column[  ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ] .right-column[  ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ] .right-column[  ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ] .right-column[ .something2[  ] ] .footnote[@bastelsblog for @voxpupuliorg] --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ### Broken Stuff ] .right-column[ * `#voxpupuli` (IRC) is the place to be if something is broken * puppetlabs-stdlib * puppetlabs-stdlib again * puppetlabs-apt * puppet-systemd (sorry) ] ??? --- background-image: url(blue-skies.jpg) background-size: cover ## Vox Pupuli .left-column[ ### Daily Business ### Broken Stuff ### Quotes ] .right-column[ * 'Release early - release often' - Igor Galic * 'Version numbers are cheap - use them' - Igor Galic * 'DevOps is all about empathy' - Rob Nelson ] --- 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 or know one? * Ping us, migrate it to us * You have domain specific knowledge? * Ruby, Python, Rspec, Beaker, $software we automate ] .footnote[@bastelsblog for @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 #voxpupli on freenode * Slack: #voxpupuli on puppetcommunity.slack.com * voxpupuli@groups.io * pmc@voxpupuli.org * tim@bastelfreak.de ### Thanks for your attention! ]