Au niveau des licences libres, il existe plusieurs grandes familles, je vais essayer d'en faire le tour ici et de dire ce qui me convient ou gène dans chacune d'elle pour expliquer mon choix.

Domaine public

Cela revient à révoquer tous ses droits de propriété intellectuelle et permettre à tout un chacun de faire tout ce qu'il veut avec le code mis à disposition.

Le gros problème vient ici du fait que le droit Suisse n'autorise pas[1] de se défaire intégralement des ses droits de copyright. De plus, mon ego sur-dimensionné fait que je tiens à être reconnu comme étant le père du code que je ponds.

Note : c'est justement parce que l'on conserve son copyright sur son code que l'on peut ensuite le proposer sous une licence de distribution plus permissive que les contraintes de base du copyright.

Famille de licences BSD / MIT / X

Ces licences offrent un maximum de libertés à l'utilisateur final. La quasi seule contrainte étant d'obliger à reconnaitre la paternité du code source.

Mon problème principal avec ce type de licence est l'absence de réciprocité : typiquement, si quelqu'un découvre une bogue importante dans mon code et la corrige, je souhaite qu'elle profite au plus grand nombre et aimerais donc que la modification soit également publiée.

GPL

Probablement la plus connue des licences libres.

Mon principal problème avec cette licence est sa viralité : l'inclusion d'un bout de code GPL dans un programme oblige à redistribuer l'intégralité du programme sous les conditions de la GPL. Je trouve ce comportement trop extrême.[2]

MPL et ses dérivés : CDDL / EPL / ...

Cette famille de licences vient se placer entre la GPL et les licences de type BSD : beaucoup de libertés (notamment la possibilité d'inclure le code dans des projets commerciaux et fermés), avec malgré tout l'obligation de rediffuser le code modifié mais sans la contrainte de viralité de la GPL.[3] Cette famille de licences contient généralement en plus des clauses spécifiant le comportement à adopter en cas de disputes concernant des brevets. Le plus grand défaut (à mes yeux) de ces licences est d'être incompatibles avec la GPL,[4] mais on peut facilement contourner ce problème en distribuant le code source sous une licence double.[5]

C'est le type de licence dont je me sens le plus proche : je ne tiens pas à interdire l'utilisation de mon code dans des applications commerciales, mais je souhaite ardemment pouvoir profiter des améliorations ou corrections de bogues apportées à mon code. Toutefois, la clause concernant les brevets m'est particulièrement étrangère et peu compréhensible pour moi. Je me suis donc naturellement tourné vers la EPL qui ne contient pas de telles clauses.

C'est en lisant attentivement la licence EPL que je me suis rendu compte qu'elle me posait un grave problème. Le dernier paragraphe contient effectivement cette simple phrase :

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America.

Problème : en cas de conflit par rapport à mon code, je ne tiens pas à dépendre des lois Étasuniennes et encore moins devoir aller me défendre devant un tribunal de l'état de New York. Je tiens à ce que le for juridique reste en Suisse.

Et maintenant ?

Des différentes licences que j'ai étudiées, pas une seule ne me convient... Que faire ?

Créer une ULLIDP ? Il y a à mon avis déjà trop de licences libres dans ce monde. De plus, je ne suis pas juriste[6] et serais bien incapable de rédiger une licence en accord avec le droit Suisse.

Créer un dérivé de la EPL pour spécifier le for juridique en Suisse ? J'ai la nette impression que récrire la licence en modifiant la phrase citée ci-dessus pour définir le Canton de Vaud et le droit Suisse rendrait la licence invalide (car probablement contraire au droit Suisse sur un petit point de détail connu des seuls juristes). Si la licence est effectivement invalidée, on se retrouve de retour au point de départ : l'utilisation du droit du copyright de base.

Voilà où j'en suis de mes réflexions pour le choix d'une licence : je n'ai pas encore réussi à trouver le Saint Graal qui me convienne. Et évidemment, tant que je n'arrive pas à décider d'une licence pour mes greffons, il m'est absolument impossible de les déposer sur Dotaddict.

Références

Pour m'aider dans mes choix de licences, j'ai beaucoup utilisé les articles HOWTO: Pick an open source license (part 1) et How to pick an open source license (part 2) publiés en juin 2006 par Ed Burnette.

Notes

[1] Du moins à ma connaissance.

[2] Et à ce que j'ai compris, ce comportement de viralité est exprimé encore plus fortement dans la version 3 de la licence : certains cas qui étaient auparavant considérés comme à usage interne, et donc n'obligeant pas une redistribution du code, sont dorénavant considérés comme correspondant à une mise à disposition d'une application. Prenez le cas des web services par exemple.

[3] La publication des modifications n'est obligatoire que pour le fichier d'origine qui aurait été modifié et non pas l'intégralité du code du programme.

[4] Il n'est donc pas possible d'inclure du code distribué selon une de ces licences dans une application distribuée sous licence GPL.

[5] Et la GPL étant plus restrictive que la famille des licences MPL, on ne perd rien en libertés laissées aux utilisateurs.

[6] Et je n'ai pas non plus de juristes parmi mes connaissances.