|
From: | Hyman Rosen |
Subject: | Re: Microsoft's Linux Kernel Code Drop Result of GPL Violation |
Date: | Thu, 30 Jul 2009 16:29:49 -0400 |
User-agent: | Thunderbird 2.0.0.22 (Windows/20090605) |
Florian Weimer wrote:
* Hyman Rosen:For example, the system call "write" in UNIX is described in the C programming language as 'int write(int fd, char *buffer, int len)' meaning that it takes three arguments - an integer representing the output device or file to which to write, the address of a buffer containing the data to be written, and an integer giving the number of bytes of data to write - and returns an integer representing the number of bytes actually written.Now make it printf, or gettext, or __divdi3. None of them provides a thin wrapper around some other subsystem service. I don't think there are many UNIX-like systems which are structured that way (fat kernel and thin userspace).
Oh, sure. But the system library exception is a bit broader to allow for that. GPLv3 says 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 The first part of that clause is what I've described. The second part is the weird catchall that covers the routines you talk about. As long as there is some available source implementation (and it's not even clear that this means freely available) of those routines, you don't have to include the non-free library in the corresponding source. GPLv2 said However, as a special exception, the source code 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. and so covered the system libraries whether the functions they included were thin or thick. Oh, and I finally see what you meant about "accompany the executable". It still doesn't apply to Interix - accompany the executable means you ship the system library along with your program and then the program executes routines in that library when it runs. The GCC shipped with Interix doesn't use the non-free library as part of its execution - it links that library into executables it generates. As I said, the whole system library thing is dodgy with respect to the goals of free software, but it's have that or have free software be unable to run in some environments at all.
[Prev in Thread] | Current Thread | [Next in Thread] |