Question

I have no experience in software licensing so far. I am releasing my first application but I am not familiar with any licenses. Most of the the summeries found that I can understand (http://opensource.org/licenses/category) are open source but I want my application to stay closed-source. I am a little lost among all these choices.

My application:

  • uses a DLL created from a project version licensed under GNU LGPL (no code changes made)
  • uses a statically linked class licensed under "GNU GPL v2 or any later" (modified by adding a few properties (just getters, a couple of lines))
  • uses 2 small classes found in stackoverflow discussions which code was published under no license, I guess
  • implements a possibility to donate funds

I need a license that states:

  • It is free to use for everyone
  • Everyone can redistribute it on their repositories. I guess I want basic information about the author and my website included.
  • It is forbidden to modify and sell it in any way
  • The license does not obligate me to distribute the source code
  • The author gives no warranty
  • The author can change the license to one of a non-commercial license any time in the future (not required)

My questions:

  1. What license matches the above statements? (provide a link to the body and the summery, please)
  2. I am going to include information about third-party licensed code and its authors. Should I also mention authors of classes found at stackoverflow?
  3. Have I modified the GNU GPL class enough to be obligated to release this modified class?
  4. The project I use a DLL from changed the license from GNU LGPL to MIT in the newer version. Can I update this library used in my project with no influence on the license I choose?
  5. Is it possible in the future to license this project under a non-commercial license combined with an implemented donating feature as well? Is it acceptable in the community or is it a bad manner? I've been just wondering if I can receive donations and ask non-commercial users at the same time to consider buying a commercial license, that's all. It is my thinking in case it gets attention from commercial users in the future very unlikely.
  6. If a non-commercial license using LGPL, GPL or MIT components is possible, what would it be? (provide a link to the body and the summery, please).

EDIT (annotation to the users' replies) 2015-10-27 19:20

greyfade: Let's say I get permissions from stackoverflow users to use their classes freely following BartvanIngenSchenau's advice. I understand the only obstacle left for releasing under a closed-source freeware license would be GPL?

2.1. Do LGPL and MIT licensed components included in my app permit using closed-source freeware license too?

2.2. I cannot get rid of GPL licensed part in my project. Let's say I release my project under GPLv3 (obtained permissions for CC-BY-SA 3.0 licensed classes at stackoverflow, using the DLL under LGPL or MIT - whatever) and I distribute the source code beside the binaries. Did I understand correctly? GPL permits any form of collecting voluntary donations? I am not about to require a donation to download, install nor use my application, it is user's good will. Still no?

2.3. Am I obligated under GPLv3 to distribute the source code at the server or only at user X's individual request by sending it to him/her?

2.4. Let's imagine I get a permission from the author and GPL is converted to LGPL. My application's got third-party components under LGPL (MIT), LGPL, 2xLGPL. Is it all right then to license my app under a closed-source freeware license letting donations? If yes, what'd be this license? If no, what license would the components need to be released under to match my wishes?

No correct solution

OTHER TIPS

I am not a lawyer and this is not legal advice. Consult your copyright attorney if you want clarification on any of these issues.

uses a statically linked class licensed under "GNU GPL v2 or any later" (modified by adding a few properties (just getters, a couple of lines))

The GPL requires that you re-release the source code for any changes you've made in some usable form, including the rest of your project.

If you do not release all of the source code for your entire project, you are in violation of the GPL.

uses 2 small classes found in stackoverflow discussions which code was published under no license, I guess

The legal status of these code snippets is unclear, but based on the licensing of the content of StackExchange as a whole, it's probably licensed under Creative Commons Attribution-Sharealike license, which has terms similar to the GPL and requires attribution of the source.

What license matches the above statements? (provide a link to the body and the summery, please)

The GPL. Due to your use of GPL-licensed code, you must license your source code under the same or less restrictive terms. This means, further, that you are not permitted to distribute your program as closed-source freeware.

I am going to include information about third-party licensed code and its authors. Should I also mention authors of classes found at stackoverflow?

Yes. This is required by the Creative Commons Attribution license.

Have I modified the GNU GPL class enough to be obligated to release this modified class?

You are obligated to release it, no matter how much or how little you've changed. You are also obligated to release any code that links with it.

The project I use a DLL from changed the license from GNU LGPL to MIT in the newer version. Can I update this library used in my project with no influence on the license I choose?

Yes, so long as its license is not more restrictive (i.e., incompatible) with the GPL.

Is it possible in the future to license this project under a non-commercial license combined with an implemented donating feature as well? Is it acceptable in the community or is it a bad manner? I've been just wondering if I can receive donations and ask non-commercial users at the same time to consider buying a commercial license, that's all. It is my thinking in case it gets attention from commercial users in the future very unlikely.

Donations are irrelevant, so long as you are not charging for the software itself. The terms of the GPL apply, and they permit donations and charging for "conveyance."

If a non-commercial license using LGPL, GPL or MIT components is possible, what would it be? (provide a link to the body and the summery, please).

Only GPL and GPL-compatible licenses are permitted for such software, due to the use specifically of the GPL.


2.1. Do LGPL and MIT licensed components included in my app permit using closed-source freeware license too?

MIT permits relicensing, provided you include the Copyright notice and a copy of the license in your code.

LGPL permits linking to a closed-source application, but only in a form that allows end-users to replace the LGPL-licensed portions of your program. In general, that means that dynamically-linking is permitted.

Read the FSF's GPL FAQ, which explains this and related issues.

2.2. I cannot get rid of GPL licensed part in my project. Let's say I release my project under GPLv3 (obtained permissions for CC-BY-SA 3.0 licensed classes at stackoverflow, using the DLL under LGPL or MIT - whatever) and I distribute the source code beside the binaries. Did I understand correctly? GPL permits any form of collecting voluntary donations? I am not about to require a donation to download, install nor use my application, it is user's good will. Still no?

If the code you're using under the GPL is licensed "GPLv2 or later" or "GPLv3" or "GPLv3 or later," then yes, you can release your project under the GPLv3. If the project is licensed under GPLv2, but not "GPLv2 or later," then you can't license your code under GPLv3, because the two licenses are mutually-incompatible unless the v2 license has the "or later" clause.

You should also be aware that CC-BY-SA 3.0 is not compatible with the GPL. However, CC-BY-SA 4.0 is compatible with GPLv3.

Donations are irrelevant.

2.3. Am I obligated under GPLv3 to distribute the source code at the server or only at user X's individual request by sending it to him/her?

You are required to provide the source on request, but the most convenient and simplest way to comply with this requirement is to publish the modified source alongside the binary distribution.

2.4. Let's imagine I get a permission from the author and GPL is converted to LGPL. My application's got third-party components under LGPL (MIT), LGPL, 2xLGPL. Is it all right then to license my app under a closed-source freeware license letting donations? If yes, what'd be this license? If no, what license would the components need to be released under to match my wishes?

You may distribute your code under any license you wish as long as you are in compliance with the LGPL terms.

To comply with the LGPL, end-users must be able to modify and replace all LGPL-licensed components without violating your license and without needing special tools to do so.

In principle, this means that your code must either be licensed under the LGPL, or some other GPL-compatible license, or the LGPL-licensed portions must be dynamically linked.

Again, you should read the FSF's GPL FAQ, as it explains these issues in detail.

You are out of luck.

The GPL license is written in such a way that if even the tiniest part of your code was provided to you under the GPL license, then you are required to use the GPL license as well when distributing your code.

Content posted on Stack Overflow is licensed under the CC-BY-SA 3.0 license (as stated in the Terms of Service). Unfortunately, that license is not particularly suited for code and has similar requirements as the GPL that work derived from content under the CC-BY-SA license must also be distributed under the CC-BY-SA license.
From a purely legal standpoint, this makes it impossible to distribute your software, because two parts require that the entire project is released under different terms.
In practical terms, contributers to Stack Overflow often don't know about the effects of the license that StackExchange uses for the user-content and are probably likely willing to grant you a license to those classes under different terms.

This leaves the matter of using GPL code in your project, which means that you must use version 2 or later of the GPL license for your code as well.

uses a statically linked class licensed under "GNU GPL v2 or any later" (modified by adding a few properties (just getters, a couple of lines))

By using a GPL licensed class/library your code must also be published under the GPL license.

See also: https://stackoverflow.com/questions/10130143/gpl-lgpl-and-static-linking#10179181

A note on your 2.:

In my opinion if there isn't a explicit license stated you must ask the original author for permission so you can use the code.

First, get rid of the statically-linked class licensed under GPL, since it will conflict with your goal of releasing it as closed-source freeware. If you know how that class works, you can easily write your own implementation. Or find an MIT/BSD licensed version of it.

Then, give credit to the places where you got the code snippets from. According to Jeff Atwood it should be okay to use the StackOverflow code snippets under the doctrine of fair use, but it's better to just give credit to those who written your code...just in case.

Finally, release the program under a Creative Commons license (as this answer suggest). While it is not encouraged to use them for software licenses, it would still be valid. In this case, you are not really licensing the code, but the program that you are releasing to the general public.

This specific license meets all the criteria you desire (http://creativecommons.org/licenses/by-nc-nd/4.0/).

Licensed under: CC-BY-SA with attribution
scroll top