In all cases, the README.md
should contain a a SPDX license identifier:
SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later
You can do it like that:
## License
This work is dual-licensed under BSD and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.
`SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later`
Note that BSD-3-Clause OR GPL-2.0-or-later
and BSD-3-Clause AND GPL-2.0-or-later
makes a big difference. The former means that the user can choose between both (which is the regular case!) and the second one denotes that the user has to comply to both licenses. See also multi licensing on Wikipedia.
SPDX Way
In a presentation of the SPDX creators, they propose to create a LICENSE
file containing a SPDX expression (slide 12).
Contents of LICENSE
:
BSD-3-Clause OR GPL-2.0-or-later
You could add two additional LICENSE files then: LICENSE.BSD-3-Clause
and LICENSE.GPL-2.0
.
Note that I am using the new (as of 2017-12-28) SPDX License List 3.0 here. The versions of 2017 had GPL-2.0
is identifier for GPL 2.0, but it was not clear whether that meant "GPL 2.0 only" or "GPL 2.0 or any later version".
Eclipse Foundation Way
See https://www.eclipse.org/projects/handbook/#legaldoc-license:
If the project code is distributed under multiple licenses then the text of those licenses must be included. The file should start with a short paragraph that describes how the licenses are combined. This statement should in most cases, be exactly the same as the license statement in the file copyright and license headers (see the example below).
Example License File (dual-licensed EPL-2.0 or Apache-2.0).
This program and the accompanying materials are made available under the
terms of the Eclipse Public License 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0, or the Apache Software License
2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0.
... Text of the Eclipse Public License 2.0 ...
... Text of the Apache Software License 2.0 ...
Since you're making a derivative work of GPL-licensed software, your combined work would need to be licensed under the GPL as a whole. However, if you don't want to distribute your work, you are in no way compelled to shared your changes.
The GPL FAQ has this to say on keeping your modifications private:
Does the GPL require that source code of modified versions be posted to the public?
The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them...
But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL.
Thus, the GPL gives permission to release the modified program in certain ways, and not in other ways; but the decision of whether to release it is up to you.
Thus, you are not required to make your modified program public, but you if you do, you must share it under the GPL.
Perhaps you're also worried that sharing your output calendars will compel you to share your modified code. The FAQ explains that output data produced by a GPL-licensed work is not covered by the GPL, unless the output actually contains GPL-licensed material (e.g., if part of the GPL-licensed program itself is included in the program's output):
Is there some way that I can GPL the output people get from use of my program? For example, if my program is used to develop hardware designs, can I require that these designs must be free?
In general this is legally impossible; copyright law does not give you any say in the use of the output people make from their data using your program. If the user uses your program to enter or convert his own data, the copyright on the output belongs to him, not you. More generally, when a program translates its input into some other form, the copyright status of the output inherits that of the input it was generated from.
So the only way you have a say in the use of the output is if substantial parts of the output are copied (more or less) from text in your program. For instance, part of the output of Bison (see above) would be covered by the GNU GPL, if we had not made an exception in this specific case.
In what cases is the output of a GPL program covered by the GPL too?
Only when the program copies part of itself into the output.
So, your output is probably not GPL-licensed. Note that even in some unusual case where the output is somehow GPL-licensed (like a Bison grammar), the output is a separate work from the program that created it. You'd need to obey GPL restrictions on the output, but sharing GPL-licensed output does not mean you must share changes on the GPL-licnesed program that created that output. The GPL on the program only comes into effect when the program itself is distributed, not when its output is distributed.
Best Answer
The short answer: When you fork an existing project, you generally do not have permission to change the license nor do you get copyright on the code you copied over.
You do have the copyright on any (nontrivial) modifications or additions that you make.
The long answer:
The only ways to get copyright on a piece of code is by writing it yourself or by contractually getting the copyright assigned to you. This means that forking an existing project doesn't change the copyrights on the code of either the original project or the fork.
The only people who can change a copyright license are the holders of that copyright. If there are multiple copyright holders to the code of a project, then all copyright holders must agree to a change in the copyright license. This means that you don't have permission to change the license of your fork (not even to dual license it), unless the existing copyright license explicitly gives you the right to sublicense the code.