The Apache Software Foundation page on GPL compatibility says that Neither GPLv2 nor GPLv3 can be incorporated into an Apache 2 project.

It doesn't directly make a statement about GPLv1. But in does make a indirect statement:

Despite our best efforts, the FSF has never considered the Apache License to be compatible with GPL version 2, citing the patent termination and indemnification provisions as restrictions not present in the older GPL license.

(emphasis mine)

Am I correct then in my understanding then that GPLv1 is compatible, as it does not the restrictions that were added in GPLv2?


1 Answer 1


License compatibility is a one-way street, so we ought to phrase statements about license compatibility very precisely: So for two licenses X and Y, we are interested if “X-licensed code can be used in Y-licensed software”.

Can I use GPL-licensed code in Apache-licensed software?

For all versions of the GPL and the Apache License: GPL-licensed code cannot be used in Apache-licensed projects. This is because the GPL is a copyleft license that requires the resulting work to be published under the same license as the original work. So it is impossible to base an Apache licensed work on a GPL-licensed work (any version). For the GPLv1, this is clear from section 2.b):

  1. You may [distribute modifications], provided that you also do the following:


    b) cause [any work that partially or completely contains the Program] to be licensed […] under the terms of this General Public License […].

So you cannot take GPLv1 code, modify it, and publish the modified version under any different license.

Can I use Apache-licensed code in GPL-licensed software?

The other direction is a bit more differentiated. Because the Apache licenses are permissive licenses, they can be used with any other license that satisfies the terms of the Apache license. However, the Apache License 2 contains a patent license that complicates things. That is what your quote is about: according to the FSF, Apache-2-licensed code cannot be used in GPLv2-licensed projects. If it were possible to use Apache-2 code under the GPLv2, that would “forget” about the Apache-2 license's patent terms which is not possible. With the GPLv3 this point has been made compatible by adding relevant terms, so you can use Apache-2-licensed code in a GPLv3-licensed project.

To be clear about the understanding of the quote: it talks about the “patent termination and indemnification provisions” of the Apache-2 license, and “the older GPL license” refers to the GPLv2. So you can't use Apache-2-licensed code because the GPLv2 does not contain equivalent terms to the Apache 2 license. It makes no statement about the GPLv1. The patent terms were not added in the GPLv2, but in the GPLv3 and the Apache 2 license.

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.