Architecting your Open Source Culture with Governance

October 30, 2019
Written by
Shelley Vohr
Contributor
Opinions expressed by Twilio contributors are their own

Architecting your Open Source Culture with Governance

When an open source project first blinks its eyes open into the wider world, maintainers are often focused on nurturing its initial growth across a small variety of dimensions. These focal points are necessary and key for building a successful open source project, but once it reaches a certain scale, new considerations come into play.

What problems are we trying to solve?

Open source is, at its core, about people, and about orienting them around a project such that everyone is cognizant of and working to align on the direction that they want the project to head. A project’s culture is a reflection of the people who populate its ranks and the processes it has set out to guide the choices it makes both technically and non-technically. When your project is growing and it’s clear people are engaged, how do you ensure that your project is on a growth track for success? How do you establish formal roles and ensure that there’s a clear pathway for conflict resolution? And finally, beyond that, how do you create a psychologically safe and welcoming culture that people would want to contribute to?

To help us answer these questions, we can look to the concept of a governance system. To better understand this, we’ll walk through the Electron project’s experiences earlier this year as we transitioned to a formal governance system.  In sharing these experiences, we hope that you might better understand how governance affects a project in practice as well as how your own project might benefit (or potentially not benefit!) from venturing down a similar trail.

GitHub provides a great primer for understanding what an open source governance entails, but here we’ll focus more on improving our understanding of how an open source project’s culture is reflected in its backing governance philosophies.

Electron before governance

For the first several years of Electron’s life as an open source project, a small but dedicated group of cross-company engineers collaboratively worked to maintain the project. This system worked passably as the community was quite small, and folks already present within the community felt on a personal level that creating a welcoming culture and working towards engineering excellence were not at all mutually exclusive goals.

However, as time passed it became more and more clear that the ad-hoc nature of our approach to community & safety was not scaling in proportion to the scope and ecosystem of the project. The maintainership (of both core code and other important duties) had grown from less than 10 to nearly twenty, and we began to feel cracks in the walls that had once held us securely as we worked. With more capable minds working on the project, the clarity around ownership of responsibilities had become diluted, and an increased number of perspectives meant that it was not always so easy to attain consensus in moving forward with decisions. Arguably more importantly, we did not always succeed in making existing contributors feel welcome and included or properly convey to potential contributors how they could most effectively participate in our community as it stood. This led to some maintainer attrition, an outcome which we felt unacceptable as it meant that we were clearly not creating a community that fostered inclusion &  a sense of belonging for all contributors. To look towards solving these systemic issues, we knew that a fundamental change was in order, and that our best path forward lay in formalizing the Electron project with a governance system.

Why governance?

Why did we feel that we would be able to augment our culture using governance as a tool? The answer to this question is twofold: governance both explicates responsibility and outlines expectations. All members of a community are partially responsible for helping ensure a project’s atmosphere is a healthy one, but without a system in place this can play out in practice like the 911 problem - everyone might recognize that something needs to be done about a bad faith actor but no one is sure who is responsible for calling the proverbial ambulance. Governance can help solve this by ensuring that community members are aware of their own roles as well of the roles others may play in ensuring a project is allowing everyone to do their work to the best of their ability.

Governance can also allow for a community to establish a shared framework for expected participation. By formalizing roles, members feel more responsible for a project’s direction and health, and will feel more empowered to make choices that either increase or maintain that health. This is not to say, however, that a governance on principle achieves these ends; governance is simply a tool which must be applied with care and intention.

Electron’s new governance system

Electron’s governance system and its implementation details are public at our governance repository. As we established governance, we first came together as a community to discuss what we felt our core values were. We then decided that if we planned to adhere to those values and live them in practice, our governance system needed to formalize those values, which are (in order):

  1. Deliberate Inclusivity
  2. Intellectual Safety
  3. Transparency
  4. Accountability
  5. Shipping
  6. Sharing

You can read more about those values and their philosophies here.

From these values we created the following structure:

+----------------------------------------------------------------------------+

|                            Electron Governance                             |

|                          Development & Moderation                          |

|                                                                            |

|                                                                            |

|                               WORKING GROUPS                               |

| +----------------------+ +----------------------+ +----------------------+ |

| |         API          | |  Community & Safety  | |       Ecosystem      | |

| +----------------------+ +----------------------+ +----------------------+ |

| +----------------------+ +----------------------+ +----------------------+ |

| |       Outreach       | |       Releases       | |       Security       | |

| +----------------------+ +----------------------+ +----------------------+ |

|                          +----------------------+                          |

|                          |       Upgrades       |                          |

|                          +----------------------+                          |

+----------------------------------------------------------------------------+

We made the decision to establish a Community and Safety Working Group to ensure that there was intentional time being dedicated to the creation of enforcement-first procedures for Code of Conduct violations, and so that members could gain a deeper understanding of community maintenance and the work that it entailed. It should be very clear to all community members what constitutes unacceptable behavior, and what a given member can and should do if they feel that someone is engaging in said unacceptable behavior.

Electron after governance

In a post-governance world, we still feel there is work to be done, since projects like Electron live and breathe and so do their communities. However, it has never been clearer what is expected of participants in Electron’s community, and how they can help contribute to keeping it as vibrant and safe as possible. Our community has never been larger, and our governance currently sits nearly 40 people working diligently on all aspects of the project. Maintainers have reported feeling more included and as though each of their voices matters and can be heard, a state that we continually strive to maintain.

We also feel it’s important to re-evaluate and critique governance periodically, as requirements and goals change and so should the systems working towards those goals. We currently discuss governance at each Electron Maintainer summit, and just recently consolidated two working groups as well as added a new one, since we felt this was what the project needed. Governance as a tool is just that - it should not remain stagnant and you as a maintainer should be prepared to question whether or not the way you’re using the tool is the most effective, and if it’s not, whether you should update that tool for the new task at hand.

We would love for you to take a closer look at our systems and give us feedback about how you’ve had success and difficulty with similar or different systems. Our culture is a constant moving target, and we always want to know how we can both learn from and impart our experiences to projects around us.