One difference of working on open source vs. a company

A couple days ago I had a few interactions when working on Nix-related stuff that made me think about this one difference between working on open source projects and working at a company.

At companies, we are given titles and we are part of hierarchies that directly shape our relationship with other people at the company. It is difficult to see people interacting without being judged by their titles and their position in the company’s hierarchies, which leads to senior folks and managers to have outsized influence. In pathological cases (which are sadly common), people hold back on discussion or voicing disagreement because someone with a higher title/position said something different.

This leads to subpar solutions and projects, slightly offset by the fact that sometimes the people with higher titles/positions actually have the knowledge and experience to make up for it. In any case, it leads to an environment that inhibits growth, creativity, and collaboration.

In community-led open source, there are often no titles or a bare minimum amount of titles involved (e.g. “maintainer”, “project lead”, “contributor”, and that’s mostly it). Hierarchies are almost horizontal as well, and rarely deeper than 2 levels. People approach each other on the same level, and argue on equal grounds (or something much closer to equal grounds). Invoking their position in some hierarchy is seen as anti-social behaviour, because there is an agreement that the community’s input is part of what nurtures the project. This leads to arguments that are rooted on their own merits rather than weighted by people’s titles.

This is a refreshing environment for people who are mostly embedded in company environments, and I recommend most people to experience it at least a few times. It’s possible more people would be happier about their jobs if companies also adopted similar practices.

Obviously, this isn’t to say that “open source good, company bad”. As social creatures, we’re always judging our position compared to others, so folks will still try to position people based on “merit”: the amount of contributions they’ve made, the quality of their contributions, how long they’ve been part of the project… This happens more often and more implicitly in open source projects (most open source contributors are volunteers), but can also happen in companies, especially when people’s titles become divorced from merit. As a result, discussions and decisions can be affected by this implicit positioning, and that’s where I see project/company culture exerting positive impact to bring things back to rationality. Some open source projects might be organised in teams, and these teams may have their own private communication channels, which alienates the community, becoming yet another obstacle for healthy discussion and contribution.

Here’s how I see these implicit factors affecting open source projects the most: given that most people are volunteers and not obligated to be there (i.e. it’s not their job to be there), it’s harder to get people to do something they disagree with, so when discussions are implicitly influenced by these factors and lead to suboptimal decisions that aren’t backed by rational arguments, the volunteers will choose to leave the community. This leads to future decisions being more prone to influence by the implicit factors, and this can easily become an unhealthy cycle.

I think this is partially countered by my observation that most people who choose to volunteer on open source projects are doing that through intrinsic motivation (or something way closer to it), so there’s still an incentive to resolve disagreements so everyone can still be part of the project’s community. After all, everyone wants to continue contributing to the project and have it grow. It’s fundamental for open source projects to respect their contributors’ intrinsic motivation and nurture a healthy community to maintain this incentive to resolve disagreements and avoid the community spiraling into an echo chamber.