Path: gmd.de!ira.uka.de!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu! pacific.mps.ohio-state.edu!cis.ohio-state.edu!gnu.ai.mit.edu!rms From: r...@gnu.ai.mit.edu (Richard Stallman) Newsgroups: gnu.misc.discuss Subject: Issues related to MS-DOG binaries Date: 12 Apr 1993 20:18:48 -0400 Organization: GNUs Not Usenet Lines: 64 Sender: dae...@cis.ohio-state.edu Distribution: gnu Message-ID: <9304130018.AA27136@mole.gnu.ai.mit.edu> The purpose of the GNU project is to promote making software free. The GPL was designed to make a big, thick wall between free software and non-free software, to prevent them from mixing--because any mixing of the two tends to have the effect of turning free software into non-free software. However, since distributing any executable for even a Unix system required using libc, which is proprietary, an exception was added many years ago to the GPL to permit linking with libraries that come with the operating system. A few years ago, the rise of unbundled systems led to a problem with that state of affairs. It ceases to be meaningful to ask whether something "accompanies the operating system" if the operating system is not one piece. So the GPL was changed to permit use of libraries that accompany any major component of the operating system, such as kernels and compilers. For MS-DOG, the issue came up a couple of years ago of whether it was permissible to link with the libc libraries that come with compilers. I came to the conclusion that these compilers are major parts of the operating system. They are not part of MS-DOG, but MS-DOG is just the kernel, not the operating system. Last week, I heard that an executable of Emacs for Windows was being distributed linked with a memory extender for which source is not available. I stated that this sounded like a violation of the GPL. When it was pointed out that the extender accompanied the compiler, I had to think for a while before coming to the same conclusion as before--that the use of this extender was ok--and remembering that the issue had come up before with MS-DOG. I'm sorry that this caused unnecessary alarm about distributing MS-DOG executables. I mentioned the idea that the user should be able to reproduce the executable from the sources of the free program. Some people took this too literally: it is not vital that the user be able to reproduce a precisely identical executable. But they need to be able to reproduce an essentially equivalent executable, given the reasonable tools. (When I say tools, I exclude libraries and .o files, except those that belong with other things that really are tools.) Some people have suggested changing the GPL to broaden this exception to include all sorts of analogous situations. That would make sense if the primary goal were to permit as much as possible. But actually the main goal of the GPL is to make sure that improvements made to free software are themselves free. The exception is intended to be *as small as possible* while permitting a usable way to distribute executables of GNU software for various popular systems. Making the exception any bigger can have a big downside. The continued improvement of GNU software is due, to a large extent, to improvements made by companies and by people who work for companies. If these companies could expect to profit by keeping the changes proprietary, many of these changes would not be available for the version that we all can use. We depend on the GPL to prevent that. So, while the GPL can be changed if it is unclear, or gets in the way of reasonable free software activity, all change has to be designed with this kept in mind.