I'm the author of WorldPainter. It's licensed according to the GPL v3, but I am about to include some code (dynmap) that is licensed according to the Apache License version 2.0.According to both Apache and the FSF, the APLv2 is compatible with the GPLv3 so I can include it. My question it, how does that work in practice? Specifically:I include dynmap binaries which I build myself. The code is not modified, but the binaries do omit a lot of code which I don't need, to make them smaller. Does this mean I need to provide access to the dynmap source code, or is it sufficient to refer to dynmap on GitHub?My code does include a handful of files copied from dynmap but heavily modified by me, mostly as glue to be able to invoke the dynmap code in ways it was never intended to. Are those files now GPLv3?Does the author of dynmap (Mike Primm) also retain copyright in the modified files? Should I list us both as copyright holders in those files? Should I list Mike as a copyright holder for the whole of WorldPainter? The files comprise a very small part of the code.Does any of the above imply that I should include a copy of the APLv2? Should I include a file explaining the situation with an overview of which license applies to which files? My estimation is that all the source code of WorldPainter proper, including the files copied from dynmap (since they are modified), is still GPLv3 and that it is therefore not necessary to include the APLv2. Is that correct?I will of course give full credit, in the credits of the program and in the copied files. This is just about the technical situation regarding the licensing of the files and the resulting program as a whole.
How does one combine differently licensed code in one open source program?
licensing;license compatibility;relicensing;gpl 3;apache 2.0
The Apache License 2.0 states that:You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.emphasis mineThis essentially means that the Apache license imposes no share-alike restrictions: you don't have to redistribute the work under Apache 2.0. In turn, this means that you could just license the entire project under the GPL.Now, to answer the direct questions:Does this mean I need to provide access to the dynmap source code, or is it sufficient to refer to dynmap on GitHub?You don't have to do either, actually. According to the APL:You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: ...Object form includes binaries. If the binaries are included in your project, you're distributing in Object form, which is still OK by the license.Are those files now GPLv3?Up to you. Those files are derivative works of the original dynmap code: re-read the first quote from the APL and it shows you can redistribute under any license. Thus, those files are GPLv3 if you choose, or not if you don't.Does the author of dynmap (Mike Primm) also retain copyright in the modified files?Long quote from the APL now:d. If the Work includes a NOTICE text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.If the dynmap project contains copyright notices, you must include them in the relevant files. This would include, for example, the files in (2) - those are derivatives of his code, and if they have copyright notices on (or the project copyright notice covers them) then you must include the notice. Primm will retain any copyrights on any code he wrote, he's just allowing you to use it, so you need to demonstrate that. However, he does not become a copyright holder for the whole of WorldPainter, because he didn't write it.... Is that correct?Yes. Technically. You don't have to include the APL anywhere in your project if you don't want to, but it could be taken as courtesy: you're using someone else's work, so you should reference how they've made it available to you. If WorldPainter is any sort of size, including the license won't make much difference to the final package file. If it was me, I'd just include it.