I believe the time has come for Nix to adopt formal project governance rooted in trusted open source principles, to ensure a safe, open, and community led future for the project. In the past, governance has been approached with skepticism: we wanted to avoid a heavy bureaucracy to keep the agility that comes from being a small project. We aren’t a small project anymore, though, and thoughtful governance can help us ensure everyone thrives as Nix continues to grow.
Roots of community
Every person who participates in the project wants something different from the experience. Perhaps it solves a problem they have; maybe they started a company and leverage Nix to pay the bills; maybe they were hired into a job that uses Nix; or maybe they are just trying to scratch an itch or to make friends. Regardless of the reason they are here - all these people are community members and are welcome to be a part of it.
As the size of our community grows, so too does the number of different reasons to participate. That naturally leads to conflict. Healthy communities do not shy away from that conflict - they are up-front with one another about their needs, and they work to more deeply understand everyone’s self-interest. They start from that shared understanding to collaborate together to advance the common good. They build a culture of mutual respect and understanding. They create rules and guidelines for decision-making and adjudicating the inevitable disagreements. They learn how to thrive together.
Governance models
We don’t need to invent our own governance model completely. Plenty of examples of successful governance models built on solid and proven open-source principles exist. In fact, the current board has met with lots of projects to learn about what is out there.
I’m a fan of the Apache Software Foundation (ASF), personally. If you haven’t read it, The Apache Way outlines their community-led process. I recommend you read it, but as a quick primer, which is paraphrased somewhat directly:
- Earned Authority: the influence someone has is based on what they publicly contribute to the project, and it doesn’t matter who they work for.
- Community of Peers: people don’t represent organizations. They’re just an individual. Their votes are equal, and everyone is a volunteer even if they’re paid to do the work. And to quote: “Domain expertise is appreciated; Benevolent Dictators For Life are disallowed.”
- Open Communications: all code communication and project decisions are made in public, with transparent records. ASF uses email lists, but we could use Discourse. Note there are a very few exceptions: https://www.apache.org/dev/pmc.html#mailing-list-private.
- Consensus Decision Making: generally working towards consensus, with a backup of voting when necessary.
- Responsible Oversight: To quote: “Rather than detailed rules and hierarchical structures, ASF governance is principles-based”. This part gets in-depth. I recommend you read it.
- Independence: “no organization is able to gain special privileges or control a project’s direction, irrespective of [employment]”.
- Community Over Code: a focus on collaboration and teamwork.
But there are others we could look at: Debian and Fedora have a long and successful history of great governance. The broader open-source community has wrestled with these issues for a long time, and we would do well to start by understanding what they already have learned.
Bootstrapping a governance model
We have three different assets to leverage in bootstrapping Nix’s governance model: the foundation, the board, and the community.
The NixOS Foundation originally existed to collect money to maintain Hydra and the infrastructure that costs money to keep Nix and NixOS going. Over time, it grew to support projects more directly with NLNet grants.
The Foundation must mature to meet the demands of today. For example, its current work on trademarks and copyright. The Foundation should absolutely own the names “Nix” and “NixOS” and the logo. It should create clear rules about their proper use. Nix, the brand, means something to its users and contributors. It should belong to the foundation, in trust for the community.
The Board in its current shape came together in an impromptu Netherlands meeting space last spring. Representatives from several companies met and convinced the existing board it was time to change, and a new board was formed from some of those present as the governance entity for the foundation.
The Community, as it exists today, gathers around the project. It discusses the project, makes suggestions, merges patches, and discusses RFCs. What it doesn’t have is a way to speak to membership more directly or any kind of reasonable democratic process for making decisions about its future.
For Nix to be a community project, we need the governance to be community-first, “from the roots to the leaves.” We should use the Foundation and the existing Board to bootstrap a democratic, community-led governance model. One that takes everyone’s interest into account and ensures that Nix remains, forever, a work by and for its community. With elected leaders, trusted values, and clear guidelines for behavior. That process should cover the entirety of Nix - from our technical decisions to the Foundation’s own governance.
Community-oriented decision-making
At the root of our current problem: who among us is really empowered to choose? In the past, either the community came to a consensus, somebody “just did it”, Eelco chose, or the question died on the vine.
We would need to answer many questions. Who can vote? How do people gain the ability to vote? Where? How? This is certainly large and daunting but a solvable problem - the good work of the Apache Foundation, Debian, and others can serve as guideposts. We can leverage the Foundation, the Board, and the Community to make those decisions together.
Going slowly together
In any project, there are times to go slowly together and quickly alone. I feel it is time we go slowly for a minute. We need to have the conversation together as a community and be clear about how we want to leverage our assets to create great community governance.
This means outlining
- what voting looks like.
- what our board and teams look like today.
- how and when we transition to a new, community-elected board.
- how we continue to maintain our governance structure over time.
This would cost real money and real time, but if it gets us to a transparent, equitable, and, most importantly, community-driven governance model, then it should be worth it to all of us. Getting help from external and impartial experts might be a good idea to help ensure this happens in a timely manner. We will have conflicts along the way. We will navigate it by being honest and clear with each other about our needs. We can come together for the common good of Nix today and into the future.
Notes:
- I was at the meeting in the Netherlands.
- I do own Determinate Systems, Inc., a venture-backed startup working to increase commercial adoption of Nix. We’re still figuring out the details, and our initial work has been a focused and opinionated way to get new users and stakeholders started.
- I am not on the NixOS Foundation board, but my cofounder Eelco Dolstra is the president. I am a board observer, which means I get to attend and talk at the meetings, but I have no vote.