The Trouble with Free Software
To start, let me say that I believe in Free (libre) Software, as it is defined by the Software Freedoms. People should have the right to run the software they have, as they themselves see fit.
That said, there is a lot wrong with open source and free software right now.
Free (gratis) Software
First, and I think foremost, is that we’ve done ourselves a huge disservice in training users into believing that software should be free-of-charge. Through the surveillance-driven ad economy for services, to FOSS adherents who insist they won’t pay for software, to smartphone app stores making it impossible to differentiate between products (and also, making it impossible to make a good product). Few people are willing to pay for software anymore (especially developers for development tools).
This leaves software development to the privileged few who can afford to work for free, either because they work at a company that sees software as a loss-leader for some ad-economy service, or because they have the kind of financial independence or lack of tertiary responsibilities that allows them free time to work, for free.
I cannot imagine how one might be able to replicate the 80s and 90s market where you could do hard work, make a great, common product like a word processor or an email client, and consumers would rejoice instead of snarl, “what do you mean you want money for this?” This consolidates power in the hands of Google, Microsoft, or worse, Oracle.
You Get What You Pay For
Second, we have grown complacent and too accepting of bad software. A lot of gratis software has very little polish (unless it’s being pushed by FAANG). People don’t want to pay for software because they rightly expect to have to try a dozen different packages before they find one that marginally works. Not getting paid means developers don’t have time to put into polish, nor any non-vanity signal to work on anything but neat features. Nobody has time to work on things they don’t want to work on when they aren’t getting paid, and nobody wants to pay for software that doesn’t fulfill their needs. It’s a vicious cycle.
I’m reminded of the problem of “good, fast, cheap: pick two”. The market has basically said, “we want cheap, for sure”. So that leaves either “fast” or “good” on the chopping block. The only good software that is also fast is simple software that only does a few things.
With this comes the ability for any actor of means to easily displace any smaller actor in the market. When a buyout happens, they don’t do it to acquire the technology anymore, they do it to acquire the users. We’ve raced ourselves to the bottom, so the only products we can afford to make are easily replicable by a 10x larger team. Or they don’t even have to replicate it, they just need to dump into marketing the kind of money that would setup any individual one of us for a nice, healthy, “Whatevah, I’ll do what I want” lifestyle.
Those With the Means To Pay, Don’t
Third, because we haven’t fought “free software does not mean gratis”, companies demand software be permissively licensed or they won’t touch it. They get to take your work and never pay you and it’s legal.
Or you could GPL-license your work instead and get ignored by most people, both corporate and FOSS. Corporate won’t touch it because of the stigma against the GPL. FOSS won’t touch it because it’s an insular community that gatekeeps against all but the people most like them. You’re still not getting paid. You get to prove out the market for the corporate overlords, and then they copy your features, release under MIT, and don’t care that they aren’t making money on it, because the only software they make money on is the ad seller console.
What Can We Do?
I don’t have any solutions to the problem, because it’s a cultural problem, not a technical one. It’s a problem 30 years in the making. And it smells a lot like the Prisoner’s Dilemma, or maybe the Tragedy of the Common.
But I have some thoughts on how we can start to improve.
- Grow a spine and a conscience. We need to finally admit that there is no such thing as technology divorced from politics. Software is made by people, for people. Without people, it’s masturbation at best, and the way people interact is generally “politics”.
- Refuse to work in ad-tech. Companies like Google and Facebook benefit the most from FOSS software, without giving comparatively very much back. These ad-tech companies are some of the richest companies in the world, but they’d rather reimplement whatever you’re making than pay anyone not on their payroll. You might say “but they donate to Linux”, but when you see that Google is actively working on their own OS separate from Linux, that seems to be only because Facebook doesn’t think they have the capacity to replace Linux. So stop selling out our fellow citizens for a few bags of silver.
- Start donating more. Even if it’s just a little bit. I give $3 to Wikipedia every month. I give $5/mo to a number of artists and developers on Patreon. It’s not a lot, but it’s better than nothing. If everyone who had the means to give even just “a cup of coffee a month” actually did, things would be a lot better.
- Stop publicly publishing source code. The GPL doesn’t say you have to leave your source lying around in the open. It says you must give it to your users. That’s fine. Users need lovin’ too, they just gotta pay first.
- Start taking a little more pride in our craft. I see people online posting about their projects with the phrase, “I made a thing”. It is a kind of self-deprecation that seems to come from being conditioned into believing nobody is going to care about our software, so why should we care about our own software? Make it so you can care. Software isn’t done until it is documented. It isn’t done until it’s usable without having to install Node and Python, just to run the setup. It isn’t done until it’s compliant with ADA and 508. With pride comes an expectation of remuneration.
- And stop “bucket of crabs”ing our fellow developers. If you don’t like something about a project, that is fine. But don’t call into question their fundamental right to exist. Too often I’ve seen projects cut down because they were “reinventing the wheel” or “just a solo dev”. Reinvention is important, or we wouldn’t have electric cars or faster computers or really anything. And solo devs wouldn’t be solo if you took them seriously and at least tried to put as much effort into supporting them as you put into cutting down their work.
Realistically, I know this isn’t enough. But it can at least be a start. We can’t keep going on like this.