Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 933194 - media-video/makemkv violates the LGPLv2.1 & LGPLv3
Summary: media-video/makemkv violates the LGPLv2.1 & LGPLv3
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Other
: Normal normal
Assignee: James Le Cuirot
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-05-30 12:38 UTC by ganooslashlinus
Modified: 2024-06-07 07:53 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ganooslashlinus 2024-05-30 12:38:11 UTC
I finally got around to confirming my additional suspicions.

"MakeMKV" forbids reverse engineering in its "EULA", and doing so violates the LGPLv2.1 and LGPLv3, as those licenses require that any software that uses the library (and thus makes a derivative work) permits reverse engineering for the purpose of debugging modifications.

Long explanation;
makemkv-bin-1.17.7/src/eula_en_linux.txt;
"Software 
means MakeMKV, all program and information files and other documentation which are part of the MakeMKV Software package but excluding Open-source Software."
"You shall not modify, translate, reverse engineer, decompile or disassemble the Software or any part thereof or otherwise attempt to derive source code, create or use derivative works therefrom."

I don't see any sections that make exceptions to such restrictions.

Inspecting makemkvcon reveals that it's a derivative work of glibc;
readelf -d makemkv-bin-1.17.7/bin/amd64/makemkvcon
...
 0x0000000000000001 (NEEDED)             Shared library: [libmakemkv.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libdriveio.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
...

The relevant section of the LGPLv2.1 is;
"  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
"
- Section 6 applies, as it has been linked to glibc and that binary is violation of section 6 - meaning Gentoo has lost permission to distribute glibc and any further distribution constitutes copyright infringement.
- Even if a derivative work hasn't been created (it has), Gentoo still has no license to distribute glibc, as it's not following the license terms.

There's also a bunch of other violations of the LGPLv2.1 with other libraries and I can point out more of them if you want.


If you navigate to makemkv-oss-1.17.7/makemkvgui/src there is the partial sources of the "MakeMKV" program under these terms;
"    You may use this file in accordance with the end user license
    agreement provided with the Software. For licensing terms and
    conditions see License.txt"

makemkv-oss-1.17.7/License.txt has some different to "eula_en_linux.txt", but the part about reverse engineering is identical.

Looking at the build scripts, it appears that makemkv-oss-1.17.7/makemkvgui/src is combined with makemkv-oss-1.17.7/makemkvgui/bin/image_data.bin (which is a very suspicious 29MiB binary file with no immediately evident format - the most plausible explanation it's full of heavily obfuscated copyright infringement) to make;
out/makemkv

readelf -d makemkv-oss-1.17.7/out/makemkv;
...
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libQt5Widgets.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libQt5Gui.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libQt5DBus.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libQt5Core.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
...

As can be seen about, it's a derivative work of glibc, libgcc (although an exception for anything applies), qt5core, qt5dbus, qt5gui and qt5widgets.

glibc is LGPLv2.1+ and those qt5 packages are available either under the GPLv2, GPLv3 or the LGPLv3 (and I don't Gentoo has paid for a QT license exception). 

The relevant section of the LGPLv3 is;
"  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version."
- Section 4 is violated as reverse engineering for debugging modifications is restricted.
- Section 4 b) is violated, as a copy of the GPLv3 and LGPLv3 is not included.
 
There's also a bunch of other LGPLv3 violations in other libraries as well.



I advise that Gentoo does the right thing and stops distributing such proprietary malware that takes all too many unsuspecting users freedom (you're leading users astray from getting the real thing by installing libaacs, libdbplus and ffmpeg - instead you're leading them to run proprietarized copyright infringing versions) and asks the FSF if they'll be willing to reinstate your license for glibc.

If you don't want to do that and want to continue immorally doing the wrong thing, please advise what license(s) you have to distribute glibc, qt5 and derivative works of such.
Comment 1 Ulrich Müller gentoo-dev 2024-06-06 17:58:34 UTC
From the preamble of LGPL-2.1:

  "We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

  For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system."

Also, section 5 of LGPL-2.1:

  "A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a work,
in isolation, is not a derivative work of the Library, and therefore
falls outside the scope of this License."

So I don't think that the situation is so clear-cut, especially when the LGPL preamble explicitly mentions "permission to use the GNU C Library in non-free programs".

Disclaimer: IANAL, TINLA.
Comment 2 Ulrich Müller gentoo-dev 2024-06-06 18:01:50 UTC
(In reply to ganooslashlinus from comment #0)
> I advise that Gentoo does the right thing and stops distributing such
> proprietary malware [...]

Note that we don't distribute makemkv. The ebuild has mirror and bindist restrictions, so the tarball won't be on Gentoo mirrors.
Comment 3 Eli Schwartz gentoo-dev 2024-06-06 20:22:57 UTC
(In reply to ganooslashlinus from comment #0)
> If you navigate to makemkv-oss-1.17.7/makemkvgui/src there is the partial
> sources of the "MakeMKV" program under these terms;
> "    You may use this file in accordance with the end user license
>     agreement provided with the Software. For licensing terms and
>     conditions see License.txt"
> 
> makemkv-oss-1.17.7/License.txt has some different to "eula_en_linux.txt",
> but the part about reverse engineering is identical.
> 
> Looking at the build scripts, it appears that
> makemkv-oss-1.17.7/makemkvgui/src is combined with
> makemkv-oss-1.17.7/makemkvgui/bin/image_data.bin (which is a very suspicious
> 29MiB binary file with no immediately evident format - the most plausible
> explanation it's full of heavily obfuscated copyright infringement) to make;
> out/makemkv
> 
> readelf -d makemkv-oss-1.17.7/out/makemkv;
> ...
>  0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
>  0x0000000000000001 (NEEDED)             Shared library: [libQt5Widgets.so.5]
>  0x0000000000000001 (NEEDED)             Shared library: [libQt5Gui.so.5]
>  0x0000000000000001 (NEEDED)             Shared library: [libQt5DBus.so.5]
>  0x0000000000000001 (NEEDED)             Shared library: [libQt5Core.so.5]
>  0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
>  0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
>  0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
>  0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
> ...
> 
> As can be seen about, it's a derivative work of glibc, libgcc (although an
> exception for anything applies), qt5core, qt5dbus, qt5gui and qt5widgets.
> 
> glibc is LGPLv2.1+ and those qt5 packages are available either under the
> GPLv2, GPLv3 or the LGPLv3 (and I don't Gentoo has paid for a QT license
> exception). 


They are distributable under the LGPL, regardless of what other libraries you could opt to accept them under, which means that makemkv can be distributed as a software that is proprietary, but links to the LGPL, as long as makemkv follows the rules of the LGPL.

Hence, the addition of Qt5 into this discussion does not add any additional license concerns over and above the use of glibc.


> The relevant section of the LGPLv3 is;
> "  4. Combined Works.
> 
>   You may convey a Combined Work under terms of your choice that,
> taken together, effectively do not restrict modification of the
> portions of the Library contained in the Combined Work and reverse
> engineering for debugging such modifications, if you also do each of
> the following:
> 
>    a) Give prominent notice with each copy of the Combined Work that
>    the Library is used in it and that the Library and its use are
>    covered by this License.
> 
>    b) Accompany the Combined Work with a copy of the GNU GPL and this license
>    document.

> - Section 4 is violated as reverse engineering for debugging modifications
> is restricted.
> - Section 4 b) is violated, as a copy of the GPLv3 and LGPLv3 is not
> included.


Section 4 is upheld, since the LGPL is only concerned about the LGPL library and your right to debug and reverse engineer the LGPL portions of the combined work.

makemkv explicitly allows you to debug and reverse engineer whatever "included open source" you like, but not the proprietary components.


Section 4 b) is upheld, as the file makemkv-oss-1.17.7/License.txt contains the LGPL license in Appendix B, which covers all code shipped by makemkv, and Gentoo annotates the makemkv ebuild with:

