Home

PLF C++ Library - Computing for Good license

Introduction

Unfortunately we in the software community can no longer hide behind a pretense that coding is irrevocably for good, nor that technology for its own sake is a worthwhile goal. Inevitably each useful technology gets used for corrupt ends, such as intellectual property infringement, discrimination, violence and war. While bad actors will often ignore license terms - regardless of the specific license, be it GNU, Apache or what have you - spelling out intent of use has a valid place in the wider discussion around code and is largely enforced. Enter into this, ethical licenses. While contentious to some, these seek to mitigate the harm done by software in the developing technosphere of the world. Other ethical licenses such as NoHarm take the route traced by Apache and company, by developing a rigourously legally-defensible text with little flexibility. I am more of the zLib license mindset, where the general understanding is laid out in plain english, so that within a paragraph or two, people clearly know the general gist of what they can and cannot do.

To this end I've developed this license based on zLib (with editing for clarification, as in my experience zLib can be interpreted incorrectly at times) and loosely based upon engaged buddhist ethics for laypeople (no intoxication, no harming other beings, no misuse of sexuality, no taking of that which is not given freely, no dishonesty and no environmental destruction). This may not be everybody's idea of ethics, but it is mine - and I would like to prevent my work being used for ill purpose. More will be explained after the actual license terms below.

License

Computing For Good License v1.0

This code is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this code.

Permission is granted to use this code by anyone and for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this code must not be misrepresented; you must not claim that you wrote the original code. If you use this code in software, an acknowledgement in the product documentation would be appreciated but is not required.
  2. Altered code versions must be plainly marked as such, and must not be misrepresented as being the original code.
  3. This notice may not be removed or altered from any code distribution, including altered code versions.
  4. This code and altered code versions may not be used by companies, individuals or in software whose primary or partial purpose is to:
    1. Promote addiction eg. some forms of social media, gambling, illicit drug companies.
    2. Cause physical, mental or emotional harm to other sentient beings eg. military software, ransomware.
    3. Use sexuality in ways which infringe upon the rights of others or corrode trust eg. non-consensual pornography, tinder grifters.
    4. Distribute, obtain or utilize software, media or other materials without the consent of the owners eg. torrent clients, AI training software which ignores license and copyright.
    5. Deliberately lie or spread discord for it's own sake eg. state-controlled bots, deepfake generation.
    6. Pursue personal profit at the cost of broad-scale environmental harm eg. old growth deforestation, cryptocurrency.

Answers to anticipated questions

  1. Won't this be overly restrictive as to use?

    Perhaps. The restrictions placed upon GNU licensed software are more severe. The above license allows use in the vast majority of scenarios, commercial or otherwise. If restrictions were a cause of software demise, I would expect GPL software to be a death knell for a project. Yet here we are.

  2. Aren't ethics subjective and culturally-mandated?

  3. Yes and no. Largely No. We are biological creatures and like all other biological creatures, our biology dictates what we perceive as right and wrong to an extent. Right is largely what serves ourselves and our species as a biological collective. Wrong is largely what opposes that. If we weren't a social species, we would not be so attuned to empathy (well, Most of us) and harming others would not seem so bad. The "golden rule" would not exist. But we are, and we do perceive that. Theft, addiction, sexual abuse and destruction of the local environment are likewise all acknowledged factors in societal harm, which harms survival of the species as a whole. That is why all societies tend to view these things as generally bad.

    But of course, once you get into specifics, there is a lot of variation on these themes within societies, as well as variation as to how much a given society will tolerate of a certain behaviour. But the generalities remain the same. Fight me on this.

    In terms of other sentient species, as our species has surpassed the initial need for pure survival and have moved more into a stewardship of the planet as a whole, many people have started to see other animals as part of our protectorate, and worthy of respect. Again there is variance on this, but most afluent societies have some laws in place to protect the welfare of animals - to an extent.

  4. What's the point of ethical licenses? They'll all conflict with each other and be incompatible anyway.

    Oh - you mean like how Apache, GPL, LGPL, MIT, etc licenses can't necessarily be used together and that causes all sorts of chaos worldwide? You remember that happening? Oh, me neither.

  5. Why should source code licenses dictate ethics? Shouldn't they be neutral?

    They already do. They guard against theft of concept, plagiarism, and in many cases, the use in non-free software. Those are ethical standpoints. All licenses are inherently ethical. It's just that not many of them take into account the broader concepts of generally-acknowledged ethics in society and tend to narrowly focus on intellectual property rights.

  6. But what if we then get christain licenses, muslim licenses, atheistic licenses, jain licenses? Or worse, American licenses, Indian licenses, etc? Doesn't that further divide and fragment the software world?

    Yeah I got no argument against that. It's certainly possible. All I can say is that I've tried my best to make the above license as general as possible. The ethical points discussed are largely agreed on by most societies, with the exception of point F.

  7. Why is there no clause regarding discrimination eg. along gender lines, etc?

    Valid point. I guess discrimination is a tricky subject area with a lot of nuance. I've preferred to subsume that under clause 4E ie. deliberately spreading dishonesty. It's dishonest to state that people born to a particular ethnicity, nationality or gender are less-suitable, for, say, math work. Or that they're less deserving of respect and love. It's not dishonest to state that Santa Claus is assumed to be a older white male and will generally be played by one. Or that males are largely responsible for violent crime worldwide. And so on.

  8. Why focus specifically on sexuality in a given clause?

    Well, ask every religion and society ever. Sexuality is how we procreate and bond to raise children, and as such receives undue attention and emotion compared to other societal activities. It's not a matter of prudishness - this is the way human beings are. If you mess with that in a bad way, you bring up a lot of emotion. Enough that it's reasonably common for people, male and female, to attack and sometimes kill each other over sexual jealousy. This is generally bad for society. Dealing with that topic requires respect, and in some cases restraint.

  9. Cryptocurrency isn't that bad is it?

    Any linked list, to paraphrase a fellow programmer, that uses the energy equivalent of a small country to update itself, is inherently a dangerous and unethical technology. And that's ignoring the fact that it's a massive ponzi scheme.

Contact: footer
plf:: library and this page Copyright (c) 2024, Matthew Bentley