2

I asked this question a long time ago here, which was the wrong place, and got a bunch of conflicting answers from a bunch of non-lawyers.

I'm hoping for a more definitive answer here, ideally from some actual lawyers. To be clear, I'm interested in understanding the legal truth - what would likely happen in a dispute that went to court, where a judgement would have to be based on the actual wording in the license - not what the goal of the GPL is, the meaning of software freedom, what's morally correct, etc.

To be clear, I'm not intending to exploit any such loophole, if it exists. My goal is to understand if the GPL could have a specific weakness in the face of a determined adversary, so that weakness could possibly be addressed.

Original question follows:

========================

I have two "dumb questions" but their combination is somewhat surprising ...

Suppose I create some new program from scratch by writing source code S, which I keep private, and then compiling S into a binary object X. Then I publicly release X (but not S) on my website under the GPLv3 license.

Dumb Question #1: am I in any way required to make S public?

Seems like here the answer is "no": the GPLv3 is a license, with restrictions, that is granted to, and applies to, the recipients of some work (in this case the work is X). The license does not apply to me because I'm the one offering the license, not accepting it.

So it appears there is absolutely no obligation for me to ever provide source code S to anyone. Of course, any recipient of X is still free to copy and distribute the binary X to anyone they want: the GPLv3 only requires them to also provide whatever source came with it, which is none.

So far so good... next consider this clause in the Affero GPLv3 (section 13):

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.

So that sounds like I can take my binary file X, which is licensed under GPLv3, link it with an unmodified, third-party, AGPLv3 licensed library Y, creating a combined binary Z, and distribute Z under this clause.

When distributing Z, I will have to provide the source that came with Y of course per the AGPLv3, but by the above exception, the part of Z that is X is still under the GPLv3, and by the answer to Dumb Question #1, its source code can remain private.

Note that the GPLv3 has a symmetrical clause as well, this works with both GPLv3 or AGPLv3 third-party libraries:

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

Dumb Question #2: Does this logic not mean that there is a simple, legal way to combine (i.e., compile and link together) and distribute proprietary code with GPLv3 or AGPLv3 third-party libraries, without having to disclose the proprietary source code, as long as you are willing to allow your proprietary binary to be distributed freely?

Do any companies already do this, e.g., for binary firmware that can be incorporated into Linux?

  • 1
    The entire point of releasing under the GPL is to ensure access to source code. Why would you do the first if not to do the second? – cHao Apr 18 '18 at 21:18
  • What would you hope to achieve by GPL-ing your binary that you wouldn't get by just releasing it into the wild un-GPL-ed? – brhans Apr 18 '18 at 21:54
  • @brhans the point would be to take advantage of the linked AGPL library without having to disclose the source code of yours. AGPL will "infect" other libraries linked with it unless they are "GPL" — which the OP's binary kind of is :) – Greendrake Apr 18 '18 at 23:47
3

There is no loophole because a work released in object code form only — without the Corresponding Source — is not released under GPLv3, even if you say it is.

GPLv3 only requires them to also provide whatever source came with it

False. Providing the Corresponding Source is compulsory (§6 as pointed by @cHao). If they do not have access to it, it means the work has not been released under GPLv3.

  • OK thanks, it sounds like now we're getting somewhere. Can you be more precise in exactly how "work released in object code form only — without the Corresponding Source — is not released under GPLv3, even if you say it is"? By what clause does the license explicitly say that? I don't doubt it - just trying to understand. Thanks. – Archie Apr 19 '18 at 1:34
  • 1
    @Archie the absence of Corresponding Source makes it impossible for your licensees to make modifications. As the Preamble says, "Our General Public Licenses are designed to make sure ... that you receive source code or can get it if you want it". Whilst the wording of the license may be deficient giving your some formal logic win, the intent is clear, so judges would apply the Golden Rule and hold that your binary has never been GPLv3. Law is not formal logic. – Greendrake Apr 19 '18 at 6:01
  • @Archie The purpose of a license is to grant permissions to someone else. Suppose someone tried to download your software and obtain the permissions stated in the GPLv3 by complying with the obligations (by releasing the source to a third party). But since you've failed to provide the source, no one would actually be able to comply with this. Until you provide the source, a downloader must necessarily refuse your GPLv3 license offer. It would be similar if your license had said "Everyone is free to use this software under the condition that he is a married bachelor." – Brandin Apr 19 '18 at 10:25
2

The GPL doesn't just require the distribution of "whatever source came with it". See §1:

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities.

That is what is required in order for others to comply with the license. An empty src folder simply won't cut it. A recipient of your software must be able to give others access to enough code to rebuild it, or they can't comply with the license, and thus are not authorized to distribute the software.

As the sole creator of a not-already-covered work, you are not bound by that restriction. But assuming you're not just playing boneheaded legal games, you release such a work under the GPL precisely because you want others to have the source code. If you don't, then you picked the wrong license. The GPL doesn't prohibit linking to non-GPL code, so there's no requirement to work around. (Some companies do indeed release binary-only software...but they don't release it under the GPL.)

Now, if your intent is to release software under the GPL in order to satisfy the requirements for derivative works, then tough luck. See §6:

You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License...

A "covered work" is the program, or a work based on the program (ie: your derivative work), so your agreement with the prior author requires you provide enough source code to rebuild your software.

1

"The (GPL) license does not apply to me because I'm the one offering the license, not accepting it."

Sorry, but you're mistaken right there, and it's the core of the argument. You are not forced to offer the GPL license to sublicensees, as you are the original author. And you have the right to an any moment stop offering it. But when you do offer such a license, and anyone accepts the license, then the offer and its acceptance create a mutually binding contract. That is basic contract law.

Since the GPL license grants the receiver of binary code the right to source code, since you offered a GPL license and someone accepted your offer, you are therefore bound by your offer of source code.

The remainder of your question appears to build on this false premise, and is therefore unanswerable.

  • Depends on the country. According to some rather deep discussions on another site, the GPL is NOT a contract in the USA, but it IS a contract in Germany. God knows about the 179 or so other countries in the world. – gnasher729 Apr 19 '18 at 20:42

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.