56

At work, we use a version of GCC provided by a vendor of a proprietary OS. The vendor has modified gcc so that it will only run if it successfully acquires one of a limited number of licenses we've purchased from our license server. This seems very much not in the spirit of free software, and it's very annoying, but is it permitted under the GPL?

Assuming it is, shouldn't I also be able to request the modified source code from the vendor, and then make a new gcc executable without the obnoxious license check? Or could that be a terrible idea for legal reasons I'm ignorant of?

9
  • 7
    @Sam Hmm... I'm not aware of any 'work-around' for the GPL. I would think that would be pretty widely-discussed if such a thing existed. I would agree with the OP that the vendor is in violation of the GPL (or at least they will be if they refuse to give him the full source code, including any build scripts or other such things necessary to build.) More likely, the provision to include the license check was made by marketing without understanding the GPL or in hopes that no one would ask them for the source.
    – reirab
    Oct 2, 2015 at 19:02
  • 1
    How do we interpret "You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License."? Are license checks considered as further restrictions?
    – ninjalj
    Oct 2, 2015 at 19:55
  • 6
    @reirab: They're already in violation if they failed to explicitly offer to provide the source, although it seems unlikely that the copyright holder would pursue a company that, having failed to make the offer, still delivered the code upon request.
    – Ben Voigt
    Oct 3, 2015 at 20:30
  • 5
    As a sidenote: Have you tried to compile the freely available gcc sources using your restricted compiler? Oct 4, 2015 at 20:26
  • 1
    In theroy, the vendor might have obtained a non-GPL license for the software: "multi-licensing".
    – JimmyB
    Oct 5, 2015 at 11:21

7 Answers 7

51

You should be able to request the complete corresponding modified source code to the complete application from your vendor under the GPL without additional costs in excess of the media. If he refuses, you can contact the FSF as the copyright holder to GCC and tell them your problems with that vendor: they are the only ones who can sue for compliance if the vendor cannot be convinced.

I suspect that the vendor would rather prefer to stop distributing GCC with a license manager compiled in rather than distributing the source code of their license manager library.

The version of GCC they distribute is most likely already one distributed under GPLv3. In that case you can alternatively ask for universal keys making this copy run. At least that's my reading of the GPLv3 but the respective sections give me a headache.

1
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – ArtOfCode
    Oct 3, 2015 at 21:43
26

The GPL only affects the source code of the project, not the binaries that are distributed. The strong copyleft clause of the GPL affects the source code, and forces that any derivative works are also licensed under the GPL, and that the source code must be available.

Can they do this? Yes, they can. As long as they respect the terms of the license, then they can do anything they want, including selling it, modifying it.

Assuming it is, shouldn't I also be able to request the modified source code from the vendor, and then make a new gcc executable without the obnoxious license check? Or could that be a terrible idea for legal reasons I'm ignorant of?

Yes, you can request the modified source code, and they will be legally obligated to provide you with that. Otherwise, they will be breaking the terms of the GPL license. Assuming that, you as well, follow the terms and conditions of the GPL, this is legally okay.

18
  • 37
    It does affect the binaries that are distributed, by requiring an offer of source code to accompany them.
    – Ben Voigt
    Oct 1, 2015 at 20:52
  • 8
    Free to those to whom the binaries have been distributed, yes (whether the binaries were sold or gratis)... and whoever is entitled to receive the source code is also entitled to distribute it further
    – Ben Voigt
    Oct 1, 2015 at 20:55
  • 1
    @MichaelSchumacher: The whole GPL is built on the concept that copying/redistribution requires permission according to law, but using the copy you've already been given, doesn't.
    – Ben Voigt
    Oct 1, 2015 at 23:52
  • 2
    @MichaelSchumacher: The answer doesn't claim that the software can be restricted by additional license requirement. What it does claim is that it is not illegal for the software to refuse to run when a remote server instructs it not to. GPL doesn't cover the software itself only the code. What is illegal is to refuse to provide the user (in this case the OP) the source code of the modified software. Basically, it is legal for the OP to modify the source code to circumvent the license server. It is illegal for his vendor to prevent him to do so.
    – slebetman
    Oct 2, 2015 at 7:02
  • 8
    Actually I realized the answer to this. Even if recompiling without the license check would be against DMCA, by licensing the product under GPL the vendor has given explicit permission for this operation to OP.
    – Taemyr
    Oct 2, 2015 at 13:11
