Home

PLF C++ Library - Computing for Good license

Introduction

Unfortunately in the software community we can no maintain the pretense that coding is irrevocably for good, nor that technology for its own sake is a worthwhile goal. Inevitably each useful technology will get used for non-virtuous ends, such as intellectual property infringement, discrimination and fraud. And while bad actors will often ignore license terms - regardless of the specific license, be it GNU, Apache, etc - spelling out intent of use has a valid part in the wider discussion around code, and is largely enforced.

While contentious, ethical licenses seek to mitigate the harm done in the world by software and the people using it. Some such as NoHarm take a route traced by Apache and the like, developing a rigourously legally-defensible license with little flexibility. I am more of the zLib license mindset, where the general understanding is laid out in plain english but the legality is looser, 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 a license based on zLib (with editing for clarification, as zLib can be interpreted incorrectly at times), loosely based upon engaged buddhist ethics for laypeople. These may not be everybody's idea of ethics, and that's alright. If you find you disagree with the terms, you can either contact me to discuss them, or find another bit of software under a different license.

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 groups, companies, individuals or in software whose primary or partial purpose is to:
    1. Promote addiction or intoxication.
    2. Cause harm to, or violate the rights1 of, other sentient beings.
    3. Distribute, obtain or utilize software, media or other materials without the consent of the owners.
    4. Deliberately spread misinformation or encourage dishonesty.
    5. Pursue personal profit at the cost of broad-scale environmental harm.


1 "Rights" in this context refers to the UN Declaration of human rights in the case of humans and additionally the UN convention of the rights of the child in the case of children. For animals, it refers to the UN convention on animal welfare (currently in draft).


Examples of 4's sub-section items follow:

  1. Some forms of social media, lootboxes, gambling, illicit drug companies.
  2. Military software, malware, non-consensual pornography, animal fur farms.
  3. Torrent clients, AI training software which ignores licenses and copyrights.
  4. State-controlled bots, deepfake generation.
  5. Old growth deforestation, cryptocurrency.

Frequently-questioned answers

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

    Perhaps. The restrictions placed upon GPL 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. What's the point of ethical licenses? They'll all conflict with each other and be incompatible anyway.

    Apache, GPL, LGPL, MIT, etc licenses can't necessarily be used together and yet everything seems to work fine in the real world.

  3. Why should source code licenses dictate ethics?

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

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

    Discrimination is a tricky subject area with a lot of nuance. I've opted to subsume that under clause 4d 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 in western countries and will generally be played by one. Or that males are largely responsible for violent crime worldwide. And so on.

  5. Cryptocurrency isn't that bad is it?

    Any linked list, to paraphrase a fellow coder, that uses the energy equivalent of a small country to update itself, is inherently unethical. And it's a ponzi scheme.

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