Not "Any Purpose" (11 Feb 2021)
A program is free software if the program's users have the four essential freedoms:
- The freedom to run the program as you wish, for any purpose (freedom 0).
– the Free Software Definition, emphasis mine
Goddamn, what the fuck?
What the fuck, what the fuck?
Goddamn, what the fuck?
What the fuck?
Goddamn, what the fuck
What the fuck, what the—
What the fuck? What the fuck? What the fuck?
– 745 sticky (Black Dresses Remix)
My previous post on post-open source appeared to resonate with a lot of people, but unsurprisingly, not much has changed since then. Recently, the company Elastic, who makes the database Elasticsearch, changed the license on Elasticsearch from Apache to the Server-Side Public License, which (to oversimplify the analysis of the excellent Kyle E. Mitchell) is AGPL but even more so. And unsurprisingly, as happened with Redis and MongoDB before it, everyone got mad. When I wrote this snippet of my post-open source post, I was referring to Redis, but it's the exact same playbook that's happening again now:
you made a cool database server that's under an open source license? amazon's selling it as a service now, and they're not paying you a fuckin dime. you want to change your license to stop them from doing that? now the open source people are yelling at you, because when they say they're apolitical they mean they support the status quo. and the free software people are also yelling at you, because you didn't do it their way with their license, you did it a different way with a different license, and that goes against amazon's freedom to screw you over.
So we're back here again. Open source ideology leads to intra-corporate exploitation, the exploitees want to get out from under the exploiters, everyone gets mad that the status quo has been upset, and Amazon forks the last permissively-licensed version of the software and laughs all the way to the bank. The only way for Elastic to win would've been to have licensed Elasticsearch under something restrictive like the SSPL from day one.
But since they didn't, we get shit like this:
Capitalism concerns itself with making monopolies — FOSS instead concerns itself with the socialized creation of software wealth.
– some jackass who loves being wrong on the internet
FOSS is not socialist. The free software movement is right-libertarian / "anarcho"-capitalist, and the open source movement is neoliberal; neither of these is even particularly close to socialism. If you want a software ideology that is actually opposed to capitalism, instead of sucking up to capital, you might be looking for the Anti-Capitalist Software License. It's good, it links to my previous writing on post-open source (and the Fuck Around and Find Out License), and the FSF hate it:
The Anti-Capitalist Software License is a nonfree license because it extends the four freedoms only to some kinds of organizations, not to all. Such a restriction in a software license, in the name of any cause whatsoever, imposes too much power over users. Please don't use this license, and we urge you to avoid any software that has been released under it.
What's not to love! As an author of some software released under the Anti-Capitalist Software License, I also urge people who take the FSF seriously to avoid my software which has been released under the ACSL. And my software released under any other license. And just me in general.
Unsurprisingly, Richard M. Stallman (the "M" stands for "Making female students extremely uncomfortable for 30 years") has done some handwringing about the vital importance of Freedom 0's "for any purpose" that we can make fun of. Essentially, his points are
- enforcement against governments or big corporations is impossible because they can just make excuses and dodge jurisdiction and accountability
- for small stuff, ethics vary, so if we accept a thousand orthogonal usage restrictions ("only this music genre", "can't be used in meat processing because i'm vegan", etc) we'll have a shitshow of an ecosystem and everyone will just give up and go back to using "nonfree" software
- who are we as developers to even tell users what they can and can't do with our software? you wouldn't buy a pen that had a "you can't use this pen to do X" on it, right? that'd be ridiculous!
First, lmao, "don't bother doing this because enforcement is impossible" applies equally to copyleft and the GPL in general. Second, if we set aside masturbatory trolling bullshit like Bruce Perens's "Vaccine License", nobody makes licenses that are that narrowly tailored to one specific thing - and even the Vaccine License is still a world away from a hypothetical Country Music Only License or Vegan Software License or what have you. This is a textbook slippery slope argument, and if you think "you can't use this software to violate human rights" is anywhere near "you can't use this software to listen to BTS" then fuck all of the way off. (Although, one time I mentioned on IRC that I was throwing a simple script together in Python, and someone said "Hopefully it's Python 2, but if not I'll just rewrite it in Python 2", so I threw together the Why The Fuck Would You Even Do That Holy Shit Public License to prohibit exactly that.) Third, god damn libertarians hate when anyone tells them that some actions are bad. If I was going to buy a pen, and I saw that it had a "hey, don't use this pen to violate human rights" sticker on it, I would go "fair enough I guess" and just buy the damn pen.
The libertarian position here is that toolmakers should have no say in how those tools are used, and the only way they should control what can be done with their tools is by directly adding or removing capabilities from the tools. Unsurprisingly, the libertarian position here is bullshit. A tool is not a morally neutral thing, and toolsmithing is not an act which must by necessity end when the tool leaves the smith's hands.
Let me now list some of the ethical principles from the ACM Code of Ethics:
A computing professional should...
- Contribute to society and to human well-being, acknowledging that all people are stakeholders in computing.
- Avoid harm.
- Be honest and trustworthy.
- Be fair and take action not to discriminate.
- Respect the work required to produce new ideas, inventions, creative works, and computing artifacts.
Points 1 and 2 are broadly aligned with the idea that software should be used for good, and point 5 suggests that authors should be compensated for their work. As such, ethical restrictions in software licenses are perfectly compatible with this code of ethics, as are restrictions on commercial use. It is possible to go even further than this, and I think I will, because I'm in the mood to start some fights:
In my view, it conflicts with the ACM Code of Ethics to release software under a license which permits ethical misconduct and economic exploitation.