Discussion:
question de licence
(trop ancien pour répondre)
TP
2008-09-14 12:44:45 UTC
Permalink
Bonjour,

Je considère le programme simple suivant toto.ml:

let f x = x + 1;;
print_int (f 18);;
print_newline();;

Je le compile, et génère un "exécutable statique":

$ ocamlc -custom -o toto toto.ml

J'obtiens un exécutable toto de 171Ko.
Je regarde les dépendances:

$ ldd toto
linux-gate.so.1 => (0xb7fd4000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7f93000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f8f000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7f5e000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7f46000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7df7000)
/lib/ld-linux.so.2 (0xb7fd5000)

Effectivement, pas de dépendance à une implémentation ocaml.
Je me pose alors la question de savoir quelle est la licence de ces
libraries, qui appartiennent toutes au package libc6 (je suis sous
Kubuntu), et au package libncurses5 pour libncurses.so.5.

http://en.wikipedia.org/wiki/GNU_C_Library
Pour libc, c'est du LGPL, donc pas besoin que je donne les sources de mon
programme toto.ml si je fournir l'exécutable toto à quelqu'un.

http://en.wikipedia.org/wiki/Ncurses
Sous licence MIT, c'est pas du GPL.
Mais il est dit qu'ils vont peut-être passer en GPL. Dans ce cas, cela
voudrait dire qu'on serait obligé de fournir le code source de tout
programme ayant libncurses comme dépendance?

Concernant la licence de ocaml:

http://caml.inria.fr/ocaml/license.en.html

Si je comprends bien, si je distribue du "byte code" (que j'obtiens
avec "ocamlc -o toto toto.ml"), le client nécessite une distribution ocaml,
que je peux livrer avec le logiciel, mais je n'ai pas besoin de fournir le
code source.

Merci

Julien
--
python -c "print ''.join([chr(154 - ord(c)) for c in '*9(9&(18%.9&1+,\'Z
(55l4('])"

"When a distinguished but elderly scientist states that something is
possible, he is almost certainly right. When he states that something is
impossible, he is very probably wrong." (first law of AC Clarke)
Nicolas George
2008-09-14 13:02:58 UTC
Permalink
Post by TP
Si je comprends bien, si je distribue du "byte code" (que j'obtiens
avec "ocamlc -o toto toto.ml"), le client nécessite une distribution ocaml,
que je peux livrer avec le logiciel, mais je n'ai pas besoin de fournir le
code source.
Non, ce n'est pas suffisant : le fichier toto que tu obtiens ainsi contient
des bouts de la bibliothèque standard OCaml ; si tu compiles avec -custom,
il comporte également l'interpréteur de bytecode. Ces deux éléments sont
sous LGPL, ce qui signifie que tu dois donner la possibilité de les modifier
et d'utiliser les versions modifiées.

La seule possibilité à part distribuer le code source est de distribuer les
fichiers objets intermédiaires (.cmo et .cmi).
TP
2008-09-14 14:19:31 UTC
Permalink
Post by Nicolas George
La seule possibilité à part distribuer le code source est de distribuer
les fichiers objets intermédiaires (.cmo et .cmi).
Ces fichiers .cmo et .cmi sont-ils utilisables ainsi en l'état? (désolé, je
me renseigne juste sur ocaml, je ne connais pas pour l'instant).
Si non, comment distribuer à un client un logiciel écrit en ocaml sans
donner les sources?

Merci

Julien
--
python -c "print ''.join([chr(154 - ord(c)) for c in '*9(9&(18%.9&1+,\'Z
(55l4('])"

"When a distinguished but elderly scientist states that something is
possible, he is almost certainly right. When he states that something is
impossible, he is very probably wrong." (first law of AC Clarke)
David MENTRE
2008-09-14 16:23:24 UTC
Permalink
Bonjour,
Post by Nicolas George
Non, ce n'est pas suffisant : le fichier toto que tu obtiens ainsi contient
des bouts de la bibliothèque standard OCaml ; si tu compiles avec -custom,
il comporte également l'interpréteur de bytecode. Ces deux éléments sont
sous LGPL, ce qui signifie que tu dois donner la possibilité de les modifier
et d'utiliser les versions modifiées.
Non. La licence d'OCaml contient des clauses d'exception à la GPL et la
QPL qui permettent de distribuer les programmes compilés sans aucune
dépendance envers le compilateur et ses bibliothèques.

Voir http://caml.inria.fr/ocaml/license.fr.html pour les détails
(parties « As a special exception ... »).

Cordialement,
david
--
David Mentré
Loading...