Hacker News new | ask | show | jobs
by tobiasu 1844 days ago
The downvotes are utterly ridiculous.

Unlike other parts of GCC, GNAT copyright is held by AdaCore due to some special arrangement with the FSF.

For the compiled CE releases on their website, AdaCore strips the runtime exception:

  -- As a special exception under Section 7 of GPL version 3, you are granted --
  -- additional permissions described in the GCC Runtime Library Exception,   --
  -- version 3.1, as published by the Free Software Foundation.               --

So yes, binaries compiled with that particular compiler are de-facto under GPLv3, and you have to abide by its terms (eg. if a customer using these binaries requests the source code)

You are of course free to build the compiler yourself, or use the Ada compiler that comes with your distro.

The sources are available, you just don't get a tag that tells you which exact combination of files AdaCore used to build and verify their binaries.

This is a strategic PITA, and AdaCore have in recent years made some moves to improve the situation, with being active on github and responding to issues in general.

3 comments

You seem to have various misconceptions; I suggest you consult your legal advisor.

> Unlike other parts of GCC, GNAT copyright is held by AdaCore due to some special arrangement with the FSF.

Adacore holds at least the copyright of their own contributions and therefore can decide whether they want to release their version of GNAT with or without the runtime library exception; the FSF version eventually inherits also the contributions of Adacore, but the Adacore version is more current.

> So yes, binaries compiled with that particular compiler are de-facto under GPLv3, and you have to abide by its terms

This doesn't have anything to do with source or binary version. The reason is that the binaries provided by Adacore are compiled from their (most recent) source version which they publish under GPL without the runtime library exception. For this (and only this) reason you create a "combined work" when you link your code with the Adacore version of the runtime library. This doesn't change in any way if you compile the GNAT version of Adacore by yourself; you still don't have the runtime libary exception which only Adacore can give for their contributions.

> I suggest you consult your legal advisor.

So do I.

> Adacore holds at least the copyright of their own contributions and therefore can decide whether they want to release their version of GNAT with or without the runtime library exception.

Indeed.

> the FSF version eventually inherits also the contributions of Adacore, but the Adacore version is more current.

AdaCore contributes to GCC, with some contributions copyright FSF, some copyright AdaCore.

AdaCore retains full rights on the later, limited by whatever private agreement they have with the FSF.

Whether it is more current or not is not relevant to the discussion, and given that GNAT CE has release cycles of 1 year it stands to reason that FSF GNAT gets bugfixes that GNAT CE will only get in 2022.

> This doesn't have anything to do with source or binary version.

I'm now pretty convinced you're reading things that I didn't write.

You seem to be under the impression that dual licensing only works because AdaCore GNAT contains newer files.

However, AdaCore can download stock upstream gcc, remove the linking exception from files they hold copyright over, and distribute this result in source and binary form on their website.

This is due to their unique status with the FSF, something that other companies and private contributors can not do.

Finally, I have never suggested recompiling AdaCore GNAT CE sources will result in a GNAT compiler with runtime exception.

Instead I've pointed out the mechanism of how they achieve this dual licensing: A) unique status as copyright holders alongside the FSF B) strategic inclusion or removal of the runtime exception in each and every file they hold copyright over.

> So do I.

Thanks, I studied law.

> AdaCore retains full rights on the later, limited by whatever private agreement they have with the FSF.

No "private agreement" is necessary. It's just about whether Adacore grants the runtime library exception for their contributions or not. And they apparently only do that with a delay (a year or so).

Are you saying if I compile my own GNAT (from source), this exception stays in place and binaries will not be automatically GPL'd?
Watch out! If you compile the Adacore version of GNAT then you're limited by the license they give you for their version which is GPL without runtime library exception. This doesn't change when you compile their code. With some delay (a year or so) Adacore releases their versions of GNAT with runtime library exception so it can be merged with the FSF version of GNAT.
It's crazy how you are downvoted and people who are downright uninformed both about the licensing and the legal issues are upvoted.

Last time I used Ada, around ten years ago, the situation was exactly the same. This goes to show that the licensing issues around GNAT continue to hamper the ecosystem, contrary to what Adacore like to suggest.

Recently, study results were in the press (e.g. https://www.sueddeutsche.de/politik/pisa-studie-lesen-fakten...) according to which the young have more and more trouble distinguishing between facts and opinions. And everyone and their dog seems to have an opinion on everything, whether they understand any of the subject matter or not (people even seem to resent it when you have relevant qualifications and point them out). So it's no surprise that there are random votes.
Yes, that's exactly how it works.
There are multiple distributions under different licenses.

If you compile this source (CE) - yes your code must be GPL. Adacore's distribution is the most up to date.

The FSF distribution has the normal gcc exceptions. The FSF distribution is normally what's shipped with linux distros. It tends to be slightly older.

> binaries compiled with that particular compiler are de-facto under GPLv3, and you have to abide by its terms (eg. if a customer using these binaries requests the source code)

You'll be violating the terms that allow you to use the compiler if your source code isn't GPL licensed. That doesn't mean your source code is automatically converted to GPL. It just means you don't have a right to use the compiler or to distribute the binaries you've produced with it.