One difference of working on open source vs. a company

(perhaps I should’ve said community-led open source instead, but I think this still applies even if that might not be completely true)

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 affected by judgement of their titles and their position in the hierarchies. This kind of judgement leads to senior folks and bosses having a lot of gravity, for example. 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. “X said that, so we should do it” (or some variation of this) is what folks end up thinking.

This can lead to subpar solutions, slightly offset by the fact that sometimes the people with higher titles/positions actually have the experience and knowledge to show for it. But it almost always leads to an environment that inhibits growth, creativity, and collaboration.

In open source (and specially when it is community-led), there are often no titles involved, or a minimum amount of titles (e.g. “maintainer” or “project lead” or whatever). Hierarchies are almost non-existent as well. People approach each other on the same level, and argue on equal grounds (or something closer to equal grounds). When someone pulls up the “I’ve contributed more than you” card (or a similar argument), this is seen as rude behaviour and frowned upon, because there is an agreement that the community’s input is part of what nurtures the project. This leads to discussions 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. It’s an experience that I’d recommend most people to have at least a few times. I wish it were easier to get paid to work on open source like this. I think this would make more people happier about their jobs.

Obviously, this is just one difference between both environments, and even though I think it is a considerable difference, it doesn’t lead to automatically “open source good, company bad”. Besides, even in open source discussions, there are other issues that affect discussions and decisions.

As social creatures, we’re always judging our position compared to others, so folks will still be judged by the amount of contributions they’ve made, the quality of the contributions, how long they’ve been part of the project. There’s also ego involved. Some open source projects might be organised in teams, and these teams may have their own private communication channels, which alienates the community a bit. All of this is true (up to a point) at companies as well, so it feels ok not to focus on this because it’s something that will exist no matter what.

The fact that most open source contributors are volunteers also affects the way folks interact. If they’re not obligated to be there, it’s harder to force people to do something they disagree with. Obviously, if disagreements can’t be resolved, in the worst cases this will lead to at least one of the sides leaving the community. At companies, the incentive to keep your job does wonders to get people to agree to do some kind of work, even if they disagree with it.

However, I think that since most people who choose to volunteer on an open source project are doing that through intrinsic motivation (or something way closer to it), there is also a really strong incentive for disagreements to be resolved. After all, everyone wants to continue contributing to the project and have it grow. So I think that while the volunteer aspect influences interactions, it’s not as big of an effect as it seems to be at first.

This realisation helped me position some thoughts I’ve had about ways companies can be better run, because the ideas I have in my mind are about creating an environment in which things work more like an open source project, and less like the standard company of today. I hope it makes you see things from a different angle as well, and better yet if it makes you try contributing to some project out there.