Open Software for an Open Society

By Ashish Gulhati
16 October 2018


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. (The interview was never published and unfortunately I no longer have the original audio recording either).

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 I agree with him that the reason it's essential to have a free / libre software movement is philosophical, and related to human freedom, not simply a matter of the technical or methodological merits 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 other evil scum.

Free software and open source fail to do this. All of the major free software licenses explicitly protect and uphold the rights of criminals and evil scum 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. Unfortunately 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 brutal history of tyranny and genocide by governments around the world throughout history (which rose to unbelievably staggering levels in the 20th century and is still ongoing with no end in sight), and given that computer sotware is increasingly the key enabler of government tyranny on a massive scale, I think it's utterly obvious and essential 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 software authors 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.

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, and 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.

To do otherwise is nothing short of suicidal. If you don't think so, I recommend you read an excellent play by Ayn Rand, aptly titled Think Twice.

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 opensw at hash.neo.tc 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.

Happy hacking!


Open Software Licenses


Open Artistic License 1.0

Similar to the Artistic License 2.0, without the re-licensing clause, and with a clause allowing for termination of the license to specific entities.


Open Artistic License 2.0

The same as the Open Artistic License 1.0, with an exclusion clause excluding criminal entities, governments, and anti-individual-rights entities..