Nadia Eghbal wrote an interesting overview of the history of software development — the nuts and bolts of how the future is being iterated — with a focus on open-source programming. In the 1980s:

“Sequoia Capital funded Oracle to make database software. IBM hired Microsoft to write MS-DOS, an operating system for their PC.

Suddenly, the idea of free software seemed insane. Software was a commodity; if you could make millions of dollars charging for it, why wouldn’t you?

Writing free software became a political act of defiance, and a strong counterculture rose around it. If you wrote open source, you weren’t like Oracle or Microsoft. People who wrote free software believed in its potential as a platform, not a product.”

Now open-source software is a significant part of the status quo — every single computer-based company uses it, and the startup ecosystem would flounder without it — but the idealistic pull of OSS remains strong. People join because they want a communal project as much as they simply want to build something. However, trying to generate consensus is incredibly frustrating and the effort is often fruitless. Eventually, project maintainers must make and enforce decisions.

Currently there’s a big hubbub among contributors to the programming language Ruby about whether to adopt a code of conduct. It seems silly to me — the human race invented rules for a reason — but people are very distressed. The worry is that controversial developers will be attacked unfairly, that they’ll fall prey to petty “SJW” vendettas. On the other hand, proponents of codes of conduct point out that articulating anti-abuse norms is powerful.

Ideologically, I tend to side with codes of conduct, but I also believe in self-determination. If the majority of the Ruby community doesn’t want one, and open-source initiatives are specifically meant to be defined by participants… what’s the fair solution? Should a project maintainer decide one way or the other, as I indicated above?