Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Announce: Schoca-0.2.3 released
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: skaller <skaller@u...>
Subject: Re: [Caml-list] Re: Announce: Schoca-0.2.3 released
On Tue, 2004-10-26 at 00:35, Stefan Monnier wrote:

> Following the GMP precedent (GMP was a GPL library and someone wanted to use
> it in a non-GPL product), the FSF managed to require the company to write
> the crappy implementation "fgmp" but was then satisfied.

Sounds like a con job. I can write code that requires
a GMP compatible library and FSF can't do anything about
how I licence my code -- provided I don't actually
derive any of my code from GPL'd code.

> I.e. there's a clear precedent that shows you *can* indeed use the trick of
> writing a crappy compatible library. 

The real problem is that to make your
code work properly with GMP or other library you need to
provide an interface. It isn't so easy to do that without
'deriving' from a published specification -- either the actual
headers or the documentation. You have to use the same
function names and equivalent types, and to get that right
you pretty much have to derive from the spec.

I have no idea how to do that without coming under
the control of the licence for the spec .. but if you
do manage to do so, the ability to link to the implementation
can't possibly be relevant .. unless perhaps you test
your code against it, and make bug fixes, in which case
those fixed codes just might be deemed derived works.

As it happens, Felix has a wrapper for the C++ wrapper
for GMP, and it is FFAU and not GPL because the interface
is 'the usual math operators'. I also ship a wrapper
generator that can wrap code like GMP to make it available
under Felix. Those wrappers are derived, and so they're
GPL .. but I don't ship them, only the tool that creates them.

It's not clear including such wrappers in a Felix program
requires it to be GPL either. That's because Felix has
an advanced source code linker that only instantiates
used code .. so you can have the capability there,
and perhaps your whole source is infected .. but if you
don't actually call GMP the resultant program is
no longer GPL :) Umm . what .. lol!

Which all comes back to the stupidity of trying to define
what using/linking/combining/distributing/ etc etc actually
mean. The answer is -- nothing at all, outside of existing
practice used for C programs. Interscript/Felix/Flxcc (the latter
is the wrapper generator) approach the problem in such a 
novel way that the terms of the GPL are meaningless.

For example .. the wrapper generator creates a derived
work .. but it fails to include the licence of the original
work in the generated wrappers. Is it breaching GPL?
Of course not -- its the *client* who uses it that is at risk.

Well, perhaps your /usr/include contains some code licenced
with a license incompatible with GPL .. but flxcc wraps
the *whole* of /usr/include in one go. The resultant
product is derived from all of it simultaneously.
So is it actually legal to run the tool at all??

John Skaller,
voice: 061-2-9660-0850, 
snail: PO BOX 401 Glebe NSW 2037 Australia
Checkout the Felix programming language