9

According to both the Apache Software Foundation (Apache) and Free Software Foundation (FSF), the Apache License 2.0 is not compatible with GNU General Public License 2.0.

Despite [Apache's] 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. The Apache Software Foundation believes that you should always try to obey the constraints expressed by the copyright holder when redistributing their work.

However, LLVM uses Apache 2.0 License with LLVM exceptions that they claim is compatible with GPL version 2.

LLVM Exceptions to the Apache 2.0 License

As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into an Object form of such source code, you may redistribute such embedded portions in such Object form without complying with the conditions of Sections 4(a), 4(b) and 4(d) of the License.

In addition, if you combine or link compiled forms of this Software with software that is licensed under the GPLv2 ("Combined Software") and if a court of competent jurisdiction determines that the patent provision (Section 3), the indemnity provision (Section 9) or other Section of the License conflicts with the conditions of the GPLv2, you may retroactively and prospectively choose to deem waived or otherwise exclude such Section(s) of the License, but only in their entirety and only with respect to the Combined Software.

Has Apache or the FSF (or any other notable organizations besides the LLVM team) commented on whether or not this is actually compatible with GPL version 2?

1 Answer 1

6

As far as I have searched, there has been no statement from FSF or Apache Foundation on whether the LLVM Exception to the Apache License v2.0 makes it compatible with the GPLv2.

Based on the text of the exception, we have to wait for this compatibility to be tested in court.

However, Microsoft has chosen the Apache License v2.0 with the LLVM Exception as their license of choice for the MSVC C++ STL.

According to Microsoft's blog entry on the open sourcing of the MSVC C++ STL, the reasons for selecting this license is:

  • License compatibility to share source code with LLVM Clang STL
  • No attribution needed for binary distribution

There is no mention of GPLv2 on the blog entry.

So, Microsoft is the other notable organization to endorse this license exception.

Quoting Microsoft's blog entry, Open Sourcing MSVC’s STL:

Q: What license are you using, and does this directly affect Visual Studio’s customers?

A: MSVC’s STL is distributed under the Apache License v2.0 with LLVM Exceptions, which was recently created by the Clang/LLVM/libc++ project. We chose this permissive open source license because having the same license as libc++ will make it easier to share code between our libraries. To be clear, MSVC’s STL isn’t merging with libc++; they’re still distinct libraries that support different platforms with different data structure representations. However, if libc++’s maintainers are interested in taking feature implementations from MSVC’s STL (e.g. floating-point charconv), or in collaborating on the development of new features in both libraries simultaneously, we’ll be able to help without having to worry about licensing.

As a customer of MSVC’s STL, you might be wondering whether this new license creates new obligations for you. Microsoft’s position is that the text of the Apache License v2.0 with LLVM Exceptions (specifically, the wording of the LLVM Exceptions) clearly states that when you compile your own source code using MSVC’s STL to produce object code or similar output (e.g. static libraries, dynamic libraries, and executables), you aren’t required to provide attribution when shipping your compiled products to your end users. This is another reason we’ve chosen this license: to avoid disrupting our customers’ businesses.

My personal preference is to dual license under Apache License v2.0 and the GPLv2+ (i.e. choose either one), instead of using this exception text.

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.