12

Which License is best suited for my open source project. I am developing a web app (a template like) that has potential use in real life applications but also learning outcomes. I would like people to contribute and use if they want to, so I am between using MIT or GNU GPLv3. I know GNU is a lot more restrictive and could potentially scare people away from contributing but also I would like people to contribute and keep it open source. I would not mind people using my code, but I would want something in return, even a bug reporting would be sufficient.

Based on this, and your experience or knowledge, which license would be more suitable.

Edit #1: I want to choose a licensee that's going to make users more likely to contribute, not one that forces them to.

"but I would want something in return"

Clarification: I don't mean that I would require to do that, but would be desirable and not essential.

9
  • 1
    Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer.
    – Community Bot
    Jan 18 at 21:51
  • 4
    Which kind of tool is it? Unless you develop a software development tool you will have 99% users and only 1% potential contributors. Do you plan to exclude the 99% of users without programming skills, because they 'just take it as free beer'? Or is it rather a library, and you want everyone who uses your library with their own code to be forced to give feedback and changes back to you? Both ideas would be problematic w.r.t. the definition if 'Open Source' as used by this site. Jan 18 at 22:17
  • 18
    No license can make people want to contribute to your project. However, the license can be a barrier to contribution. If you want to remove that barrier, use the most permissive license. That said, your license is not going to be the biggest driver of whether people contribute. The usefulness of the project, ease of contributing, how welcoming you are, etc... are more important.
    – Schwern
    Jan 19 at 7:01
  • 8
    Encouraging people to report bugs seems unrelated to the license. If you make it easy to report a bug, then it follows that more people will do so.
    – Brandin
    Jan 19 at 10:52
  • 3
    @user253751 It's not clear that that's how things work in practice. In many cases users may be "scared away" from contributing to GPL projects if they work in organisations that ban it to avoid legal liability, even if that organisation contributes to other open source projects that they don't milk for money (see for example Twitter's contribution to Bootstrap, or Meta's contribution to React). And conversely, GPL and even AGPL have not always proved effective deterrents against milking projects for money (see for example the ElasticSearch/AWS/SSPL controversy).
    – James_pic
    Jan 19 at 16:06

4 Answers 4

12

If your software is a web app of any kind, and if you absolutely require all changes to be made available, including to you, then you need to use the GNU AGPLv3 license.

It's a copyleft license affecting distribution and remote network interaction, meaning the source code of modified versions must be made available to those who receive a copy of the software, and to those who interact with it remotely.

From Section 13 of the GNU AGPLv3:

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.

Of course, if your web app is modified and used on an intranet not accessible by you, then you do not have the right to get a copy of the modified source code.

However, if your web app is modified and used on the public Internet, accessible by you, then you have the right to get a copy of the modified source code.

Very strong copyleft licensing makes perfect sense from the open source software developer's perspective.

However, from the perspective of companies, permissive licenses tend to be preferred over copyleft licenses, as it would not restrict them in any way or potentially cause them legal trouble. So, the use of permissive licenses like MIT would encourage wider use of your software, compared to GPL and AGPL.

4
  • 7
    Well, yes and no. The AGPL doesn't say that you have to notify the author. It's absolutely non-obvious that the author will be able to realize that their software is used and the changes are available. For example maybe it's used by a Chinese company which has a chinese only website. How likely is it that the author will be able to read chinese or will translate that page to lookup how to get a copy of the source? I believe OP means terms like "whenever you make changes you have to notify me and if I want to I can request them from you".
    – GACy20
    Jan 19 at 8:49
  • @GACy20 nonetheless it is likely to be suitable for the asker.
    – user253751
    Jan 19 at 15:37
  • Even the AGPL or GPL does not actually encourage people to contribute to the code. nrecursions.blogspot.com/2014/05/…
    – Nav
    Jan 20 at 9:43
  • 1
    > However, if your web app is modified and used on the public Internet, accessible by you, then you have the right to get a copy of the modified source code. Yes - but for clarity if it's on the internet but only available to a restricted group of users, and that does not include you, then you do not have the right to a copy of the modified source. Any of users however have the right to give it to you if they wish.
    – bdsl
    Jan 21 at 14:02
21

I would want something in return, even a bug report[ing] would be sufficient.

This requirement is not compatible with the Open Source Definition, the definition of open source as used by this site; all open source software must allow truly free redistribution of the software with no expectation of "something in return".

1
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – MadHatter
    Jan 19 at 13:36
8

The way you make people contribute to your project is not to have a license telling them to, but to make it easy. Seen from a developer's point of view it is much, much better to have any changes contributed back to the project, than to maintain a fork, so the incentive is there from the start.

Your project should be easily accessible, in a place where it is easy to report issues. Here it is your job to take care of these issues in reasonable time, because having a large backlog will be a red flag to those experienced developers you want to attract.

If you want actual contributions, you need to make more things easy. The following should be considered an absolute minimum:

Sources easily available, easily accessible (the README should be correct and tell me how to learn what I need to change things) and easily buildable so I can get things up and running myself in a standard development environment, including a debugger so you can set breakpoints.

Then it should be easy to submit suggestions. These days many developers use Git, and know how to provide something you can merge.

In other words, something like GitHub (or Gitlab or Bitbucket etc.).

It also helps if the code is well-written and easily understood. Don’t be too smart - write clean, simple code.

That said, the license should reflect how you want your sources to be used. LGPL is probably the simplest way to have people strongly considering submitting any changes back.

2

You could consider using the Reciprocal Public License 1.5 (RPL-1.5) https://opensource.org/licenses/RPL-1.5 Please do not use it.

Intent

Regarding deployment, under the RPL your changes, bug fixes, extensions, etc. must be made available to the open source community at large when you Deploy in any form -- either internally or to an outside party. Once you start running the software you have to start sharing the software.

6.4. c. Source Code Availability. You must notify the software community of the availability of Source Code to Your Extensions within one (1) month of the date You initially Deploy and include in such notification a description of the Extensions, and instructions on how to acquire the Source Code.

The license forces users running the software to notify you/the community about changes to the code and where to find them.

6.2 Description of Modifications. You must cause any Modifications that You create or to which You contribute to be documented in the Source Code, clearly describing the additions, changes or deletions You made.

I am not a lawyer. This is a lot stricter than the GPL, because there you are obliged to offer the source code on distribution only to the receiver of the derived work. Here users (that don't use it for personal use only) have to offer it via an electronic distribution mechanism that "is publicly accessible" and notify you about how to access it.

Keep in mind that this is not very practical for most of your users as the software might be quite hard to combine with other code under different licenses. The only time I saw this licenses used it was accompanied with the offer to buy a commercial license.

Also this is probably not what you want, since you state that you don't want to require/force people using your code to contribute.

2
  • 7
    Note that the RPL is non-free.
    – MadHatter
    Jan 19 at 21:07
  • 3
    Reciprocal Public License is a license which prevents developers from contributing. Because of its non-free terms developers will hesitate to use the code. Therefore it causes the opposite of the OP's intentions. Jan 20 at 7:09

Your Answer

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

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