5

I have a project that I created and released under the GNU GPL License v3.0. Today a user of the software contacted me and presented me with a list of improvements and the code necessary to implement them. If I want to add these modifications to the source code in the next release, how do I legally and fairly recognize his contribution in doing so? Am I allowed to release the project with his modified code?

In my naiveté, it seems to me as though I would be licensing the software to him, and he would be licensing the modified licensed software back to me... kinda' circular.

Thank you in advance and thank you especially for your patience!

1
  • Which bit of the GPL are you finding it hard to interpret as to what you need to do? Section 5 is, while a bit wordy, pretty clear on this IMO. Mar 11 at 19:48

2 Answers 2

8

You have created a work de novo and made it available to the world under GPLv3, being the sole rightsholder therein. Someone has taken it and made a modified version, which they have chosen to convey back to you, also under GPLv3 (as they must). You and this contributor are both rightsholders in the modified version.

The contributor is obliged by GPLv3 s5a to add "prominent notices stating that [they] modified it, and giving a relevant date", the usual form of which are copyright notices added to your own, thus reading eg (in the files (s)he has modified):

(c) 2020-2022 H. Airbrain
(c) 2022 A. Contributor

You certainly may incorporate his/her changes into your project for its next release. You should retain his/her new copyright notices, and that is the extent to which his/her contribution must, and is expected to, be recognised.

I note in passing that as you are no longer the sole rightsholder in this codebase, you may no longer unilaterally decide to relicense it.

5
  • That actually works out very well. I'll always keep it open source so it doesn't pose any problems. Thank you for your clear answer.
    – hairbrain
    Mar 11 at 21:22
  • @hairbrain you're very welcome, thank you for the acceptance (the green tick), and welcome to OS.SE!
    – MadHatter
    Mar 11 at 22:08
  • 2
    Keeping it open source does not suffice. Keeping it gplv3 is required, if initially conveyed as such Mar 11 at 23:16
  • 1
    @planetmaker I hoped I'd made that point when I said that the OP could no longer unilaterally relicense - but it's always worth making a second time. Thank you!
    – MadHatter
    Mar 12 at 8:19
  • I agree that you did. My comment was more in reply to the OP's comment here. Keeping it open-source does not suffice when choosing GPL. There does not remain much choice than keeping it GPL. Mar 12 at 8:23
-1

The relevant question is, under which license they provided their code.

They may implicitly have provided it under the license of the project, but this may be not that clear and unclarity may result in legal problems. Very minor corrections may not have a copyright at all, e.g., when someone points out a typo there is probably not much to do.

The other answer explains how to add the code when it is GPL (compatible) licensed.


In theory someone could send a patch without any license (thus not granting the right to use it at all) or with an incompatible license, their code is at first just a piece of text that is copyrighted by them. Using it together with your code may be prohibited in this case, what would make it mostly useless.

Useful licenses for them would include GPLv3 and compatible. They can, for example, decide to make it available under BSDL. This would mean, that the combination of your product and their code would only be usable under GPL, but their code alone can be used together with other projects without the restrictions imposed by the GPL.

Another interesting aspect is, that the GPL is about distribution. Even when the code may not be distributed together with your product, you (and they) can use the combined product yourself as long as you do not distribute it.


That's the theory. Now for the practical aspect: Ask them to tell you under which license it can be used and suggest to use a GPLv3 compatible one explaining that you otherwise cannot include it into the product.


From the discussion: A simple case in which a patch may have an unclear, more permissive, or more prohibitive license would be that your GPLed program is a fork of a BSDL program.

Now I may have written a patch that applies to the BSDL program and can be used with your GPLed program as well because let's say it did not modify that file after the fork.

Following the BSDL, I can both have my patch BSDL, and you can still add it to your program or have it under a proprietary license that still follows the BSDL terms. The BSDL does not prohibit the use in proprietary codes but only has some less restrictive requirements like crediting the authors. (Read the license for full details)

In the second case, you're not allowed to combine it with your code. Combining it with the pre-fork code would probably make the derived work licensed under my proprietary license or just be disallowed, depending on the terms of my more restrictive license.


So the final recommendation is: Make sure to have people tell you how their code can be used.

In most cases, it will be something like "It can be used under your project's license" or "You are free to use it however you like" anyway.

9
  • Any patch submitted to a GPL work must itself be under the GPL; otherwise, as a derivative work, the patch could not lawfully be distributed at all. In the absence of a clear statement of intent to the contrary, the mere act of distribution is a clear sign of the distributor's acceptance of the GPL.
    – MadHatter
    Mar 15 at 20:53
  • @MadHatter you're missing the point here. Let's assume a patch format that does not contain a "negated" copy of the removed original code, like remove 3-12;insert "some new code" at 17. Then the patch without context is just a piece of text that is copyrighted by me. The derived work results from applying the patch and is not the patch itself. And you shouldn't just assume acceptance as it may put you at legal risk. Ask when it is unclear. And I am always free to choose a more liberal GPL-compatible license.
    – allo
    Mar 16 at 10:36
  • I can't agree. The patch was still developed very much in the context of the original work, as a result of detailed scrutiny thereof and with the specific intention of being therein inserted, and is therefore, to my mind, a derivative of it.
    – MadHatter
    Mar 16 at 10:41
  • I see your point, why it is derived. But then we're at the question of whether someone can prove it is derived and if it makes a difference. Is the silence derived from John Cage's 4′33″? It may be, and then it would be a derived work. Or it is not. The second of silence itself does not contain any since if it is derived work. In the same way, I could apply my patch that removes lines 3 to 12 and inserts a new line at line 17 to many different codes. The result will not always make sense, but sense is not required for having the copyright.
    – allo
    Mar 16 at 10:52
  • The two examples are fundamentally different. One could come up with a second of silence without ever having heard, or heard of, Cage's work. It is not credible to claim you came up with a functional patch without deep study of the original program.
    – MadHatter
    Mar 16 at 10:54

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.