11

I want to distribute my software under license like Creative Commons Attribution - Non commercial - Share Alike license, i.e.

  • Redistribution of source code and binaries is freely.
  • Modified version of program have to be distributed under the same license. Attribution to original project should be supplied to.
  • Restrict any kind of commercial usage.

However CC does not recommend to use their licenses for software. Is there this kind of software license I could apply? Better if public license, but as far as I know US laws says that only EULA could restrict usage of received copy?

gnat
  • 21,442
  • 29
  • 112
  • 288
Nick
  • 219
  • 1
  • 3
  • 4
    What do you exactly mean by non commercial? This is exactly the reason why CC shouldn't be used for software. I think that your best bet is to go with GPL 3, or AGPL 3. – Šimon Tóth Sep 25 '11 at 18:04
  • I think even CC doesn't really like the NC part. It's a big question what might be considered "commercial" – johannes Sep 25 '11 at 18:13
  • 2
    A license can't restrict use. If you look at all the exclusive rights in [17 USC 106](http://www.copyright.gov/title17/92chap1.html#106) you'll see that none of them have anything to do with use. This is why licenses (like the GPL) restrict distribution and modification, not use. – David Schwartz Sep 25 '11 at 21:13
  • @David: Wait, so how do EULAs work with "For educational purposes only", "Not for business/commercial use", "For evaluation purposes only" etc? – SF. Sep 26 '11 at 07:37
  • 4
    @SF: EULAs are agreements (contracts), not licenses (offers). He was asking about a license -- and he couldn't use an agreement, since one of his requirements is free redistribution. (If you have to agree to something to receive/use it, it's not free.) – David Schwartz Sep 26 '11 at 15:59
  • @David, thus could EULA allow redistribution (act of copy without asking permission) in such way that copy receiver (new user) have to agree this EULA to use his/her copy? Same for modification - modified version have to be redistributed under same EULA? – Nick Sep 27 '11 at 09:36
  • @SF: Perhaps some lawyer could come up with some way to make it work, but it seems impossible to me. – David Schwartz Sep 27 '11 at 16:48
  • If someone can figure out a way to use your software to make money (other than by selling it, of course), why do you want to prevent that? – Caleb Sep 28 '11 at 15:03
  • Why do you want to forbid commercial use? And why are you asking that question on a commercial website which uses a whole lot of third-party free or open-source software ... for commercial use? – yfeldblum Nov 27 '11 at 23:01
  • FWIW, I've worked with software with a non-commercial clause, and it was a major pain. I'd be really reluctant to touch such a thing ever again. – David Thornley Dec 27 '11 at 22:39
  • @Caleb Perhaps he would perhaps want [companies that will use the software commercially] to pay some money to him first — the companies might "happily" do that, since they would expect to earn much more money anyway? – KajMagnus Jul 17 '12 at 18:12
  • While GPL does not restrict commercial use, it offers a "poison pill" taht makes it very unattractive for commercial use. – Berin Loritsch Aug 23 '22 at 17:13

4 Answers4

3

Your requirements restrict the use of the software, so at least by the definition of open source from the OSI (definition of open source), it is therefore not open source, so you will find no help in open source licenses. So forget AGPL, GPL, BSD, Apache, MIT, etc.

I also looked at the Aladdin license as suggested by @thiton. This does not restrict commercial use, only sale (just as @thiton pointed out). If that is not strong enough, you may want to start with the wording from, say, MIT license and add you restrictions (but don't call it the MIT license of course, and don't call it open source).

Like crypto, licensing is hard, and rolling your own is tricky. The world doesn't like more licenses (they add friction), and is part of why OSI exists - to catalog and promote existing "good" licenses for open source so people don't roll their own. Hope it works out.

codingoutloud
  • 716
  • 5
  • 8
1

The Aladdin free public license (AFPL) is a typical license prohibiting reselling your code (but using it in-house in a commercial enterprise is allowed). Use with care, though, because of the legal caveats the comments have mentioned, and because most distributions will (for good reason) never include a program licensed under the AFPL.

