Managing contributions in an open source project

A presentation at MautiCon 2020 in November 2020 in by Ruth Cheesley

Slide 1

Slide 1

Managing contributions in an open source project Ruth Cheesley and Dennis Ameling

Slide 2

Slide 2

Ruth Cheesley Dennis Ameling Mautic Project Lead Assistant Team Lead, Product Team @RCheesley @DennisAmeling

Slide 3

Slide 3

Looking back a few years

Slide 4

Slide 4

There was: ● No governance structure for the project and community outside of code governance ● No established teams or working groups ● Significant dependency on Mautic Inc. for features, fixes, code reviews and releases

Slide 5

Slide 5

● People being unclear how to contribute, what the process was, and how they could get involved ● A lack of clarity on how the community could have a say in the future direction of the project ● A large backlog of PR’s and issues accumulating as Mautic Inc. stepped back for managing community releases This resulted in:

Slide 6

Slide 6

Start with governance

Slide 7

Slide 7

Establishing a clear governance model took time!

Slide 8

Slide 8

What have we learned from the last 12 months?

Slide 9

Slide 9

Be transparent and welcoming to all

Slide 10

Slide 10

Efficiently involving developers ● There’s something for everyone ● Tier 1 (Easy): small fixes ● Tier 2 (Medium): minor features or enhancements ● Tier 3 (Hard): major changes touching multiple parts of Mautic ● The key is to make it a smooth process for folk to get started (code + review)

Slide 11

Slide 11

Be quick and consistent with your responses ● Contributions need to be addressed in a fair time period ● If that hasn’t happened, be honest and do your best to make it right ● Make sure that you get back to people if they ask for help ● Document every step of the contribution journey in extreme detail!

Slide 12

Slide 12

Build a diverse Product Team (WIP!) ● Technical folk to review PR’s and check code quality ● Welcoming committee to meet and greet contributors ● Marketeers - people who actually use the tool ‘in the world’ ● Documentation writers, media creators ● UI / UX / Accessibility experts ● Diversity in every sense of the word helps us serve our users better

Slide 13

Slide 13

Ensure everybody understands the importance of their role ● Ensure they understand how they add value to the team ● Encourage contributors to specify how much time they are able to commit ● Set expectations appropriately and empower contributors to push back if they are taking on too much ● Recognise that being a contributor is voluntary, but not without obligation

Slide 14

Slide 14

Take a firm but fair approach to triaging old PR’s and issues ● Timebox expected response times and inform authors what will happen if they do not respond ● Consider having another contributor pick up any PR’s that are valuable but the original contributor is not responding (remember to always credit the author) ● You may have to spend time yourself testing issues to see if they persist!

Slide 15

Slide 15

Create a release schedule, and stick to it 3.1.2 3.2.1 26 October 2020 28 December 2020 3.2.0 3.2.2 30 November 2020 25 January 2021 ● Creates a ‘beating heart’ of the project ● Sets expectations for contributors ● Allows prioritisation of bug fixes and features ● Allows users to plan around release dates for maintenance windows

Slide 16

Slide 16

Encourage organisations to enable their teams to contribute ‘on the job’ ● It is not practical to expect a project to scale and grow at a decent pace when everybody contributing is a volunteer ● Burnout is sadly very common in Open Source - often as a result of people contributing in their free time ● Organisations are often willing to enable their teams to contribute if they can see how, where, when, and most importantly, why.

Slide 17

Slide 17

Example: Reviewing code contributions (PRs) ● Sometimes technical knowledge is needed for this, sometimes not ● We’re working hard to ensure that both users (marketers) and developers can easily test code contributions

Slide 18

Slide 18

Where are we now?

Slide 19

Slide 19

Community engagement is growing Mautic Inc. acquisition announced Source: All community engagement (Git/Github, Slack, Forums, Meetup) excluding Acquia and Mautic Inc. employees https://dashboard.mautic.org/goto/5350ad97a5147dcf3374408aafc24aee

Slide 20

Slide 20

Dealing with technical debt We have made a good amount of progress so far and with each release we are closer to our end-of-year target of under 100 open PR’s and issues. Jan 2020 Jul 2020 Sept 2020 932 Open Issues 444 Open Issues (-52%) 280 Open Issues (-37%) 332 Open PRs 218 Open PRs (-35%) 209 Open PRs (-4%) Dec 2020 Targeted Open Issues <100 Targeted Open PRs <100

Slide 21

Slide 21

Automated tests ● Imagine having to manually test EVERY part of Mautic on EVERY change in the codebase (large or small) ● Computers are good (and fast!) at repetitive testing ● This is where automated tests come in

Slide 22

Slide 22

The importance of automated tests ● Ensures functionality keeps working as it should ● Enhances the overall stability of the product ● Motivates developers to write high-quality code ● Currently, ~32% of Mautic’s backend is covered by automated tests

Slide 23

Slide 23

Mautic and automated tests ● Every Pull Request (PR) should either keep test coverage the same or increase it ● Starting to write E2E (end-to-end) tests to simulate actual users interacting with the product ● Gradually increase test coverage ● Goal: make Mautic more reliable

Slide 24

Slide 24

Questions? Thank you!