3

This question already has an answer here:

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?

marked as duplicate by curiousdannii, Mureinik, Community Jan 27 '17 at 8:34

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 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 7: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
1

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.

  • 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
  • 2
    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
  • 1
    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
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.

  • 1
    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 7:08

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