This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: libguile and readline (again!)


First my little bit of legal guesswork (naturally with no precedent
to back it up nor any guarantee should it be wrong):

If a propriety application offers to its user the facility to
link with ANY dynamic library (using dlopen() or similar) then there
is nothing to stop the user deciding to link with a GPL library.
In such a situation it seems to me impossible to attempt to stop
either the propriety application or the user from persuing this
path.

If a propriety application actually finds and links with
GPL libraries automatically then pressure on the application
developer may discourage this behaviour.

For example, Microsoft Visual Basic has the facility to declare
VB functions by specifying the function interface and the DLL file
where ther function code lives. Using this facility, a VB programmer
can easily make use of any GPL libraries that can be compiled into
DLL form. Can we prevent VB programmers from doing this? I don't
think we could or even should. Can we prevent Microsoft from providing
linking facilities? Not even a slight chance since most of their
code depends on this ability.

In simple terms the line has to be drawn somewhere or else we are
all going to look silly at some future point. It is my belief that
if the user initiates the linking process without help from the
application then that must be regarded as kosher. If the application
encourages the user to link to GPL libraries by doing it automatically
then that is not kosher.

(plodding enough?)

Now to be more specific...

On Mon, Feb 15, 1999 at 11:21:12PM -0500, Richard Stallman wrote:
> It might be reasonable to divide what is now Guile
> into a part that carries the license exception, and a part
> that is not relevant to writing most extensible applications
> and does not carry the exception.
> 
> If we do this, it would be reasonable for the part that does not
> carry the exception to use Readline.

I completely agree. My suggestion is that libguile be exactly that,
a library. In particular, it should provide NO REPL facilities at all!
Most applications that use libguile will want a scripting language and
that is what it is designed to do. Providing REPL facilites is a sideline 
that happens to make useful debugging. However large ammounts of both
the ice-9 code and the libguile code are devoted to providing a REPL
environment.

A separate REPL application should be written that links in readline
and libguile and brings the two together. This can be a GPL application.
There are (aside from the legal issues) some excelent technical
reasons to do this.

Firstly because it would force the guile developers to see things from
an application writers point of view. The whole world does not revolve
around a command prompt REPL and libguile should be equally suitable
for taking it's expressions from an arbitrary input.

Secondly, it would remove one dependency from the guile linking which
is (in my opinion) more complicated than it needs to be. Libraries should
in principle be as independent as possible.

Thirdly, in the current situation, if I wanted to release a propriety
program in binary form that used libguile I would find that it runs
on some systems and not on others depending on exactly how guile was
configured on those systems. This is because each application must
be linked against EXACTLY the same libraries as libguile was for the
thing to work at all. At the moment, guile might as well be GPL because
the only viable distribution method for application programs is via
source code (or statically linked monoliths). This is no problem for me
because I distribute source. Serious propriety developers would not
touch something like guile with a barge pole.

> However, if we do this, we must carry it out very carefully, labeling
> the parts very clearly, so that users won't fail to notice the two
> different parts.  This is very important, and perhaps we should go so
> far as to release the two parts as separate tar files.

>From an application developer's point of view this makes sense.
You can then tell people that in order to use your application that they
need to download the LIBRARY component of guile. When they do so (and compile
and install it) they get a LIBRARY -- they are not forced to get stuff that
they are not going to use.

	- Tel