I want to release all my future FOSS projects under a "public domain" license such as CC0. This is in order to avoid the requirement for attribution present in most FOSS licenses, mainly when the code is compiled into a binary, but also when somebody decides to copy a small portion of my code into their own open source project.

So suppose somebody copies a method from my code into their own, which they are planning to release under an MIT license. In order to release the code under MIT, they must claim copyright of the code; but can they claim copyright of the whole if a portion of the code was not their creation? Is that what it means to claim copyright of a derived work?

It may seem strange that somebody could take a piece of public domain code, modify it, and apply a new license to the modified version that imposes further restrictions on its usage, such as the attribution requirement of MIT. But since their additional restrictions would apply only to the modified version and not the original version, this seems legitimate.

My main concern is maximizing the ways in which people can utilize my code, without worrying about licensing requirements, and also to avoid a viral effect where any derivative works have to be themselves licensed under CC0.


2 Answers 2


#include <ianal.h>

Document style licenses are often a poor fit for source code. Of these, the ones that are a gift (and that is a word with legal implications) are the most problematic.

Public domain, as seen in the US, is a gift. In particular, a gift may be revoked for any reason. This makes something that is in the public domain possibly treacherous for open source - when the gift is revoked, it suddenly has back its full copyright protections.

There are also countries that don't recognize public domain at all. According to a creative commons survey countries such as Belgium, Denmark, France, Germany (and the list goes on and on) don't recognize public domain at all, or only recognize it after the copyright has expired. Of the countries that do recognize public domain, many allow the revocation of it if the copyright hasn't expired.

There are anecdotes (I can't find it at the moment) of an open source project that was completely released under public domain that wasn't useable at all in those countries - and so for people there to use and modify the source, they had to get a commercial license (which cost $$$).

So, on to CC0. The key to CC0 is that it has some wording in there to make it a license rather than a gift.

To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver").

Note the 'permanently' and 'irrevocably' words being used. CC0 cannot be revoked. It also goes on to state that the heirs cannot revoke it either (an issue with public domain).

Background reading: http://www.rosenlaw.com/lj16.htm

As to the core question of if CC0 can be sublicensed? GNU.org lists licenses that are compatible with the GPL on Various Licenses and Comments about Them lists the GPL as a compatible license. They also list public domain as being compatible tough note the issues that I raised in the first part... I'm sure that GNU has good lawyers who will fight if something is revoked or there are issues in those countries (on the other hand, I don't and would be vary wary of accepting public domain donations to an open source project).

All that said, CC0 still strikes me as awkward in that the license is different for different countries recognizing different parts being contrary to local law (I know that Creative Commons has done a great job to the best of their ability in crafting this). There are places where parts of the permissive license for CC0 would have difficulty (France - Right to withdrawal or reconsider I am still not a lawyer, much less one versed in French law written in English).

The thing is, programmers who are going to be caring at all about the license already know how to deal with the MIT, or BSD, or GPL. Other licenses require some legal reading for the project as to if you can include them or not.

I'd also point to http://choosealicense.com/licenses/ - scrolling down to the bottom for the "public domain" one, note that the unlicense allows for sub licensing while CC0 does not.

So suppose somebody copies a method from my code into their own, which they are planning to release under an MIT license. In order to release the code under MIT, they must claim copyright of the code; but can they claim copyright of the whole if a portion of the code was not their creation? Is that what it means to claim copyright of a derived work?

Give http://www.rosenlaw.com/lj19.htm a read for background (note that this reading of derative works is in conflict with the GPL's understanding - but since we're not talking about the GPL the reading of it is much more common sense).

There are several ways to address the approach. You could put the function in another library and point out that library is a derivative work, licensed under however it was obtained (which is compatible with the rest of the project). The copyright of the rest of the project is not a derivative work (GPL questions of static and dynamic linking aside - they try to make the derivative work extend to as many things as possible).

For example, if code snippet foo was from an BSD licensed work, you could stick foo in its own library. That would be a derivative work of an apache product and licensed under BSD license. Then the rest of your code would be MIT licensed (for example) and not a derivative work. And since the BSD and MIT licenses are compatible, thats the end of the story.

I just used BSD as an example for your license, but really it could be anything as long as it was compatible with the license I'm using. And while CC0 is compatible with everything - there are other, better understood licenses for software that are similarly nearly universally compatible. The BSD 2 clause or MIT, or Apache 2.0 licenses are ones people understand.

To get the widest use of your code, you should use a license that people know and understand. If you chose something that is less well understood programmers may be less likely to use it because of the possible legal implications that they'd have to ask a lawyer about. If you have to check if CC0 is sub licensable or not, you don't use it. If you see a BSD license, you know what you can do with it.

You could always go with WTFPL.

I am still not a lawyer.

  • I'm glad you mentioned the Unlicense. To be honest, the Unlicense was my first choice. I then started looking at CC0 for the reasons you specified - all the FUD about public domain "not existing" in various places. Still, the Unlicense, though it uses the word "public domain," goes on to define the word in such a way that seems like it would create an valid license in those jurisdictions. "Oh, you don't 'recognize' the public domain? Great! Here's what we mean when we use the term." Legal documents provide custom definitions all the time, do they not? So I don't see what all the fuss is about.
    – luksan
    Commented Jul 18, 2014 at 22:38
  • The difficulty with CC0 (and various licenses that attempt to be public domain) is that in some places, there are things that the author cannot give up. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. This seems to imply that CC0 in one country would have a different reading of CC0 in another country. Note also the bit in the fallback about it being not sublicensable.
    – user40980
    Commented Jul 18, 2014 at 23:33
  • 1
    Well, that is the case with any legal agreement - void where prohibited. I don't see that as an argument against CC0, since as you point out, the intent is to be preserved to the maximum extent allowed by law. I can't see why having 100% freedom in some jurisdictions and 75% freedom (Unlicense) in others is worse than having 75% freedom in all jurisdictions (MIT).
    – luksan
    Commented Jul 18, 2014 at 23:42
  • What I was mainly trying to avoid was the need for somebody to include an attribution with their own code (compiled or otherwise) if they happen to incorporate some of mine. But if this person is correct (and notice how nobody ever responded to them) then this is not even possible: groups.google.com/forum/#!topic/unlicense/qE3z5Ma4b-o. So it goes back to my original question - if you give permission to someone to create a derivative work, can they claim copyright over the entire derivative work without acknowledging the original author (or that portions of the work are public domain)?
    – luksan
    Commented Jul 18, 2014 at 23:51
  • @luksan that particular reformulation of the question has likely delved too far into the realm of the specifics of intellectual property law for a lay person to answer correctly.
    – user40980
    Commented Jul 19, 2014 at 1:18

I regret to say that I think your question as asked is conflicted.

If you genuinely want to maximise the ways in which people can utilise your code then you must (among other things) allow and encourage them to take that code and pretend it's theirs. If you don't want to require any kind of attribution then you must in effect disclaim authorship as well as ownership. Someone who comes across your code must not even need to know that you wrote it. Even if they got it from you they should be in genuine doubt as to whether you actually stole it from someone else.

At some point this becomes a bit silly. There is a tension between the desire for your code to be used (with or without attribution) and the desire to control how it is used. Creative Commons requires attribution and restricts licensing of derived works, which may not be what you want. You may do better with a simple Public Domain notice and just let people do what they want.

Creative Commons have one of those too: http://creativecommons.org/licenses/publicdomain/

As pointed out, public domain is not the panacea. Since it is not a licence (because it renounces the right to even grant a licence) it really has no legal status and some potential users may not trust it. However, it is a pretty strong indication of intent and may suit your purposes. You could always give up coding, of course.

  • There are many problems with public domain and code. Some countries don't recognize it. Others recognize it, but also recognize it may be retracted (it is not a license) which causes even more legal problems. Give linuxjournal.com/article/6225 a read.
    – user40980
    Commented Jul 18, 2014 at 4:58
  • @MichaelT: Yes, I know. Got a better suggestion? See edit.
    – david.pfx
    Commented Jul 18, 2014 at 10:45
  • "You may do better with a simple Public Domain notice and just let people do what they want." That is more or less what CC0 is. CC0 is a "public domain" affirmation that degrades to a permissive license in countries not recognizing public domain status. It also doesn't require attribution. creativecommons.org/publicdomain/zero/1.0/legalcode
    – luksan
    Commented Jul 18, 2014 at 13:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.