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.