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] date manipulation library
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2003-09-19 (14:48)
From: Florian Hars <hars@b...>
Subject: [Caml-list] A plea for clear licenses (Was: date manipulation library)
            "Do not write a new license if it is possible to use one of
             the ones listed here."

Pierre Weis wrote:
> And check htmlc since it can be used for every thing you like: you
> just have to distribute the original source files of the library and
> the LICENSE file.

What you say isn't what the license says. It says (if you get past the 
infinite recursion between point a- and b-, that is) that you can either 

- the original, unaltered source
- a compiled version of the original, unaltered source
- a derived work in the form of the original, unaltered source together
   with a patch against this original, unaltered source, for the receiver
   to compile. ("consists of" is stronger than "contains").

It doesn't allow you to distribute compiled versions of derived works 
like, for example, a program that uses the date manipulation library 
included with htmlc.

Maybe the intention was different, but the wording is so terribly 
unclear that nothing more can be deduced from this document.

See also point 5 of on how 
to choose a free license.

As far as I can see, there are three viable, essentially different 
license choices for ocaml library code:

1. Plain GPL, if you want to make the library and all derivatives free
    in the GNU sense.

2. LGPL plus linking exception, if you want to keep the library free,
    but want to allow commercial use. This is the license of the ocaml
    standard library, and using it as a default makes it easier to
    combine different libraries in a project. You should only use another
    license if you really know why you do it (for example, to achieve the
    effects of point 1 and 3).

    Note that because of the way the ocaml linker works the plain LGPL
    may or may not be equivalent to the plain GPL for ocaml code. Some
    lawyers (those of IBM, for example) think that you should always
    distribute code that uses LGPL code under 6b) of the LGPL and link
    the code dynamically to steer clear of possible problems. But this is
    not possible with ocaml. And re-linking a compiled object with a
    modified version of a library can result in the linker complaining
    about inconsistent interface assumptions for all but the most trivial
    changes, which makes it very difficult to distribute a compiled
    program in accordance with 6a) of the LGPL, which leaves you with
    distribution of the source as the only option.
    (Of course you can refactor your aplication into a functor and
    distribute a source file that instatiates this functor with the LGPL
    library, but this is not necessarily what I would call 'elegant'.)

3. BSD/X11-style, if you want to make your library free in the BSD

Using anything else will just add to the confusion, splinter the 
language community, turn the grass yellow and make your hair fall out.

Yours, Florian Hars.

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: