I would like to release a specific niche database application as open source.

My only concern is that any potentially beneficial changes to the project are made available to all users of the application. The one requirement I wish to place on any user of the project, is to contribute back any changes that have been made, regardless of whether software distribution (GPL), or network access (AGPL), has taken place.

From my research, the license that seems to come closest to meeting this requirement is the Reciprocal Public License, but given how rarely it's used in practice, I question if this is actually the right license for the use case.

Aside from the Reciprocal Public License, is there a more appropriate way to accomplish this mandatory source sharing goal for a database application, while still keeping the application open source?

  • Such a requirement makes it not free software. The AGPL is the most restrictive copyleft license that is free software, generally.
    – ecm
    Apr 13, 2022 at 5:50
  • 1
    Have you read Extend GPL to be informed in case of derivative work? If not, could you do so, then in any case let us know (a) whether it answers your question, and (b) if not, what remains unanswered. Note that part of the core of your question - how can I get a licence that requires contributions - is off-topic for this site in that such software would be non-free.
    – MadHatter
    Apr 13, 2022 at 6:46
  • 2
    Suppose I have tried to make some changes to your project and abandoned my attempt as I couldn't get it to do what I want. Would I still be required to contribute that back to the community? Where do you put the boundary of what must be given back and what not? Apr 13, 2022 at 7:41

1 Answer 1


Such an Open Source license cannot exist.

Copyleft licenses require a reciprocal license to recipients of the software, so that those recipients have full rights to further use and modify the software. The Reciprocal Public License, the AGPL, and the Cryptographic Autonomy License extend this to some or all users of the software, so that they retain Software Freedom with respect to the software that they use.

But what no OSI-approved Open Source license will require is publication of modifications. If I modify the software for purely internal use, I won't be required to disclose my work. I as the copyright holder of the modifications still have the right to decide whether other people get access to my work.

The Debian community has developed license evaluation criteria to determine whether a license qualifies as Free and Open Source software.

Among of these are the Desert Island Test: It should be possible to comply with the license even if I can't communicate with other people. That means it is OK for a license to require reciprocal licensing to people who already received my modified version, but it's not OK to require publication of private modifications, and most certainly not OK to require sending modifications to specific recipients such as the original authors.

Another criterion is the Dissident Test: Compliance with a license should not jeopardize the safety of someone making modifications. For example, if making modifications would require sending these modifications upstream, then this might disclose that someone is a user of this software. This sounds unproblematic for database software, but Open Source licenses must work equally well for all kinds of software, including more politically sensitive kinds like VPN, encryption, and security tools.

For your specific case, it would be good to think about your licensing goals.

  • Do you actually want to grant Software Freedom to others via an Open Source license? If users enjoy Software Freedom, others will still be able to maintain the software if you don't – the project will be somewhat independent from you. Since Software Freedom implies a freedom to create forks, the concept of having a particular Original Author is less meaningful.
  • What benefits do you want to achieve through Open Source licensing? For example, such licensing can encourage wider adoption due to the use of well-understood standardized terms instead of custom contracts, and due to some degree of vendor-independence (see the Software Freedom point above). But this goal would be jeopardized if you choose a highly unusual license, especially if you choose a non-Open Source license.
  • One aspect that you mention is that users can benefit from each other's modifications. While this is not guaranteed via copyleft licenses, it generally works well as a cultural norm. The driving factor is typically going to be laziness, not license obligations: for most organizations, maintaining a custom patches for a software or doing a complete fork requires more effort than living with a suboptimal software – or than upstreaming their improvements.
  • What do you want to happen with modifications that are not useful? You could write a non-Open-Source license that requires all modifications to be offered to you. But, I'd believe that if your software becomes popular you'd be swamped with irrelevant or broken modifications. More likely, your software would not become popular because it would be missing out on Open Source network effects.

If you decide that you want to keep the software Open Source but want to maximize the likelihood that useful modifications are shared with the community, it would probably be better to achieve this through technical and social means than through legal instruments. Especially for software like databases that are mostly used internally (ignoring DBaaS use cases), all Open Source copyleft licenses will more or less be the same and won't trigger their license requirements. Technical and social means could include things like making contribution easy (from a process & legal perspective), and thinking about what kind of plugin interfaces you offer.

For example, the Linux kernel makes it possible to load kernel modules, but will only offer full functionality to modules that declare themselves as GPL-licensed. People are encouraged to contribute their modules upstream because Linux does not provide any compatibility guarantees for these plugin interfaces – only the modules managed upstream are guaranteed to work. There are still lots of proprietary kernel modules, including some that hack around the GPL compatibility check, but overall it's a strong ecosystem. It is also advantageous that some new features can be thoroughly tested internally before they are proposed for inclusion in the upstream.

  • This is truly an excellent answer. I have a question though: is the GPL a suitable license for databases? Is it well understood how the reciprocal nature of the license would affect the licensing of derivative data?
    – hackerb9
    Aug 31, 2023 at 20:06
  • 1
    @hackerb9 It is generally understood that the licensing of a software does not affect the licensing of the data processed via that software. I can handle proprietary data with Emacs, LibreOffice, or Firefox. And I can keep proprietary data in a (A)GPL-licensed database server. This is actually extremely common: MySQL/MariaDB use GPL licenses. MongoDB used to have an AGPL license. The data is not "derived" from the DB server. Also, databases (collections of information) are not even copyrightable in many jurisdictions such as the US.
    – amon
    Sep 1, 2023 at 14:19
  • Thanks, but I wasn't thinking of software. For example, if I derive a statistical model by training a neural net on a GPL'd dataset, the result is a new dataset, thousands maybe millions of parameters for a generative AI. Does the GPL help to inform whether this new dataset is a "derivative" work? Is the original database the "source code" and the new one to be seen as "object code"? Or, are we to ignore the parts of the GPL that refer to code and programs?
    – hackerb9
    Sep 2, 2023 at 2:37
  • 1
    @hackerb9 The GPL is intended for software, not for other works. Copyrightability of datasets varies between jurisdictions (EU: yes kinda, US: no). Some licenses like CC-BY-SA 4.0 account for this. It's not clear whether statistical/AI models are a derivative work of their training data, that exact issue is currently subject to intense debate. If the original+derivative are covered by copyright then copyleft licenses would apply as usual. But Open Source licenses like the GPL only provide (conditional) exceptions to copyright, they don't invent their own concept of derivative works.
    – amon
    Sep 2, 2023 at 9:38
  • Thanks that exactly what I needed to know.
    – hackerb9
    Sep 3, 2023 at 6:22

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.