3

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?

4
  • 2
    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
    Commented Apr 18, 2018 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
    Commented Apr 18, 2018 at 21:54
  • 1
    @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
    Commented Apr 18, 2018 at 23:47
  • 1
    ideally from some actual lawyers You should assume nobody here is a real lawyer, especially if they claim to be.
    – Patrick87
    Commented Jun 3, 2021 at 12:04

6 Answers 6

5

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.

4
  • 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
    Commented Apr 19, 2018 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
    Commented Apr 19, 2018 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
    Commented Apr 19, 2018 at 10:25
  • I think you need to make clear that "your binary has never been GPLv3" means you cannot make copies of it without committing copyright infringement.
    – gnasher729
    Commented Jun 3, 2021 at 6:46
3

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.

2
  • 1
    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
    Commented Apr 19, 2018 at 20:42
  • Reading this again: In Germany, it is a rather unusual contract in that one side who gives things away doesn't require any proof of you that you accepted the contract. At an extreme, a case could go to court, and the judge asks you straight "did you or did you not accept this contract", and since nobody can proof that you are lying, you can say what you like - but whatever you say has consequences.
    – gnasher729
    Commented Jun 3, 2021 at 6:49
0

When you created a program (from scratch), you are the author of that program, aka the copyright owner. Such ownership comes with certain rights, granted to you by the Copyright Law of your country. If any other person or organization wants to use your program, they must obtain a permit from you, which you usually give in the form of a license.

Now, the text of the license is addressed to a user of your program, not to you the author. As such, the word "You" within the license means "the user". Section 0 of GPLv3 even states this explicitly:

Each licensee is addressed as “you”

So, this is the first source of confusion that some have expressed: the GPL license puts the obligation to provide the source code on the user, not on the author. In fact, I do not see any kind of obligation that the license imposes on the author. So even if you live in a jurisdiction where a license can be considered a contract, this particular contract does not bind you in any way.

In short: no, you, the author, do not have to provide your source code if you don't want to.

One of the commenters mentioned that based on the preamble's statement that Our GPLs are designed to make sure that ... you receive source code or can get it if you want it, a judge may issue a ruling that this creates an obligation on the author to furnish the source code. However, I consider this to be very unlikely, as introductions typically have little legal weight. In fact, the introduction itself says as much at the end: The precise terms and conditions for copying, distribution and modification follow.

Another point of interest is, as mentioned by @cHao, whether the users of your program will be able to create derivative versions based on your Program. Section 6 of GPL requires that the derivative ("covered work") be conveyed in "Corresponding Source" form, which includes source code for both their and your code. Obviously, they wouldn't be able to satisfy this requirement. However, there's also Section 5, which allows the user to

... convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4,

whereas Section 4 does not require Corresponding Source but only

You may convey verbatim copies of the Program's source code as you receive it.

Thus, the users of your program will be able to create derivative works, but will be forced to distribute them in source form only.

Lastly, it is always useful to think who has the standing to sue in case the terms of the license are violated. For example, if the user of your program goes on and distributes his modified version under the terms of Section 6, then you (the author) will be the only party with the standing to sue, accusing your user of violating the terms of the license by not providing the source code of your program (which they never had). I have a feeling, however, that the judge will not find such a case persuasive.

0

you include an AGPL licensed library, which means that ALL your code, as well as ALL code linking to it, now MUST be released under AGPL. Which is impossible as you include libraries that are not AGPL licensed, so you're already violating the AGPL. Whether you also violate GPL3 is irrelevant by now.

And this doesn't just relate to using AGPL code in your application, even if you were to compile the AGPL dependent part into a web service and call that remotely (over a network connection) from the rest of your system that entire system now becomes infected by the AGPL. Even worse, if you call a service created by someone else that is AGPL licensed (even if they fail to disclose so! possibly because they don't realise it) your code is now infected by the AGPL as well.

Such is the toxic nature of the AGPL, and which is why any sane person would never allow it anywhere near their computers, and why you should always be extremely wary of calling any 3rd party web service or other resource from your software.

Note though that you don't have to actually make your source code publicly available for download. You just have to provide a means for people to receive it that is available for any interested party. So an email address where the code can be requested suffices, a physical mailing address where a CD-ROM can be requested MIGHT suffice as long as there are no shipping restrictions that prevent shipping those CDs to parts of the world.

0

The consequence of violating the GPL license is that the copyright holder can successfully sue you for copyright infringement.

If you, Mr. A, write some software and are the sole copyright holder, you can absolutely release it under the GPL license and not provide source code, because you yourself are the only one who can sue you for doing it, and you are not going to do that. Of course that is a rather pointless thing to do and doesn't serve any good purpose. (I can't distribute your software further under the GPL license because I have no way to give anyone the source code, I can only point them to your website. And I can't create any derived work, because I don't have the source code. So the GPL license doesn't make any difference. )

Now if you combine your software with my GPL licensed software, the result has two copyright holders: You and me. If you distributed the combined software without providing source code, or even just without the source code for your part, you are violating the GPL license and I can sue you for copyright infringement. So the answer to "Dumb question 2" is: Absolutely not.

1
  • 'If you, Mr. A, write some software and are the sole copyright holder, you can absolutely release it under the GPL license and not provide source code, because you yourself are the only one who can sue you for doing it' I wonder: if Mr. A charges a fee for software, having first showed the recipient a licence document that says "you may modify and/or redistribute this software as long as you comply with condition C", then Mr. A makes it impossible for the recipient to comply with condition C, might Mr. A fall foul of advertising standards or trades descriptions law in some jurisdictions? Commented Jun 29, 2023 at 19:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .