4

The license (I pick GPLv3 as an example) says:

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. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work.

However, it's not clear to me what constitutes a general-purpose tool. Should it be commercially available at the time of licensing? For how long? Should it be available from an independent vendor, or could it be available only from me?

For example, imagine I've built a compiler which doesn't quite respect the language standard (e.g. makes no difference between single and double precision, or treats 1+2*3 as (1+2)*3). I could then take a GPL program, modify it to be compatible with my compiler and distribute the binaries along with the source code. Only the source code would be useless, as anyone trying to build it with a standard compiler would not be able to produce a working program. I could even make my compiler commercially available if I have to. Either way, my evil goal is achieved: you will be unable to modify a GPL program, or will have to pay me for the privilege of doing so.

Is this how GPL works, or am I missing something in my argument?

Dmitry Grigoryev
  • 1,362
  • 10
  • 20
  • 2
    does your evil plot includes redistributing some proprietary runtime libraries to support running your custom-compiled GPL program? – Philippe Ombredanne Jan 20 '17 at 07:36
  • @PhilippeOmbredanne Not necessarily, I could easily reuse FOSS runtime libraries. Or something proprietary but freely available, like Visual Studio runtime. – Dmitry Grigoryev Jan 20 '17 at 10:40
  • so this is all hypothetical: the key point is whether or not this modified GPL code will be redistributed with or without system libraries it may depend on and what is the license of these libraries. Short of that precision, doing a blanket answer is kind of difficult. The specifics do matter. – Philippe Ombredanne Jan 20 '17 at 11:27
  • @PhilippeOmbredanne OK, for the sake of clarity let's say there will be no dependencies on closed source libraries, only of FOSS stuff like libc. – Dmitry Grigoryev Jan 20 '17 at 11:36
  • and do you intend to redistribute this libc too? will it be modified to support your new twists? – Philippe Ombredanne Jan 20 '17 at 13:35
  • Is there anything that would prevent someone from creating a compiler that works like yours? – Michael Schumacher Jan 20 '17 at 17:26
  • I think what you're missing in your argument is that courts are reasonable. If this is obviously a scheme to circumvent the legitimate application of a license, courts will not be happy. Might you get away with it if it's not so obvious? Maybe. – David Schwartz Jan 23 '17 at 14:37
  • @DavidSchwartz Considering the answer I've got, do you think courts may get angry with me for using a compiler that is only available commercially? – Dmitry Grigoryev Jan 23 '17 at 14:59
  • @DmitryGrigoryev If they think it's an attempt to evade the license, probably. If they think you just happened to use a tool that just happens not to be widely available because it really was the best tool for the job, probably not. But it's hard to say. – David Schwartz Jan 23 '17 at 15:23

2 Answers2

2

You're probably not going to ever find an exact definition of what a general purpose tool is. But I think you're answering your own question. If nobody is ever going to be able to modify the software without your blessing it is simply not free and cannot possibly be GPL compliant regardless of any word-wrangling you may attempt.

One of the first statements in the GPL license:

By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.

Mans Gunnarsson
  • 2,426
  • 10
  • 19
  • But can't that argument be applied to any software which requires a proprietary compiler to be built? – Dmitry Grigoryev Jan 20 '17 at 10:48
  • 2
    Yes, of course it can. If I released some GPL software and later found a fork that could only be built with, say, visual studio, I would see that as a violation. – Mans Gunnarsson Jan 20 '17 at 11:08
  • 2
    Commercial visual studio, that is. – Mans Gunnarsson Jan 20 '17 at 11:16
  • 3
    Mans: there is no such restriction in the GPL unless you can point to a specific section or reputable commentary on that specific topic. – Philippe Ombredanne Jan 20 '17 at 11:29
  • 2
    Well, it does specifically mention "generally available free programs". I really don't see why the compiler would be an exception. I see general purpose tools more as, for example, a program that copies a file from one point to another during the installation or a text editor where some installation information is displayed. But I have no reputable sources to back this up with, just common sense and the underlying philosophy of free software. – Mans Gunnarsson Jan 20 '17 at 11:38
  • @MansGunnarsson There's no reason to see a fork that compiles with MSVC as a violation. You're free to port their changes to compile in, say, GCC if that is what your "official" version uses. You can expect other people to release their sources, but you can't expect them to do work porting them to your environment that they may not be interested in. – DepressedDaniel Jan 27 '17 at 01:38
  • @DepressedDaniel If porting is trivial, fine. If it's near impossible, as it would be if the software needs to be built with a compiler you don't even have the specification of, no. This is what I thought the original question about potentially circumventing the GPL was about. If the GPL:ed source code is useless without access to a particular non-free program it's not particularly free anymore. – Mans Gunnarsson Jan 27 '17 at 11:08
  • That's probably the sort of thing that will never be resolved until someone sues someone over it. – user253751 Nov 28 '19 at 12:39
1

I think a compiler is a general-purpose tool. In fact, I would say a compiler is the ultimate general-purpose tool as you're supposed to be able to compile any kind of program with it.

I could then take a GPL program, modify it to be compatible with my compiler and distribute the binaries along with the source code.

Sure.

Only the source code would be useless, as anyone trying to build it with a standard compiler would not be able to produce a working program.

It wouldn't be useless. Any cool features you added just need to be ported back by adding parentheses to control order of operations or specifying single- vs double- precision floating point as required for compilation with a standard compiler. This will be a lot less work than developing those features from scratch.

And if you didn't add any cool features, why would anyone care about your version at all?

Either way, my evil goal is achieved: you will be unable to modify a GPL program, or will have to pay me for the privilege of doing so.

Sure we will be able. You've put a few minor roadblocks in place, but then GPL doesn't say you have to make your modified work easy to adapt by others. You just can't hide your contribution to a GPL program in an obfuscated form like object code.

DepressedDaniel
  • 209
  • 1
  • 2
  • 2
    The more I think about this argument, the more I am persuaded by it. I can't see the original case is all that different from writing GPL'ed software in a language entirely of your own invention: you're still not obliged to give everyone else the compiler just because you give them the software. – MadHatter Jan 27 '17 at 07:08
  • A screwdriver is not a general purpose tool just because you can use it to assemble a hammer and an axe. (It is a general purpose tool, but not for that reason...) – user253751 Nov 28 '19 at 12:40