11

I am a library developer. I want to open source it soon, but I'm not sure what license will work best for me.

My main concerns are:

  1. I want to provide a commercial license for somebody who is willing to pay on top of open source one (LGPL allows it, right?)
  2. I want to allow the usage in commercial projects (not sure what to do here, because LGPL has dynamic linking exception, but iOS is one of the platforms I'm targeting and on iOS static linking is still most popular option)
  3. I want to be capable to merge any derivatives back without any permission from somebody who made modifications without preserving any of the credits of modifier. As well I want to have my copyrights on all the code, does not matter where from it comes, merged back from a fork or written in-house. Basically I need a license, that states that modifier waives any claims or demands to the modifications he made.
  4. I want to forbid any third party to re-license the code and/or change copyright and credits.

I'm not sure if this is trivial or not, but I will greatly appreciate any suggestions.

The problem is that I want to monetise the software. I want to make it available free for open-source community, but I don't want any claims from any contributor (this does not mean that there will be no contributor list, though). I just want to preserve the right to merge anything back without any permission, so I want a license, that explicitly states, that modifier waives any claims and understands, that even his credit might not be preserved.


Some interesting stuff discovered during my research. This thing I'm looking for does seem to be possible. Here is an example of FSF recognised license: http://directory.fsf.org/wiki/License:QPLv1.0 Take a look at section 3b.

  • 1
    What is the problem with maintaining a list of contributors in the project? – ratchet freak Aug 11 '15 at 8:08
  • The problem is that I want to monetise the software. I want to make it available free for open-source community, but I don't want any claims from any contributor (this does not mean that there will be no contributor list, though). I just want to preserve the right to merge anything back without any permission, so I want a license, that explicitly states, that modifier waives any claims and understands, that even his credit might not be preserved. – strannik Aug 11 '15 at 8:13
  • 1
    @Daniel It would be much much better to ask that question in the UPDATE as a separate question! It's a good question, so give it its own dedicated space for answers. – curiousdannii Aug 11 '15 at 12:48
  • 1
    @Daniel It would be best for yourself, and the entire community for you to post different questions, except for placing "updates". Doing so brings the possibility of invalidating answers. Having added updates, your question is also quite broad. – Zizouz212 Aug 11 '15 at 16:24
  • 1
    Apple has pretty much done all they can to keep GPL derivatives off the iPhone. – Joshua Aug 11 '15 at 19:00
11

I want to provide a commercial license for somebody who is willing to pay on top of open source one (LGPL allows it, right?)

As a copyright holder you always have the option to dual license your works under any licenses you choose, including proprietary/commercial licenses. If you want to do so with others' contributions then you would be wise to get them to sign a Contributor License Agreement first.

I want to allow the usage in commercial projects (not sure what to do here, because LGPL has dynamic linking exception, but iOS is one of the platforms I'm targeting and on iOS static linking is still most popular option)

I believe LGPL should allow this. You can also specify additional exceptions just to make sure that it will be okay.

I want to be capable to merge any derivatives back without any permission from somebody who made modifications

I don't believe any FLOSS license requires you to publish all changes (i.e., forbidding private derivatives), if that's what you mean. If you're talking about published derivatives, then any copyleft license would require those derivatives to be published under a license that would allow you to merge them back in. But note that they retain copyright for their own changes.

without preserving any of the credits of modifier.

I don't think you'll find any FLOSS license which allows this - it is against the general principles of the movement, and possibly against the law.

As well I want to have my copyrights on all the code, does not matter where from it comes, merged back from a fork or written in-house. Basically I need a license, that states that modifier waives any claims or demands to the modifications he made.

If you want a FLOSS license this will not be possible - either you don't allow any derivative works, or you allow derivative works by allowing forkers to copyright their own changes. But again, you can use a CLA to get anyone contributing their code directly to you to transfer their copyright to you (but this may deter contributions.)

I want to forbid any third party to re-license the code and/or change copyright and credits.

Most copyleft licenses do not allow you to re-license the code, except perhaps to a later version of the same. If you do not want that, you can usually specify so. No license will allow someone to change the copyright and credits.

  • 1
    Great answer! Thank you very much. I have a bit of concern on your opinion about merging back the changes with/without signing CLA. I am currently researching the subject myself as well and it looks like there are some licenses allowing this, as an example you can take a look at opensource.org/licenses/MS-PL, which does seem to be a valid FSL (at least here they say so gnu.org/licenses/license-list.en.html). What do you think? Is there any possibility to avoid CLA? May be just merge it into the LGPL license? – strannik Aug 11 '15 at 9:29
  • 1
    @Daniel you can always merge in changes from derivatives of copyleft projects, what you need a cla for is to claim the copyright of those changes, or to relicense the combined work – curiousdannii Aug 11 '15 at 9:45
  • 1
    @Daniel The only way to avoid CLAs and remain free to dual-license the work without getting the permission of all contributors is to accept only bug reports and feature requests, not patches. – Kevin Krumwiede Aug 12 '15 at 3:21
  • 3
    @Daniel The QPL 3b section only states that you get to merge derivatives for free. It does not state that you get to say you are the author of these derivatives. Indeed, this would be illegal in several countries. – TonioElGringo Aug 12 '15 at 8:16
  • 1
    @Daniel Yes, QPL allows you (as the initial developer) to distribute derivatives with other licenses. You still have to preserve credits and copyrights for these works (you can't say it's all your work), and I believe you have to keep licensing future versions with QPL. – TonioElGringo Aug 12 '15 at 8:40
6

The combination of conditions you set don't meet the Open Source Definition as set by the OSI.

From the Annotated Open Source Definition:

  1. Derived Works The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software. Rationale: The mere ability to read source isn't enough to support independent peer review and rapid evolutionary selection. For rapid evolution to happen, people need to be able to experiment with and redistribute modifications.

You don't want to allow people to make derivatives of your work and hold copyright to it. That makes it fail the open source definition.

So what can you do?

Well, you could write up and find some non open source license, and call it open source because it meets your personal definition of open source, even if it's not a widely recognized definition.

However, I think we can do better than that.

If, for now, we drop the requirement that all those creating derivative works signing over the copyright to their code to you, what can we do?

The rest of your requirements seem to be met with the Mozilla Public License. This license is a per-file license that allows for any kind of linking.

Some have created, what are essentially the LGPL + static linking exception. This is the route taken by, for example, 0MQ. There are concerns with this approach though, as this creates a crayon license, and 0MQ is moving towards the MPL itself.

If we take the MPLv2, let's take a look at your conditions:

  • "I want to provide a commercial license for somebody who is willing to pay on top of open source one"

If you own the copyright to everything you want to license commercially, then yes.

  • "I want to allow the usage in commercial projects".

From your comment after it, it seems you want to allow linking against your library, and allow the entity that does this to distribute the combined work under a non-free license. This is allowed in the MPL.

  • I want to forbid any third party to re-license the code and/or change copyright and credits.

This is the standard. Note that you do want to allow a "third party" (I'm sort of losing track of parties here. If you're the first party, then who is the second party? And who is the third?) to create works under a different license, owning the copyright themselves, if they merely link to your library.

So what can we do with your third point?

An often taken route is to let contributors sign a CLA - (individual) contributors license agreement, CAA - Contributors Copyright Assignment. In a CLA, a contributor to your library agrees to grant you a license that allows you use and to re-license their work. In a CAA, they agree to assign the copyright to their patches to you.

Note that both work by the agreement that you only allow patches from contributors who have signed the CLA or CAA. This doesn't restrict forks in any way.

This allow you to take contributions from the community offered to you under the CLA/CAA, and incorporate it in your non-open fork.

This is the closest you can approach your requirements, and still be open source as it is commonly understood.

Harmonyagreements has a tool that can help you set up a CLA/CAA

  • Hi, thanks a lot! It clarifies some things a lot. You didn't get me correctly about restrictions I want to put on it, though. I am actually wondering if there is a possibility to "inject" CLA/CAA inside the license, under which the project is distributed. I want to allow to create any forks and let the project live. I want to retain the right to merge back any changes of any spawned forks without asking for permission and without explicit signing of CLA/CAA. I want this to be explicitly stated in the original. Something like "you don't agree - don't fork/use/make modifications/etc." – strannik Aug 11 '15 at 9:56
  • It's possible to "inject" a CLA/CAA into the license. That's the first option I gave: create your own (or borrow) a non open source license (this combination of terms wouldn't meet the open source definition). Do note that making derivative licenses is very tricky business: see opensource.stackexchange.com/questions/1445/… – Martijn Aug 11 '15 at 9:59
  • I understand what are you talking about. I don't understand another thing though. Why does it make the license not an open-source one? You are still allowed to create forks, you don't have to report anything, you just have to forget about your copyrights... Moreover, as far as I'm concerned MS-PL and MS-RL are recognised (at least according to gnu.org/licenses/license-list.en.html) open-source licenses and they do this stuff. What am I getting wrong? – strannik Aug 11 '15 at 11:23
  • 1
    @Daniel neither the MS-PL nor the MS-RL do this AFAIK. Which clauses are you referring to? – Martijn Aug 11 '15 at 12:02
  • 1
    @Daniel You need to read it in full and tell us exactly what you're talking about. – curiousdannii Aug 11 '15 at 12:52
5

I want to provide a commercial license for somebody who is willing to pay on top of open source one (LGPL allows it, right?)

None of the FLOSS licenses are exclusive licenses. This means that as long as you're the sole owner of the project's copyright, you're free to dual-license it under some FLOSS license (including LGPL), and a commercial license.

I want to allow the usage in commercial projects (not sure what to do here, because LGPL has dynamic linking exception, but iOS is one of the platforms I'm targeting and on iOS static linking is still most popular option)

LGPL has a very broad linking exception (it covers all types of linking) that allows linking of code under LGPL to a commercial project without buying a commercial license. Your dual-licensing business model will not work with LGPL. Nor will the dual-licensing work with any permissive license. Dual-licensing only works with strong copyleft, such the GNU GPL (because some commercial clients may be willing to pay for a commercial license to escape the copyleft obligations).

I want to be capable to merge any derivatives back without any permission from somebody who made modifications without preserving any of the credits of modifier. As well I want to have my copyrights on all the code, does not matter where from it comes, merged back from a fork or written in-house.

There is no way you can do this under any real free software license.

You can ask people to turn over their copyright to you by having them sign a legal document called a Contributor License Agreement (CLA). But if they don't want to sign your CLA, they don't have to.

Basically I need a license, that states that modifier waives any claims or demands to the modifications he made.

There is no license (free or not) that does this. What you're looking for is a contract of employment. People sometimes sign these, but not without a reasonable expectation of being paid.

I want to forbid any third party to re-license the code

A copyleft license, such GNU GPL, don't allow sub-licensing, so that should be OK.

and/or change copyright and credits.

They can't remove your copyright or credit (but if it is under a FLOSS license, they can use it and fork it).

However, you can't stop anybody for copyrighting their own improvements/modifications and then refuse to sign the copyright of those over to you.

And if you introduce a CLA that suggests they sign their copyright over to you, expect that somebody takes your code and fork your project as a free/libre project that people can contribute to without signing any CLA.

Is it possible (legal?) to add CLA/CAA inside the LICENSE of the project?

It is a free country, so it is possible and even legal to destroy a good license with nonsense (this is called a "crayon license"), but it won't do what you want.

How enforceable is it in case of a breach?

Not at all. Simply, by doing this, you've created a crayon license with conflicting terms. Such things are generally not enforceable through courts at all.

If you want to enforce such strange terms, you need to have the other party sign something that is separate from the software license (e.g. a CLA, a CAA, or a contract of employment) - not just "violate" some arbitrary restriction that you want to impose on others.

The main idea is to allow all the forks and everything, but make every one who modifies the software to "sign" the CLA/CAA, not just the ones who want to merge back. So, if I would merge (find merged) LGPL and CLA/CAA into one combined license, would it be legal

It would be legal in the sense that there is no law against creating a license that does not make sense.

and enforceable in a case of breach?

Not enforceable.

The problem is that I want to monetise the software.

No, the problem is that you want to monitize somebody else's software.

There is absolutely no problem with you selling your own software under a commercial license. The problem starts when you want to take the work of others and re-license it under a different license than the license they offer their work under.

According to copyright law, you cannot do this without permission from the person who created the work.

I want to make it available free for open-source community, but I don't want any claims from any contributor (this does not mean that there will be no contributor list, though). I just want to preserve the right to merge anything back without any permission, so I want a license, that explicitly states, that modifier waives any claims and understands, that even his credit might not be preserved.

The license you ask for does not make sense.

For obvious reasons, no such license exists. And even if you did create one such a "license" yourself, it would not be enforceable unless you can get people to sign a physical paper copy of it and give that signed copy to you.

  • In the last sentence you mentions, that it's enforceable by signing a paper only. What is the difference? May be I don't understand something, but if there is something like "If you don't agree with this LICENSE, don't use the software, don't modify and delete all the copies. If you are using the software, you automatically agree to ALL the terms without any exceptions" how does it make any difference? – strannik Aug 11 '15 at 14:09
  • 1
    I think he's saying that it doesn't make sense to take an open source license and then add terms to do what you want, because your goals are completely incompatible with the open source movement. – curiousdannii Aug 11 '15 at 14:13
  • 1
    The difference is enforceability. If you have someone's signature, that person cannot deny ever seeing the document. If you just write: "If you are using the software, you automatically agree to ALL the terms without any exceptions." that person could simply say that he used the software without seeing that term, so he's not bound by it. To make that term "stick" in court, you need to be able to prove that the person read that term. Without a signature, you'll have a hard time proving he saw that term. Also: shrink wrap license. – Free Radical Aug 11 '15 at 14:16
4

This answer is an experiment; you and others may not like it, but we'll see.

You write that you wish to make money with code you plan to publish with a (more or less) open source license. You might want to carefully consider your goals here.

The FSF did not write the GPL to help you do this. In the FSF's picture of the world, all software (at least) would be free (in their sense), and so no one would ever need to pay for a commercial license to circumvent the GPL. You, I, and everyone else would be paid for our labor as consultants, developers, teachers -- but not for licenses for our IP. Many people have attempted to arbitrage industry distaste for the GPL by offering a GPL + commercial license. However, unless your library is a true killer application, you are not likely to make a living this way. The first question people will ask themselves is, 'Can I find a non-virally-licensed alternative?' The second question is, 'Can I build it myself for about the same cost?' The third question is, 'Do I want to depend on this person actually having clear rights to sell me a license at all?'

And, of course, if they are building an in-house application and not redistributing, they can do that under the GPL.

If you make your own crayon license, you will cast the third question into high relief, and the people with the most money to spend will become chary of doing business with you. The same applies to the less popular non-crayon licenses. It's the business equivalent of a 'code smell.'

So, to return to the original goal: you wish to monetize your labor. What are your choices? (1) no FLOSS or free-as-in-beer license at all. You do sales and marketing like all the rest of us working stiffs. If you've built a better mousetrap, the mice will come. (2) You accept the framework of the free software movement entirely, and look to make money as a consultant and feature developer of your own code. (3) You do the usual dual-license thing, and accept that others are free to make derived works and do other things that you don't like. If your version is superior, people will pay you for it. If someone else makes it into a better mousetrap, well, they will take market share.

  • you have a very interesting point of view. Fair enough, that you version must be of superior quality, no doubts here. At lest I want to avoid any collisions with forks that implement obvious feature or do a bug fix before I do (I don't want any claims from others that I took their code directly or indirectly). No one forbids to try to build a better mouse trap... fork, advertise, sell (still as open source)... For the dual-license, I want the free one to cover majority of cases (like LGPL) and sell to those only who somehow do not fit (or does not want to put the reference). – strannik Aug 11 '15 at 19:57
2

Open Office under Sun used this model. The code was LGPL, but all contributors had to sign over their copyright to Sun, who sold a version of OOo as the non-free Star Office. This was part of the impetus to create Go-Open Office, and later LibreOffice. you can find more information on slashdot.

You could implement this model with by requiring any contributor to sign or otherwise express agreement with a document similar to the following before accepting a Git merge request:

I hereby relinquish all copyright claims against ... code, patch, files, ... to Daniel Tabasco and any agents of Daniel Tabasco ... I understand that the code may be used for commercial purposes ...

If the OP wants to prevent forks of his project, he may want to consider the Mozilla Public License. I'm not sure of the details, but somehow PostBox made a Thunderbird derivative which does not provide the source code for their client. I've contacted a PostBox rep and he insists that the application is in compliance with the Mozilla Public License.

  • 1
    All contributors had to sign their copywrite over, but not all authors of derived works, right? The OP is asking for something very non-standard. – curiousdannii Aug 11 '15 at 12:51
  • 2
    @curiousdannii: I see, I took it as a matter of the independent software developers trying to contribute patches, not creating forks. I.E., cooperatives. Of course, the OP can still do as I suggest, and his software will likely end up as did OpenOffice: Most contributors will contribute to the fork which does not require relinquishing copyright claims. He cannot prevent that and still consider his code open source. He can still make the source code available, but not allow derivatives. – dotancohen Aug 11 '15 at 13:01
  • The OP has indicated in comments that they want a situation in which any modifications by anyone automatically assign copyright to the OP - which is of course not compatible with the FSD or OSD. – curiousdannii Aug 11 '15 at 13:09
  • @FreeRadical: I know that MPL is not designed to prevent forks. I was giving him an example of a situation that he may not have considered, as it is quite relevant. – dotancohen Aug 11 '15 at 15:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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