12

In theory, you have the right to get the complete source of that modified GCC. But no one can enforce your receipt of the source. The 'perpetrator' always has the legal choice to stop distributing, and perhaps also pay a monetary settlement.

You would prefer that they were compelled to distribute the source, but the way the law is actually interpreted does not give you any handle to enforce that. What the law may achieve is that the company is enforced not to distribute the binaries anymore and to pay royalties for what has been done already.

The hope is that the economic value of selling the OS (or whatever) is so high that the perpetrator will chose to comply with the GPL and distribute the source rather than go out of the business.

I am the first person who tried to enforce the GPL in court and I failed for exactly this legal constraint. The two companies I tried to sue just stopped existing after my lawyer contacted them.

Harald Welte later succeeded just because he was able to put economic pressure on the companies that ordered hardware from China that included GPL software, and that had to pay for hardware, but could not sell the hardware as the court disallowed to sell the hardware. They complied rather than absorb that loss.

6
  • 5
    This answer should be improved by adding references to news articles - I'm pretty sure your failed trial about GPL enforcement got covered. Oct 3, 2015 at 11:06
  • 2
    Google makes it hard today, to search in news articles. There was a discussion where Eben Moglen claimed that the GPL can be enforced in court and I replied that this does not work and mentioned my example. Moglen then send a private mail where he confirmed that I am right but he also said that he is not willing top write this in the public.
    – schily
    Oct 3, 2015 at 11:17
  • 4
    You describe yourself as failing, but it sounds like you achieved the ultimate goal, which is to prevent others from redistributing the software without making the source code available. If your goal was specifically to get the modified source and nothing else, then that's not really what the GPL is for.
    – barbecue
    Oct 3, 2015 at 12:24
  • 1
    You are cool as hell.
    – L0j1k
    Oct 5, 2015 at 6:43
  • Wouldn't the legal enforcement not to distribute the binaries be a major blow for a company which seems to sell a proprietary OS? Customers won't be happy to get an OS without a compiler. Oct 5, 2015 at 9:43
4

To answer the direct question: It is not necessarily a violation of the GPL to require a license. Let me describe a scheme which I believe would comply with the terms. I have no idea if the people you're dealing with use it.

  1. Create, from scratch, a replacement for the gcc command line driver. Keep in mind that the hard part of gcc is in the back-end executables. The driver is a relatively simple program.

  2. Add licensing to the replacement driver.

  3. Distribute the replacement driver, together with the normal GCC backends.

  4. Comply with the GPL requirements to provide the source of the backends as requested.

  5. Do whatever devious trick you can think of to make it inconvenient for someone to drop in the normal GCC driver and get around your licensing.

The coupling between the proprietary front-end and the GPL backends would be via command execution, and the FSF does not call this 'linkage' and does not assert that the resulting thing would be a derived work.

Note that I'm not trying to answer the legal variant in this question: do the terms of the GPL preclude imposing restrictions on the use of the work? My personal, NAL, belief, is that the terms of the GPL only require the distribution of source, but I'm not qualified to opine with certainty.

