On 2/25/19, 5:25 PM, "Karlin High" <karlinh...@gmail.com> wrote:
On 2/25/2019 10:44 AM, Carl Sorensen wrote: > A further look into PureDarwin's website shows that many of the Darwin utilities in fact link to closed-source Apple libraries. > > So probably we can't even ship a command-line-only version of LilyPond without having linking ability to OSX. Now, I expect the problem with linking to closed-source Apple libraries is that the GNU General Public License doesn't allow for it? On a non-GPL operating system, interaction with closed-source, non-free software can't really be avoided; where's the boundary for GPL acceptability? Reading from the GPL FAQ, it appears that as long as the libraries are System Libraries (and I think the OSX SDK libraries are System Libraries), and the libraries are linked as part of an executable, it's OK: "Can I link a GPL program with a proprietary system library? (#SystemLibraryException) Both versions of the GPL have an exception to their copyleft, commonly called the system library exception. If the GPL-incompatible libraries you want to use meet the criteria for a system library, then you don't have to do anything special to use them; the requirement to distribute source code for the whole program does not include those libraries, even if you distribute a linked executable containing them. The criteria for what counts as a "system library" vary between different versions of the GPL. GPLv3 explicitly defines "System Libraries" in section 1, to exclude it from the definition of "Corresponding Source." GPLv2 deals with this issue slightly differently, near the end of section 3." The GPL3 definition of a System Library: "The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it." On the other hand, if you are using dynamically linked libraries, you can't distribute them with your program: "I'm writing a Windows application with Microsoft Visual C++ (or Visual Basic) and I will be releasing it under the GPL. Is dynamically linking my program with the Visual C++ (or Visual Basic) runtime library permitted under the GPL? (#WindowsRuntimeAndGPL) You may link your program to these libraries, and distribute the compiled program to others. When you do this, the runtime libraries are “System Libraries” as GPLv3 defines them. That means that you don't need to worry about including their source code with the program's Corresponding Source. GPLv2 provides a similar exception in section 3. You may not distribute these libraries in compiled DLL form with the program. To prevent unscrupulous distributors from trying to use the System Library exception as a loophole, the GPL says that libraries can only qualify as System Libraries as long as they're not distributed with the program itself. If you distribute the DLLs with the program, they won't be eligible for this exception anymore; then the only way to comply with the GPL would be to provide their source code, which you are unable to do. It is possible to write free programs that only run on Windows, but it is not a good idea. These programs would be “trapped” by Windows, and therefore contribute zero to the Free World. " Here's a case where a library isn't a System Library: "I'd like to modify GPL-covered programs and link them with the portability libraries from Money Guzzler Inc. I cannot distribute the source code for these libraries, so any user who wanted to change these versions would have to obtain those libraries separately. Why doesn't the GPL permit this? (#MoneyGuzzlerInc) There are two reasons for this. First, a general one. If we permitted company A to make a proprietary file, and company B to distribute GPL-covered software linked with that file, the effect would be to make a hole in the GPL big enough to drive a truck through. This would be carte blanche for withholding the source code for all sorts of modifications and extensions to GPL-covered software. Giving all users access to the source code is one of our main goals, so this consequence is definitely something we want to avoid. More concretely, the versions of the programs linked with the Money Guzzler libraries would not really be free software as we understand the term—they would not come with full source code that enables users to change and recompile the program. " "Can I write free software that uses nonfree libraries? (#FSWithNFLibs) If you do this, your program won't be fully usable in a free environment. If your program depends on a nonfree library to do a certain job, it cannot do that job in the Free World. If it depends on a nonfree library to run at all, it cannot be part of a free operating system such as GNU; it is entirely off limits to the Free World. So please consider: can you find a way to get the job done without using this library? Can you write a free replacement for that library? If the program is already written using the nonfree library, perhaps it is too late to change the decision. You may as well release the program as it stands, rather than not release it. But please mention in the README that the need for the nonfree library is a drawback, and suggest the task of changing the program so that it does the same job without the nonfree library. Please suggest that anyone who thinks of doing substantial further work on the program first free it from dependence on the nonfree library. Note that there may also be legal issues with combining certain nonfree libraries with GPL-covered free software. Please see the question on GPL software with GPL-incompatible libraries for more information." I'm not a lawyer, but this is what I found on the GNU website. Carl _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel