Re: Does Microchip play fast and loose with the GPL?



Eric wrote:
I've been looking at the PIC24 and PIC32 compilers from Microchip
lately. These are based on the gnu toolchain.

Their PIC24 compiler works for a month in a full-featured manner, and
after that it goes down to a "student edition" that has most
optimizations disabled. Once you pay megabucks you get them back. I
initially thought this wasn't a violation because I assumed they wrote
their own closed source optimizer. However, this appears not to be the
case, and the source code they released for their C30 compiler doesn't
have any reference to any kind of limitiations. So the executable they
released was clearly not built from the source code they released.

Even worse, their PIC32 compiler, called C32, has a 64K code
limitation unless you pay megabucks and that limitation also doesn't
appear in the source that they released.

Am I looking at this wrong? I thought the GPL says that you have to
release all of the source code you used to build your shipping
compiler? Can someone enlighten me?


Yes, the GPL requires them to release the source code for the binaries they ship - but only to those to whom they have given the binaries, and then only if they ask for them. So they are (AFAIK - IANAL) allowed to offer for downloaded a crippled binary version, and an uncrippled source version which does not match the binary version. But if you download the crippled binary, you can ask them for the crippled sources (and they must inform you of that right, and make it clear that the versions are different). If the uncrippled sources are easily available, then it's quite likely no one has bothered asking specifically for the crippled sources.

If, on the other hand, the downloadable sources are not full-featured (for example, they are missing the optimisations), then Microchip are on shaky ground. Anyone may buy the full version, insist on getting the source, and then publicly release the source - any attempt to restrict that would be a violation of the GPL.

It is close to impossible to integrate closed-source optimisers with gcc - the gcc architecture is specifically monolithic to avoid it. There have, I believe, been regular suggestions from gcc developers wanting to make the compiler more modular (such as actively separating the front and back end binaries) and to support plugins (it would make testing much easier). These ideas have been rejected because the FSF wants to make it hard (technically and legally) to mix closed-source code within the gcc compiler.

So any optimisers that Microchip have written for their ports of gcc will also be under the GPL.

Wherever they stand with regard to the letter of the law on the GPL, these time- and space-limited binaries are certainly not within the spirit of the GPL.

It's okay to add non-GPL'ed tools along with the GPL'ed tools (such as simulators, IDEs, hardware debugger interfaces, etc.), of course.
.



Relevant Pages

  • Re: Identifying CL Implementations?
    ... Otherwise you had to gpl all programs compiled with the gcc. ... Imagine someone replaces your gcc with some other compiler, so the resulting binary would be illegal once released without source. ... My point is that you never agreed to anything, nor were you informed that you breached some license. ...
    (comp.lang.lisp)
  • Re: Linux Advocates Fear Solaris 10.
    ... code means all the source code for all modules it contains, ... As I say below, I consider the build environment to include the compiler, ... which is not required by GPL to be distributed. ... ;"preferred form of the work for making modifications to it". ...
    (comp.unix.solaris)
  • Re: GNAT GPL Edition Maintenance and Upgrades
    ... >> affects the source code it is built from? ... > The GPL is quite clear that a program that uses GPL code in any way falls under ... Regardless of who is right about the effects of the GPL compiler on source ... created a large amount of confusion in people potentially interested in Ada. ...
    (comp.lang.ada)
  • Re: GPL vs non-GPL device drivers
    ... shipped the source code of the modified POP server. ... given you the compiler he compiled it with, ... Actually, if memory serves, when you license a work under the GPL, part of the ... a derivative work" the claim is invalid - because, as it has been shown, a ...
    (Linux-Kernel)
  • Re: undefined refrence to a function
    ... I have been trying to compile some source code that is supposed to be ... using gcc -lm helped to resolve the problems with defining the ... round() is still undefined: ... gcc is just the compiler, ...
    (comp.lang.c)