0

FreeBSD publishes "ports" (FreeBSD's term for packages) of software covered by the GPLv2, such as MySQL 5.6.

The GPLv2 states:

You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. ... These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

But unless I am mistaken, the FreeBSD ports system is not itself published under a GPLv2 license.

Hence my question: how is the FreeBSD project able to distribute GPLv2 software like this?

Is it relying on the following exception that is allowed by the GPLv2, or is it relying on some other rationale?

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs.

  • 5
    See the GPL FAQ item for mere aggregation. Publishing packages is a form of aggregation. You could use the same package system to publish proprietary works if you want (assuming the licensor gives you permission to do so). – Brandin Apr 5 '18 at 10:42
  • 1
    By the way, the part that you quoted says it pretty directly already: "If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections ...". A package distribution system and the packages themselves are separate works. – Brandin Apr 5 '18 at 10:46
  • 2
    If the FreeBSD ports project needs to modify a GPL project (e.g. in order to get MySQL to work with FreeBSD), then they must make the source of their modified version of that project available. – Brandin Apr 5 '18 at 10:47
  • 2
    @Brandin please don't use comments to answer a question. What you've written is a pretty much an answer, and it took you three comments to write it. Please consider writing it up as an answer! – MadHatter supports Monica Apr 5 '18 at 10:53
  • @Brandin, is it true that all of these patch files and Make-related files, some of which (IIUC) seem to be intended to interact with the MySQL source code at a level that will cause their contents to be compiled into the same executable as MySQL, and that have no other identifiable purpose, really constitute a "separate program" that is "merely aggregated" as set out in the FAQ item that you linked? If so, that is far from obvious. – sampablokuper Apr 6 '18 at 0:49
4

The FreeBSD ports system is not itself published under a GPLv2 license.

The GPL only imposes requirements on programs copied or derived from other GPL programs. Its requirements neither apply to separate programs that are used to distribute GPL-licensed software nor to separate programs that are bundled together with non-GPL programs. The GPL license calls the latter case "mere aggregation."

The FreeBSD Ports Collection is a web site hosted at https://www.freebsd.org/ports/index.html

The software which runs on their web server that shows you the Ports Collection pages, provides the search ports function, downloading and other features is a separate program from any of the packages they provide for download. FreeBSD also provides non-web based programs to manage ports, and the same reasoning applies to those programs. None of the Ports related programs (the server software; the non-web based programs) need to be GPLed.

As for the "ports" themselves:

Is it true that all of these patch files and Make-related files, some of which (IIUC) seem to be intended to interact with the MySQL source code at a level that will cause their contents to be compiled into the same executable as MySQL, and that have no other identifiable purpose, really constitute a "separate program" that is "merely aggregated" as set out in the FAQ item that you linked?

According to the FreeBSD ports page:

The Ports Collection is a set of Makefiles, patches, and description files. Each set of these files is used to compile and install an individual application on FreeBSD, and is called a port.

My understanding of the description is that the Ports Collection does not contain MySQL itself. Using their software, you download MySQL source, you download the FreeBSD port, and then you compile that into something that works on your FreeBSD system.

If you use the Ports system to make such a MySQL binary, then clearly that binary is a derivative work of MySQL, so if you distribute the binary to someone else, you would need to comply with MySQL's license, probably by distributing the source code of the version of MySQL you used plus the patches and scripts supplied by the FreeBSD ports project. See GPLv2 section 3:

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.

The only question is whether distributing only the patches and scripts by themselves (this is what the Ports Collection appears to do) therefore obligates the Ports project to supply the corresponding MySQL source code from their own servers. Presumably, their downloading tool automates the process of downloading the corresponding MySQL source code along with the patches and Makefiles. If the corresponding source code became unavailable and the patches and Makefiles continued to be distributed, they would probably be obligated to provide the corresponding MySQL source code to you by some means, at least via a written offer valid for at least three years (See GPLv2 Section 3b).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.