thiton
  • 5,348
  • 1
  • 27
  • 26
  • Thanks a lot for this info, I don't care if distros won't include my program at he moment, but pity if it has legal problems. – Nick Oct 03 '11 at 19:12
1

I'm not a lawyer, but I'm quite certain that the legal wording of CC isn't suited to software; there are many suitable open source software licenses.

Liberal licenses include ("liberal" here means both open and closed source products can be derived and commercialized) :

  1. MIT License
  2. BSD License
  3. Apache License

Reciprocal licenses include ("reciprocal" here means only open source products can be derived and commercialized):

  1. General Public License (GPL)
  2. Lesser General Public License (LGPL)
  3. Mozilla Public License (MPL)

For your needs, GPL is the best match: free use and redistribution of sources and binaries, reciprocation of any changes released, and derived products must be released under the same license.

Note that even with GPL, commercialization is still possible, albeit with a strong imposition of open source. If you don't want any commercialization, you may have to draft your own license.

0

The argument that the definition of "non commercial" is debatable has nothing to do with the CC license in particular and would equally apply to any other license in the world that has such a clause, so this is no argument against using a CC license for software.

The real reason why CC is not recommended for software is that there are typically different distribution forms for software: Source code, compiled code, transpiled code, etc. and CC does not address that at all, as for other media no such distinction exists. The result is that in some cases it isn't clear if a CC requirement only applies to the source code itself, to either the source code or a compiled/transpiled representation of it, or even to both equally.

Software licenses typically define that compiled/transpiled versions of source codes are not derived works but are in fact the same work in a different distribution form and that for the license it plays no role in what form a work is distributed, the same license conditions apply. Also in case of Copyleft licenses, they also define that whoever distributes a compiled/transpiled form, must also distribute the original source code; again, CC has no such requirement.

If using the CC "SA" attribute, it is guaranteed that derived works has equal protection and BY-SA 4.0 is even one-way compatible with GPLv3 (you can release CC BY-SA 4.0 code under GPLv3 if you like, as GPLv3 enforces all requirements of CC BY-SA 4.0 and even beyond it). So with "SA" attribute, compiled code shares the same license as source code for sure but also forces any work based upon your work to also use that license. That is a problem, if other parts of that derived work use a different license and conditions of that different license make it impossible to release the derived work as a whole under the CC license.

E.g. let's assume I write an app that uses your CC SA code. Because of "SA" my entire app (a derived work) must be released as CC SA. However, my app also uses code under a license that requires that I grant patent rights to users. If I release that app under CC SA, I would not grant those patent rights and thus violate the other license. But if I release it under a license that grants those patent rights, that would not be CC anymore and thus I had violated the SA constraint. So I can mix the source codes in a source repo (unless any source code has a license that also forbids that) and also distribute that source code but there is no license I could use to release a binary built from that source code that would not violate either one of these two licenses.

If using the "NC" attribute, it is not compatible with other software licenses anymore, as other licenses do typically allow any form of commercial usage. You can mix CC NC code with other licenses but only if the CC code stays under CC license on every redistribution.

And the NC attribute is sticky, meaning it will inherit to derived works. Derived works must be released also under a CC NC license or under a custom license with such a restriction and the later one is not recommend as writing licenses is a task for lawyers, not for software developers. If you write a custom license and mess up, your license may have loopholes and not provide the desired or required protection level and in that case the owner of the original work could sue you, as you would then be violating the CC license requirements. So to be safe, you will have release derived works also under any CC NC license, which makes "NC" as sticky as "SA" in practice.

So if you use CC SA or CC NC code for a project, you can mix in code under BSD or MIT or Apache license but the resulting product basically has to be CC SA or CC NC again, which is okay to permissive licenses as BSD/MIT/Apache; they allow the resulting product to have a different license than the the source code, also a more restrictive one and don't require any license requirements to carry over to the final product.

Mecki
  • 1,818
  • 12
  • 17