Pedro: > Yes, you can release a GPL application that requires proprietary operating > systems and compilers. Nothing is said about money, though.
Yes, you can release a (L)GPL application that requires proprietary operating systems and compilers. That is why it is valid to release FluidSynth for Windows. It is valid to say "you won't be able to run this free software unless you pay money for the operating system which it requires." However, making your own customised version of FluidSynth for Windows requires just one proprietary thing: Windows. Windows is "the operating system on which the executable runs" so it is excluded from the LGPL's requirement that it be distributed with the work. You could argue (as I did facetiously above) that the FluidSynth team is required to distribute GCC along with FluidSynth, because GCC is not "normally distributed ... with the major components ... of the operating system on which the executable runs." But that's a bit of a silly argument because GCC is available for free, so it would be ludicrous to include it in the FluidSynth distribution. If worst came to worst, you could always "Accompany [FluidSynth] with a written offer ... to give the [user a copy of GCC]." So it is perfectly valid to release LGPL software on Windows. As David pointed out, there is a slight incongruity with free software that requires proprietary compilers. Ignoring the obscure case of software that uses Microsoft-only extensions, there is also the case of software that uses proprietary languages, such as .NET (pre-Mono, or using Microsoft-only features). Perhaps technically that should be excluded too, but I'm not here to comment on that case. I think it's possibly rare enough to overlook. However, iOS (un-jailbroken) is a very different beast. As far as I am aware, the following tools are required to completely reproduce a working binary of an app that runs on an un-jailbroken iOS device: 1. An Apple Macintosh, required to run XCode 2. XCode, required to compile software 3. An Apple developer license ($99), required to sign the binaries to run on the phone (certainly for distribution, but I believe even for testing / individual use) 4. Explicit approval by an Apple employee, on a case-by-case basis (required for distribution) I list these because these are what I would consider to be part of the LGPL's "any data and utility programs needed for reproducing the executable from [the work]." The first two are interesting because even though XCode is free, I note that unlike the Visual Studio case, XCode is not a component "of the operating system on which the executable runs". The operating system on which the executable runs is iOS. XCode requires Mac OS X. The LGPL explicitly says it must be the same operating system, because otherwise Microsoft could release a "Windows Developer Edition" and we would want the LGPL to prevent the possibility of writing software for "Windows Standard Edition" but which requires the much more expensive "Windows Developer Edition" in order to compile. Then the software wouldn't be free (libre), because the ordinary user of the (non-gratis) operating system would not have the power to modify the software without a much larger (non-gratis) purchase. It is the same with iOS, because anybody who has an iPhone does not necessarily also have a Mac, and therefore are powerless to rebuild the software for their own operating system. The third one is the same argument I brought up before: Because the Apple developer program ($99) is *not* "normally distributed ... with the major components ... of the operating system" (even if we consider that operating system to be the Mac). As far as I know, while XCode is free, this license is required in order to test the software on a real phone. Therefore, without that license, you cannot "reproduce the executable" (the actual binary that can run on the iOS device). As Pedro pointed out, gratis isn't *really* the issue. But it sort of is, because if it was free, like the facetious GCC argument above, it would be a very weak argument to claim non-compliance with the LGPL because it didn't include a free tool. But since it costs $99 per year, that really is a valid argument. I cannot reproduce the binary without this tool, which is not distributed with either Mac or iOS, and would cost money to purchase. Therefore, that tool must be included with the LGPL'd software. As this would violate Apple's license restrictions, it implies that iOS is incompatible with the LGPL. I put the fourth one there, even though it's only required for distribution. It's hard to say whether the LGPL covers this, but I would say it does. Even though you can compile a *test* version of the software with just steps 1-3, you haven't reproduced the executable, because the executable, in its original form, was able to run on iOS devices without a developer license, and the one you reproduced is not. Therefore, without step 4, you are unable to reproduce the same executable -- specifically, you are only able to produce a crippled executable that won't run on any other device than your own -- surely against the spirit, if not the letter, of the (L)GPL. So I consider step 4 to be part of the programs needed for reproducing the executable. You might also say that it isn't a "data or utility program", since it is a human step, equivalent to knowing how to use a makefile. But that's not true, because it *is* a utility program -- a human at Apple is going to use a program to sign that binary, as well as secret data (the Apple primary key). So there is both data and a program involved in that step which you certainly cannot distribute, nor is it included with the operating system. To summarise, any iOS app, even if its source code is fully disclosed, cannot possibly grant all of its end users the ability to reproduce the executable, for three reasons: 1. It requires a Mac, which is not the same operating system as iOS, 2. It requires a subscription to the Apple developer program, without which it is impossible to test on a real device, 3. It requires explicit approval from Apple, without which it is impossible to distribute to others. On my point 3, it may seem like I am being overly picky. (Surely it is sufficient that the user can modify the program and test it without the ability to distribute their modified changes to others?) But no -- point 3 is in fact essential in the Free Software Foundation's definition of free software. From https://www.gnu.org/philosophy/free-sw.html, the final of the "four freedoms": "The freedom to distribute copies of your modified versions to others (freedom 3)." This last point is one of the main reasons the (L)GPL was written in the first place. _______________________________________________ fluid-dev mailing list fluid-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/fluid-dev