6
  • 3
    If the coupling is proprietary, the copyright owner of the GPL work will claim that the front-end is a derivative of or otherwise inseparable from the back-end.
    – Ben Voigt
    Oct 3, 2015 at 20:28
  • The coupling isn't proprietary, unless you mean that the command line params of the back-end pieces are proprietary to the FSF. A strange claim. More likely is something like the argument that the Drupal people make about plugins.
    – bmargulies
    Oct 3, 2015 at 22:18
  • 1
    I was assuming that the compiler driver piece was computing some piece of data, not present in the normal invocation in the FSF version, that the "improved' back-end wouldn't function without. If that isn't the case, then "put back the normal wrapper" becomes trivial.
    – Ben Voigt
    Oct 3, 2015 at 22:22
  • 1
    What you've described is essentially creating a single work, and so therefore your whole thing would have to be licensed according to the GPL. This would not work. Just because you'd set it up to use commandline trickery, they aren't communicating at arms length because it's been modified to work specifically in that way. Oct 4, 2015 at 23:07
  • Sensible companies combine strong contracts with weak technical enforcement -- the technology is just there so you can't say that you didn't realize you were violating the contract. "Comments are not for extended debate". If you disagree, write your own answer or downvote.
    – bmargulies
    Oct 5, 2015 at 0:44
2

Can you confirm if the license check is done in gcc itself, and not in real compiler/linker? If you can run cc, ld and friends without restrictions, you have an easy workaround:

  1. Write Makefiles which directly use cc, ld, etc.

  2. Port the vanilla gcc frontend using the restricted version of gcc, then use your fronted as a replacement.

If you decide to make a legal claim yourself, you will most probably get the company to refund you the money you paid for the OS, but it's unlikely they will give you the source code if they don't want to. I suggest you contact FSF for advice. As copyright holders, they will have a much better stand in court than you.

1
  • cc is just another name for gcc; you might be thinking of cc1/cc1plus (which nobody uses directly because it is internal to gcc)
    – user253751
    Mar 11 at 1:28
1

It's difficult to know if they really modified code or not:

GCC consists of different tools: gcc.exe, cpp.exe, cc1.exe, as.exe and ld.exe (and possibly more).

Some companies distribute an unmodified gcc.exe and cpp.exe as well as a modified as.exe and ld.exe for use with a CPU not supported by regular GCC (I know about PowerPC with VLE instruction set).

These programs can be copied freely without a license check. I've also seen source code in the "official" GCC repository that represents the changes made by such companies.

The cc1.exe however is completely re-written and does not contain any GPL licensed source files. Or the company made deals with all copyright holders of GPL licensed source files they used - this would also be allowed. Only cc1.exe requires a license and only cc1.exe comes without source code.

In such cases there is of course no issue with the GPL.

-2

this seems similar to Redhat Enterprise Linux.

Redhat provides binaries for 3rd party software like GCC for which you need to get licenses (see http://www.redhat.com/en/about/licenses-us, in particular section 5.1).

they make modifications to some of those binaries (patches that are not (yet) sent upstream. here is an example of a gcc patch: https://gcc.gnu.org/ml/gcc/2014-03/msg00247.html).

they also provide the source, including their patches (which is used by others to build CentOS for example).

we can assume that what Redhat is doing is well vetted legally, and therefore conclude that requiring a license for binaries is permitted and that providing the source code is sufficient to follow the GPL.

(Redhat is not required to publish the source to everyone, but with the cost of the license not being astronomically high, someone is bound to pay the license just to get and republish the source, so they might as well just publish it themselves.)

10
  • 1
    You are wrong. Unless you are able to verify that the code you have in mind is not owned by Redhat, you missunderstand the problem.
    – schily
    Oct 3, 2015 at 10:56
  • huh? how is the code ownership any different? both companies ship GCC binaries. both companies require licenses to use their binaries. both companies potentially make modifications to their binaries. (not so sure in redhats case, but they may apply internal patches that are not yet upstream). what redhat is doing is clearly legal. what above company is doing, doesn't look any different. redhat releases their source. above company should too. so please explain to me how this is not comparable.
    – eMBee
    Oct 3, 2015 at 16:46
  • to that unknown voter, if you are voting this down, then please be so kind and explain why, so i can learn something.
    – eMBee
    Oct 3, 2015 at 17:02
  • @schily (i am not sure if you have noticed my response, i'd appreciate your thoughts on it)
    – eMBee
    Oct 8, 2015 at 17:05
  • If you changed your mind, you should change your answer as well.
    – schily
    Oct 8, 2015 at 17:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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