You do harm by creating alternatives
In the free software world there is an attitude that making free software can never be a bad thing. There's an intuitive logic to it: if people don't need it, they can choose not to use it. They'll only use it if it benefits them. But this analysis is mistaken for several reasons.
Discovery and burying
The logic assumes that users can review all alternatives to find the best one. But they can't; there are already too many programming languages, too many Linux distributions, too many messaging systems, for anyone to research them all and make an informed decision. They can only research a few, and your project occupies a slot in that capacity, so when you add a poor alternative, you reduce the probability that they'll find a good one.
if you take issue with such objective comparisons
Documentation has some great examples of this.
The monad tutorial fallacy
MDN, Mozilla's web developer documentation site, is straight up better than W3Schools, but W3Schools results often show up first in Google. Thus, W3Schools' existence is harmful.
I don't have the link, but I remember seeing someone associated with the SQLAlchemy project complain that people often showed up looking for help with SQLAlchemy because they followed a tutorial other than the official one and missed out on essential information. Those tutorials, while well-intentioned, were harmful.
Selection isn't made with perfect information
People can't always know which alternative is best for them *before* investing in one. Often the reasons why something is inferior are only apparent after using it for a while, and at that point, switching to a better alternative can involve throwing away a lot of work and experience.
The amount of duplicated effort when you make a new thing isn't just your effort to make the new thing itself. If you make a new programing language, thousands of people are going to write libraries for it that already exist for other languages. If you make a new Linux distribution, thousands of people are going to package software for it that's already packaged for other distributions. Etc.
All that effort spent on your project, most of it by people other than you, is *instead of* effort spent improving existing projects.
I'm obviously not saying that we shouldn't try to invent better alternatives to the things we have. I'm pointing out that we and others pay costs besides that of creating the thing itself, and so:
- We should only promote our inventions if we think they're better than any existing alternative for at least a significant range of use cases.
- When we believe this doesn't apply to a thing, we should work to abandon that thing and promote better alternatives in its place.
When I found the Ubuntu command-line tutorial I scrapped my own half-assed one - unpublished it.
Ubuntu commmand-line tutorial
subscribe via RSS