Open Software for an Open Society
There’s something about “free software” that has troubled me for two and a half decades, ever since I first started using and developing free software, and thinking about it.
I discussed some of my doubts with Richard Stallman, the originator of the free software movement, when I interviewed him in 1994. Unfortunately the interview was never published and I no longer have the original audio recording.
What I find troubling is the conception of the rights of users, as enumerated in the GNU General Public License (GPL), as well as in prior and subsequent free software licenses, only within the very narrow sense of the rights to use, copy, modify and redistribute the code.
But what about the broader individual rights of the users, and of everyone that might be affected by the code?
The development of technology always raises ethical concerns, and software is no exception. If anything, because software controls everything in the modern world, the ethical issues around software are of the highest importance.
I agree with Stallman that “software developers have an obligation – a moral obligation – to respect users’ freedom.” And that free / libre software is important for reasons related to freedom, not simply for the technical or other advantages of an “open source” development model.
But I don’t think Stallman got it quite right with free software and the GPL. (And “open source” just went further in the wrong direction by distancing itself from the philosophical basis of the free software movement).
The problem is that by granting everyone the rights to use, modify and distribute your software, you’re granting that right to criminals and other evil entities as well. Entities who might use your code to attack the freedom – the individual rights – of other human beings, possibly even you or your loved ones.
That doesn’t make any sense.
And it isn’t ok to say that software rights trump individual rights. They don’t.
So the free software movement got something very fundamental very wrong. And so did the “open source” faction that splintered off from it.
As a result we have companies like Google and Facebook, engaged in mass surveillance on an unprecedented scale, in censorship and suppression of free speech, and all manner of other despicable acts inimical to the individual rights of billions of people, championing themselves as leaders of “open source” software.
And they’re freely using and profiting from code written by people who, I hope, would have some very serious ethical problems with their code being instrumental in enabling a totalitarian surveillance state, or in censoring the very concepts of freedom and individual liberty out of existence for over a billion people in China.
It’s the responsibility of the inventors and innovators of new technology to do their best to prevent it from being used by criminals and violators of individual rights.
Free software and open source fail to do this. All of the major free software licenses explicitly protect and uphold the rights of criminals to use, modify and distribute the software, elevating these rights above everyone’s individual rights.
This is really not ok.
I’ve known this for a long time. For various reasons, I didn’t get around to doing anything about it till now.
In a September 1993 review of Linux 0.99 for PC Quest magazine, I used the term “open software” to describe Linux. An “Open Software Foundation” also existed around that time, though its conception of “open” was very different from the sense in which I used the word in the review.
I had recently read Karl Popper’s The Open Society and its Enemies, and it was in the spirit of his “open society” that I used the word in the term “open software”.
I think it’s well past time to bring back the term “open software”, to refer to software based on respect for individual rights, which is also the foundation of an open society.
Open Software, as distinct from free software and open source software, upholds individual rights as absolute. Authors of Open Software recognize that software rights are derived from individual rights, and are not irreducible primaries.
In practice, the main difference is that Open Software licenses protect authors’ rights to terminate a license grant to anybody, at any time, and for any reason, and to exclude certain entities from the license grant.
The ability to refuse to associate with or do business with any entity is a natural right of all individuals and businesses. Free software and open source licenses deny software authors this basic right, or at least fail to explicitly protect it.
It’s also a good idea, as pointed out above, to not freely license one’s code to criminal violators of individual rights.
Given the history of tyranny and violation of individual rights by governments around the world, and given that computer software is increasingly the key enabler of government tyranny on a massive scale, it follows that Open Software should not be freely licensed to any government entities either.
As it’s trivial for criminal entities or governments to contract with third party individuals or companies, and use these associations to try to get around license exclusions, all such entities need to be excluded from Open Software license grants as well.
Finally, we should exclude all entities that promote actions or ideas that are inimical to individual rights. Open Software is based on a philosophy of respect for individual rights, so why should it be freely licensed to those who oppose those rights?
Of course, different people might interpret this last class differently, depending on their level of understanding of individual rights, and most people unfortunately don’t have a very good understanding of this (maybe kinda important?) topic.
That doesn’t mean that an objective definition of individual rights doesn’t exist or that it isn’t possible to identify with a high degree of precision and accuracy entities and ideologies that are clearly in fundamental opposition to individual rights.
In edge cases, I think it’s ok for the developers concerned to make the decision. I’d suggest that erring on the side of denying licensing to an innocent party is better than the opposite error of licensing freely to an entity that should be denied.
The Open Artistic Licenses
As none of the existing free software or open source licenses really respect individual rights - not of software authors, not of users, and not of others who may be affected by a piece of software - we need new licenses for Open Software.
I’ve worked out two Open Software licenses - the Open Artistic License (OAL) 1.0 and the OAL 2.0.
Both licenses are based on the Clarified Artistic License and the Artistic License 2.0, which have traditionally been used by various Perl distributions and modules.
The OAL 1.0 is quite similar to the Artistic License 2.0, but it removes the re-licensing clause, and adds a clause allowing for termination of the license to specific entities.
The OAL 2.0 is the same as the OAL 1.0, except that it adds a clause listing pre-excluded entities, to whom the license does not apply. This includes all criminal entities, all government entities, all entities that support anti-individual-rights actions and ideologies, as well as all associates of any of these.
Excluded entities under the OAL 2.0 are permitted to redistribute the software, and to execute any included test suite as part of their participation in an automated testing network, but not to use, examine or modify it in any other way.
I’m re-licensing most of my code under the OAL 2.0, and I urge all straight-thinking hackers to do the same.
The OAL 1.0 is intended as a transitional license. You can switch your code to this license from the Artistic License 2.0 and the main thing that changes is that you explicitly retain the right to terminate the license grant to anyone at any time, and the code can’t be re-licensed under a different license.
If you don’t immediately agree with the reasoning for the OAL 2.0, you can still switch to the OAL 1.0 to retain this basic right, and switch to the OAL 2.0 once you’re satisfied that that’s the right thing to do.
You may also wish to use the OAL 1.0 in some other specific situations. Here’s one example:
Many websites use Google’s reCAPTCHA plugin to tell humans apart from machines. reCAPTCHA is extremely privacy invasive and might be a mechanism to achieve other evil purposes as well. I’ve writtern a perl module, Authen::TuringImage, which enables one to achieve the same result without any privacy invasion or reliance on Google. I’ve released this module under the OAL 1.0 because even if evil entities use it in preference to reCAPTCHA, which is currently ubiquitous, the overall impact on individual rights would be positive. So in this specific case, I decided to go with the OAL 1.0.
The concept of Open Software is bigger than just licensing issues. Open Software is designed with respect for individual rights. A surveillance or censorship system released under an Open Artistic License isn’t Open Software.
With our amazing modern computers and the great edifice of 21st century technology, we stand on the shoulders of giants. And none of those giants and none of this technology would be possible without the foundation of individual rights.
Software developers need to take responsibility for their code, and stop licensing it freely to those who would use it to attack our individual liberties and undermine the very foundations of the massive technology stack we’re balanced right on the very top of.
If you license any of your software under an Open Software license, or if you create a new Open Software license, please drop me an email at open at opensoftware.ca and I’ll be happy to link to your project from this site. Please feel free to get in touch with your questions and comments as well.