LICENSE="GPL-2 LGPL-2.1 MPL-1.1 MakeMKV-EULA openssl"


and links that to

/var/db/repos/gentoo/licenses/MakeMKV-EULA
/var/db/repos/gentoo/licenses/GPL-2
/var/db/repos/gentoo/licenses/LGPL-2.1
/var/db/repos/gentoo/licenses/MPL-1.1
/var/db/repos/gentoo/licenses/openssl


> asks the FSF if they'll be
> willing to reinstate your license for glibc.
> 
> If you don't want to do that and want to continue immorally doing the wrong
> thing, please advise what license(s) you have to distribute glibc, qt5 and
> derivative works of such.

It is impossible to lose your license to distribute glibc, qt5, and derivative works of such by linking proprietary software to it, without doing more than simply linking to it -- because the LGPL is different from the GPL and the entire purpose of the LGPL is to permit the behavior under discussion.
Comment 4 James Le Cuirot gentoo-dev 2024-06-07 07:53:45 UTC
As stated, we have read your case and disagree with your assertions. We are not lawyers and do not claim to be experts, so you are free to make suggestions, but as far as we're aware, you are not a lawyer either. If you still wish to pursue this, then I suggest you contact the FSF, who do have lawyers that legally represent glibc. This is actually what they tell you to do:

> Once you have collected the details, you should send a precise report to the copyright holders of the packages that are being wrongly distributed. The GNU licenses are copyright licenses; free licenses in general are based on copyright. In most countries only the copyright holders are legally empowered to act against violations.

> The Free Software Foundation acts on GPL violations reported on FSF-copyrighted code. Thus, if the program includes code that is copyright Free Software Foundation, please send your report to <license-violation@gnu.org>.

https://www.gnu.org/licenses/gpl-violation.html