How two GPL projects should be merged?
Scenario: there are GPL projects A and project B with the same license, version 2 or 3 (and different authors, mentioned in the corresponding COPYING files). Project B was build on top of project A (including headers of A and linking to its binary). Now the project B got partly re-factored and incorporated in A. (Project B is discontinued)
- is it mandatory to release (A+B) under a different name than "A"?
- Should the COPYING file in Project A refer to the COPYING file of B or is the right way just to update the authors list in the COPYING file of A?
- are other actions in addition to 1. and 2. required?
Best How To :
It is best to have a single statement of what the license is, because you can not trust the user to know how to merge two licenses.
A lot of people think the presence of a file called COPYING containing a copy of a GPL license agreement is sufficient to convey a license. That's not enough -- what if there are files COPYING-A and COPYING-B? Which one applies? It is best to add a notice as in the section "How to Apply These Terms to Your New Programs". Check A and B for the presence of such notices. The recommendation is to place the notice at the start of each file -- I never do that. If your authors haven't done that, you will want, at the very least, to have a prominent file (./LICENSE) providing the notice and describing what collection of files it applies to; perhaps the phrase "all the files in this program" is too vague, which is why it is suggested that each file have a notice. Perhaps the notices in each file could be abbreviated by having them refer to "../../COPYING", etc.
GPL 3, section 7, allows authors to add additional terms, one of which may be "requiring that modified versions of such material be marked in reasonable ways as different from the original version" -- insisting that a modified version of the licensed software be offered under a different name seems reasonable, so the answer to whether you can name it "A" is "it depends". You must read the licenses of A and B and seek out all additional terms and merge them into the merged license; you may add additional terms of your own. Section 7 also allows authors to add additional permissions, so you must read both licenses and take something no larger than the intersection of the two sets of permissions as your set of permissions, but if one of the additional terms specifies that one of the additional permissions not be deleted, you must obey that and keep the additional permission. Actually, all that is discussed in section 5, but here we regard A+B as a work based on A and also as a work based on B, so do all the work twice.
Lines of the form "Copyright (C) <year> <name of author>" should be placed adjacent to each other in the license file, since the authors of A may have copyright years that differ from those of B; since copyright expires after a certain number of years, it would be incorrect to merge the two copyright lines into one by merging the two years or lists of years into one list and merging the two authors of lists of authors into one list. The (C) is redundant, and can be eliminated, or replaced with ©, which is the only thing that has meaning in copyright law. But the © is also redundant, since the word "copyright" serves the same purpose adequately.
To comply with 5a you will want to add a line stating that you have merged the two programs into one, and give the date.
If the A or B does terminal interaction, you will want to modify the copyright/license message displayed by it, along the same lines as above.
I assume GPL 2 follows the same pattern, as far as all this is concerned.