Hi,

On Mon, 2025-04-14 at 16:18 -0500, Richard Laager wrote:
> On 2025-04-14 11:10, Russ Allbery wrote:
> > I do find it fairly hard to understand the logic behind a position that
> > somehow our git-remote-https binary as distributed is a derived work of
> > OpenSSL and thus violates the GPLv2 license based on the nature of this
> > specific dependency chain, but then I was always dubious of the legal
> > merits of FSF's extremely aggressive and maximalist position on the
> > definition of derived works in the context of the GPLv2 license.
[...]
> Now that OpenSSL is licensed under Apache-2.0, everyone agrees that 
> GPL-3.0 and Apache-2.0 are compatible. As a result, anything that is 
> GPL-3.0-only or GPL-3.0-and-later or GPL-2.0-or-later (or 
> GPL-1.0-or-later) is fine. That probably covers most things.
> 
> The remaining problem space is thus GPL-2.0-only, which is at issue 
> here. The question is, are GPL-2.0-only and Apache-2.0 compatible? The 
> FSF says no. As far as I can tell, the Apache Software Foundation 
> doesn't necessarily agree with the FSF about this incompatibility, but 
> respects their position on the issue. [1]

No, that is not the core problem. Debian, like most other binary
distributions, heavily relies on the system library exception in many,
many places. OpenSSL is just one instance, but there is also, for
example, libstdc++ which are not available under GPL-2-compatible
terms.

Note that GPL-2 says the following:

+---
| For an executable work, complete source
| code means all the source code for all modules it contains, plus any
| associated interface definition files, plus the scripts used to
| control compilation and installation of the executable.
+---

Now parts of build scripts of packages that curl depends on are GPL-3-
or-later, for example:

- libnghttp2-14: m4/ax_python_devel.m4
- libnghttp3-9: config.guess, config.sub
- libc6: scripts/config.guess, scripts/config.sub
- curl itself: config.guess, config.sub

So these libraries cannot be distributed under GPL-2 unless someone
changes the build system. (Note that common exceptions only apply for
proprietary licenses, but don't allow to fulfill the GPL-2
requirements.)

(As an observation: GnuTLS is also not distributable under GPL-2-
compatible terms as "[...], build system, [...] are licenced under the
GNU General Public License version 3+". So using it instead of OpenSSL
would not work either.)

Header files, linker scripts, ... from GCC might also fall under this
if the exception for compilers is not valid. Arguably GNU make too as
it "control[s] compilation and installation of the executable". So Git
would need to use a different compiler and make implementation. One can
continue with the rest of the operating system like shells.

All distributions thus rely on the system library exception to be able
to distribute most GPL-2-only[1] or GPL-3-only[2] code at all...

As Git doesn't seem any different, I think we should close this bug.

If we think the system library exception is not valid, then we probably
have to remove lots of software and switch core libraries (e.g., use
clang, libc++ instead of gcc).

Ansgar

[1]: Even ignoring fun things like build scripts due to libstdc++ and
similar.
[2]: GPL-3 has the same problems, just in the other direction. Consider
for example /usr/include/linux/*.h which gets indirectly included in
many places.

Reply via email to