I would like to publish code for an application under an open source license like BSD, MIT, or Apache 2 which allows for changes and derivative works to be contributed back to the open source project or kept fully proprietary if the developer wishes, but where the code or derivative works can never be re-licensed under a GPL/Copyleft license. My concern is some group taking my code, relicensing it as GPL/copyleft, and then amassing enough momentum behind their GPL fork to dilute the momentum of the proprietary-able, commercial-friendly open source version.

In other words, users/companies may:

  • Distribute binaries without the source code (proprietary product)
  • Distribute source code with or without their additions
  • Submit changes back to the project

But may NOT:

  • Take code from the project and re-license it as GPL or any other form of license which COMPELS a user or company to distribute the source of their derivative works, making it untenable for use in corporate environments.

Is there a license or generally accepted clause that could be added to the BSD or Apache 2 license to accomplish this intent?

share|improve this question
1  
BSD does this quite well. Any BSD code that gets re-released under GPL by people other than the copyright holder (you) are technically illegal and GPL does not apply in such cases. This is why GNU people tend to avoid BSD projects like Tcl. If you want to enforce this I guess you can do what the busybox project does and monitor people using your code (in the case of busybox they're enforcing GPL, but you can enforce anti-GPL). See the GNU page for GPL compatibility: gnu.org/licenses/license-list.en.html#GPLIncompatibleLicense‌​s – slebetman 12 hours ago
    
GPLv2 without the "or any later version" clause accomplishes some of the points. Awkwardly enough. The JSON License accomplishes ALL of what you want. It is a derivative of the MIT license but is not compatible with GPL. It's not as liberal as the MIT license. Many derivatives of MIT and Apache 2 that place restrictions, of ANY kind, on users or derivatives can't be mixed with GPL. (I'm not knowledgeable on BSD so I can't comment on it or its derivatives.) – Lan 12 hours ago
    
@slebetman It is easy to break GPL compatibility by requiring something that is not required by the GPL. In the case of 4-clause BSD, this is requiring to credit the authors in advertisements. But that only breaks compatibility with (current versions of) the GPL, not with all copyleft licenses as a category. – amon 8 hours ago
    
@Lan The JSON license is not however a FLOSS license. – curiousdannii 4 hours ago
1  
@slebetman Please avoid answering questions in comments. They can not be vetted by the community, nor accepted as the solution to a problem. – pipe 3 hours ago

To my knowledge there is no such license. Note that this license may not be considered an open-source license. In no case would such a license be a permissive license that could be compatible with MIT or Apache 2 projects. Any wording to exclude copyleft licenses would probably also exclude any other open source licenses, so that your software would only be usable either in projects using the same license or in closed-source projects. That seems undesirable.

In general, permissive open source licenses and copyleft open source licenses both try to maximize freedom. They generally have the same intention, but take different avenues. It is important to recognize that both approaches have merit, even if you prefer one of them:

  • Permissive open source licenses try to maximize freedom for immediate users of that code, i.e. developers. E.g. code under the MIT can be used freely in open source and closed source projects. This freedom comes at the expense of user's freedom, who may not be able to view and modify the code if they received the software as closed-source.

  • Copyleft open source licenses try to maximize end user freedom, so that everyone who receives a copy of the software can read and modify the source. This is only possible by restricting how that code may be used, i.e. only in a manner that does not strip end users of their freedom.

    The motivation for copyleft is not a sense of fairness that modifications should be contributed back to the community, but a sense of end-user freedom.

There are licenses that try to find a balance, for example the LGPL: this restricts the copyleft properties only to the LGPLed component, but does not affect the whole software system in which such a component is used.

If you were to create a license that would exclude copyleft licenses, this fails to be a permissive license because it does restrict how the code can be used. You are much closer to copyleft ideas: in order to protect the freedom to freely decide whether modifications can be published as closed-source or under the same license, you sacrifice compatibility with other open-source software.

share|improve this answer

the code or derivative works can never be re-licensed under a GPL/Copyleft license

Ironically, I think the best practical strategy to accomplish this is to license your work under a (very weak) copyleft license that is incompatible with other existing copyleft licenses. Your proposed terms are not "permissive" as the term is used in FLOSS parlance: much like the mechanics of the GPL, you want your license to say, "Everyone may use this however they like, except for this set of restrictions that may never be removed." Your set of restrictions happens to forbid "licensing under conditions that compel downstream source disclosure" instead of the GPL's restrictions that require source disclosure. In other words, whereas the GPL's opponent in employing copyleft is non-free licensing terms, your opponent in employing copyleft will be copyleft terms (except for your own copyleft terms).

The like-minded folks in Redmond are prepared to aid you: the Microsoft Public License (Ms-PL) is a reasonable choice to accomplish this goal. The MS-PL imposes copyleft terms on source distributions only, while binary distributions carry only the minimal requirement that they be licensed under "a license that complies with this license". Since the Ms-PL does not impose any particular requirements for binary distributions beyond attribution, this compatibility is quite easy to satisfy. (It is my guess that Microsoft deliberately engineered this license to be as permissive as possible while remaining incompatible with the GPL.)

On a strategic note, I advise you to consider this decision carefully, for the practical reason that GPL compatibility is a valuable asset in a license. Without it, downstream authors will be unable to make use of GPL'd code and your own code in software they distribute: you force them to choose between GPL options and your own offering. Using a simple permissive license allow anyone to use your code in proprietary projects just as you would like, though it will also allow for a future when some downstream modifications of your project (authored by some other person) might not be available to authors of proprietary software. Weigh your dissatisfaction of such a possible future against a possibly loss of interest in your project for its GPL incompatibility.

share|improve this answer
1  
@MikeC., in that case, your best bet is to put together a crayon license by taking a suitably permissive license and adding a "but you can't incorporate this into a GPL-licensed project" clause. It'll give you the GPL-exclusion effect you want. It'll probably also kill commercial interest in the project, because of the uncertainty it creates in what your intentions are. – Mark 19 hours ago
12  
"how to prevent having a bunch of GPL take a project I release under BSD or MIT by taking my code and re-licensing it as GPL" other people licensing their contributions as GPL doesn't change the license that you can distribute your code as. How they license their code has no effect on you. Stop wasting your time and go build some software. – Miles Rout 19 hours ago
16  
@MikeC I have the specific problem that it doesn't help me understand what you're trying to prevent. Your worst case scenario, as I understand it, is that someone sets up a GPL fork of your project that competes with your own. However, since your objective is traditional commercial success, such a GPL fork can't begin to compete with you, right? The GPL fork has a totally different audience. I'm not sure why this is a problem. – apsillers 18 hours ago
1  
@MikeC. Again, it seems like you are telling me why the GPL applied to your project/market will naturally fail. If that's so, then let your project exist with the GPL and let any GPL-licensed fork meet its natural outcome (i.e., its licensing terms will be inferior for your use case, and your non-GPL project will naturally prevail. Success!). If your motive is purely moral opposition rather than rooted in a practical outcome (e.g. better software, commercial success, etc.) and GPL compatibility is moral anathema to you anyway, then the Ms-PL should suit your needs as detailed in my answer. – apsillers 2 hours ago
1  
Perhaps I'm wrong, but if people are contributing to the GPL fork instead of an original permissively-licensed project, I seriously question whether they'd choose to contribute to your project if it were under a GPL-incompatible license instead. In any case, I think(?) I've answered all your questions; it is up to you to decide what to do at this point. Best of luck with your development! Please let me know if you have more specific questions, of course. – apsillers 1 hour ago

If you release your code under a permissive license, it is not possible for anyone to "relicense" it under a less permissive one like the GPL. By issuing a permissive license, you grant everyone the right to use your code in any way you choose. If someone, say, adds your code to a larger GPL'd product, that does not in any way affect your original license: everyone can still use your code in any way your license permits, even if they happen to find it as part of something with a more restrictive license like the GPL. You have granted them the right to use your code--but you have not granted them the right to control anyone else's use of it. That right remains with you. If your code is included in a GPL'd product, that product's license cannot add restrictions on the use of your code, only on the larger product as a whole. Even if its license claims to apply to your portion of the larger product, such words are legal hot air. You, and you alone, control who uses your work.

Most of the popular licenses allow mixing and matching of software products that work together without affecting each other's individual licenses. Android, for example, is Apache licensed, but requires the Linux kernel (GPL) and SQLite (public domain) to operate.

share|improve this answer

The OpenSSL license is also a major headache in terms of GPL incompatibility, to the extent that there are LGPL replacements to remove the legal uncertainty.

The code is still used though, as there is a common interpretation that the incompatibility was not intended and the copyright holders are unlikely to enforce this license.

If you create a deliberate incompatibility and communicate that this is intended, expect nobody to even look at your code. The OpenSSL license situation has already eaten up several man-millenia of volunteer work.

It is absolutely certain that no Linux distribution would include it, as a legal requirement for inclusion is license compatibility with all other packages. You would get a friendly request to fix your license, and if you refuse as this would violate your intention, your package would become blacklisted.

Also, keep in mind that the C library on many distributions is LGPL licensed. Unless your license permits linking (= creating a derivative work) under these license terms, it also becomes illegal for you to provide binaries on your own web page.

In short, it's a bad idea that has absolutely no useful purpose.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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