8

Can I redistribute the binary form of someone's LGPL code compiled with a proprietary compiler which is not included in the operating system?

LGPL 2.1 says:

For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

Do I have to redistribute the proprietary compiler, too? Of course, I don't have a permission to redistribute the proprietary compiler.

  • Hmm, good question. I'm sure people must do this all the time because something like Visual Studio cannot be redistributed, but neither does it come with the OS. – curiousdannii Aug 14 '16 at 0:25
  • Note that this clause is not part of the LGPL 3.0 license. – curiousdannii Aug 14 '16 at 0:28
  • I don't agree that LGPL3 doesn't have this clause. LGPL3 has a similar sentence "any data and utility programs needed for reproducing the Combined Work". But, GPL3 explicitly states "general-purpose tools" is not included in "Corresponding Source". I think the compiler is a "general-purpose tools". I agree I don't need to redistribute the proprietary compiler in LGPL3. Thank you. – fujii Aug 14 '16 at 3:45
6
+100

I asked FSF the same question. This is the FSF's answer:

Please see: http://www.gnu.org/licenses/gpl-faq.html#NonFreeTools

I hope this is of help.

I asked again:

For example, a proprietary UNIX includes a proprietary compiler. I can redistribute the executable of someone's LGPL program without redistributing the proprietary compiler because LGPL allows it as a 'special exception'. And, users can reproduce the executable with the proprietary compiler which is included in the OS. I think the FAQ mentions about this case.

LGPL ensures users can reproduce a functionally same executable. But, for example, if no compiler is included in the operating system, users can't reproduce the executable. LGPL requests to redistribute any data and utility programs needed for reproducing the executable. Do I have to redistribute the proprietary compiler in this case?

FSF answered:

If the executable can be compiled with a different compiler, for instance one which is free software such as GCC, this shouldn't be an issue.

1

As curiousdannii notes in the comments, this restriction is not in LGPL3. If the project specifies "LGPL 2.1 or later", you can chose LGPL version 3 and avoid this clause entirely.

I don't think a compiler counts as "data and utility programs". The keyword there is "utility". A compiler is not something like a shell script or a build settings file, it is the core mechanism of software development.

Also, the FSF states in the GPL FAQ:

Does the GPL require me to provide source code that can be built to match the exact hash of the binary I am distributing?

Complete corresponding source means the source that the binaries were made from, but that does not imply your tools must be able to make a binary that is an exact hash of the binary you are distributing. In some cases it could be (nearly) impossible to build a binary from source with an exact hash of the binary being distributed — consider the following examples: a system might put timestamps in binaries; or the program might have been built against a different (even unreleased) compiler version.

The last clause is of special relevance to us. I think the spirit of the (L)GPL is that you must allow users to build an executable that produces the same behaviour and outputs to yours given the same inputs and states. With both this FAQ and the initial point in mind, I think you are in the clear.

But I am not sure of this answer. I would strongly advise that you write to the FSF and ask for their clarification.

  • This FAQ mentions about exactly same binary. This means users already have a old version of the compiler which is included in the operating system. What if no compiler is included in the operating system? User can't reproduce the executable. – fujii Aug 14 '16 at 3:48
  • @fujii You're right about that, which is why I advise you contact the FSF or get a lawyer. I'm hoping someone else will answer with a better interpretation than mine. – EMBLEM Aug 14 '16 at 4:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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