Version en ligne

Tutoriel : Faire de son programme un Logiciel Libre

Table des matières

Faire de son programme un Logiciel Libre
C'est quoi, un Logiciel Libre ?
Quelques licences libres : GPL, LGPL, BSD
J'ai ma licence. Comment je l'applique à mon programme ?

Faire de son programme un Logiciel Libre

C'est quoi, un Logiciel Libre ?

Ça y est ! Vous avez enfin fini le logiciel sur lequel vous avez passé tant de temps. Maintenant, vous voulez le distribuer pour que tout le monde puisse s'en servir.
Vous avez envie d'en faire un Logiciel Libre, ou Open Source, mais vous ne savez pas vraiment comment vous y prendre ? Vous êtes au bon endroit. On va le faire ensemble pas à pas.

Bonne lecture. ;)

C'est quoi, un Logiciel Libre ?

Quelques licences libres : GPL, LGPL, BSD

Déjà, avant de faire de votre programme un logiciel libre, ce serait peut-être une bonne idée de savoir ce que c'est exactement, non :) ? Ceux qui savent déjà peuvent passer à la partie suivante. Les autres, on m'écoute (enfin... on me lit) ;) .

En fait, c'est assez simple. Un logiciel est libre si son auteur vous donne le droit de faire certaines choses avec. Voici ces "choses" :

Si l'auteur vous donne (par écrit, par exemple) ces droits sur son logiciel, vous pouvez dire qu'il s'agit d'un Logiciel Libre. Nous verrons cela en détails plus loin. Faites attention tout de même : cette définition n'est qu'un très bref résumé de ce qu'est un Logiciel Libre. Vous trouverez davantage d'informations à ce propos sur le site du projet GNU (ce sont des spécialistes en la matière, vous pouvez leur faire confiance :) ). Par exemple sur cette page.

Bref. Si vous choisissez de faire de votre logiciel un Logiciel Libre, tout le monde aura les droits que je vous ai expliqués ci-dessus. Vous pourrez néanmoins poser des conditions, comme on le verra plus bas.

Bon, OK, mais concrètement, comment mon logiciel devient libre ?

Bonne question ! En fait, pour rendre un Logiciel Libre, il suffit de lui mettre ce qu'on appelle une licence (vous savez, ce texte juridique de 3 Km de long qu'on accepte sans lire à chaque installation ;) ) qui autorise chacun à exécuter, redistribuer et modifier votre logiciel.

Bon, comme on n'est pas juristes (enfin peut-être que vous l'êtes, dans ce cas, mes excuses ;) ), on ne va pas réécrire une licence de A à Z. L'idéal est d'en prendre une qui existe déjà, et dont on est sûr qu'elle marche bien (car certains textes ne valent rien face à un tribunal). C'est de la copie, mais d'une part tout le monde le fait, et d'autre part on est sûr du résultat (en plus, en général, les auteurs des licences sont contents que beaucoup de logiciels utilisent leurs textes, ça ne les gêne pas du tout, alors pourquoi se priver ? :p ).

C'est partiiii ! Heu... ta licence, je la trouve où ? :euh:

Ho là, du calme. Déjà, avant d'aller chercher la licence, il faut en choisir une. Eh oui, il en existe plusieurs. Les différences qu'il y a entre elles sont les conditions qu'elles posent à l'utilisation(*) du logiciel. Selon celle que vous choisirez, les gens auront le droit d'utiliser(*) votre logiciel à certaines conditions, qui varieront. Je vais vous présenter et résumer trois textes, afin de vous aider à choisir. C'est dans la section suivante que ça se passe :)

--------------------------------------------------------------------------
* Par utilisation, j'entends exécuter / modifier / redistribuer / etc. le logiciel.


Quelques licences libres : GPL, LGPL, BSD

Quelques licences libres : GPL, LGPL, BSD

C'est quoi, un Logiciel Libre ? J'ai ma licence. Comment je l'applique à mon programme ?

Bon : le moment est venu de choisir la licence que vous allez appliquer à votre programme. Comme je vous l'ai expliqué, selon le choix que vous faites, vous imposerez des conditions différentes à l'utilisation du logiciel.

Globalement, il y a deux grandes familles de licences : les licences avec copyleft et les licences sans copyleft.

Copyleft ? C'est quoi ce mot barbare ?

Pour simplifier, nous dirons que le copyleft est une clause (un article de contrat ou de licence) qui oblige les gens qui modifient votre logiciel à distribuer leurs versions modifiées sous la même licence que l'original (sauf s'ils ne redistribuent pas leurs versions modifiées, ils peuvent aussi, hein ^^ ). Cela est valable pour les gens qui utilisent des bouts de votre code dans leurs programmes (c'est considéré comme une version modifiée de votre logiciel, même pour une seule fonction).

Donc, certains textes obligeront les développeurs qui utilisent votre code à redistribuer leurs versions sous même licence, alors que d'autres autoriseront la redistribution sous licence différente (moyennant quelques conditions, comme citer l'auteur original).

Je vais vous présenter trois licences. Il en existe, bien sûr, beaucoup plus. Pourquoi ces trois-là alors ? Eh bien, ce sont les textes les plus célèbres et les plus utilisés. De plus, presque toutes les autres licences ressemblent à une de ces trois-là. Deux d'entre elles ont le copyleft, le troisième non.

Voici donc la description de chacun de ces textes.

GNU GPL : la licence publique générale GNU

Celle-là, c'est la licence libre « classique ». La plus connue, du moins. Voici un petit résumé de ce qu'elle dit.

Vous reconnaissez peut-être le dernier point. Il s'agit du copyleft. Quiconque utilise un bout de programme sous GNU GPL voit son programme passer entièrement sous licence GNU GPL.

Autre point : vous avez le droit de vendre des copies de logiciels sous GNU GPL. Mais il faut savoir que si quelqu'un achète une copie, il aura à son tour le droit de distribuer le logiciel (contre de l'argent ou non). La plupart des entreprises qui créent des logiciels libres sous GNU GPL préfèrent donc vendre des services en rapport avec le logiciel, comme un abonnement de support technique par exemple.

Quelques liens à propos de cette licence :

Page officielle de la GNU GPL
L'article sur Wikipédia

GNU LGPL : la licence publique générale GNU amoindrie

C'est pratiquement la même licence que la GNU GPL. Simplement, les Zéros qui créent des bibliothèques n'ont peut-être pas envie de forcer tous les gens qui utilisent leur réalisations à mettre leur programme sous GNU GPL (quoique ça aurait fait de la pub pour le tuto :-° ). C'est le but de la licence GNU LGPL.

La licence GNU LGPL est exactement la même que la GNU GPL à une exception près : si vous liez dynamiquement du code sous GNU LGPL avec un autre code, alors l'autre code n'est pas « contaminé » par la GNU LGPL. Le code libre reste sous GNU LGPL, mais il peut être associé à du code sous une licence quelconque pour former un programme (à condition que l'association soit dynamique). Cela signifie que :

La nuance est un peu ténue, je le reconnais. L'idée, c'est de fournir une « GNU GPL pour bibliothèques » qui permet de rendre la bibliothèque libre sous copyleft tout en permettant aux éditeurs de programmes propriétaires de l'utiliser.

Dernier point important : on peut redistribuer des éléments protégés par la GNU LGPL sous GNU GPL à la place (on appelle ça la compatibilité entre les licences).

Quelques liens :

Page officielle de la LGPL
Article sur Wikipédia

La licence BSD

C'est la plus permissive des trois. Elle permet beaucoup plus de choses que la GPL et que la LGPL. Voyez par vous-mêmes :) :

Conséquences :

C'est beaucoup plus permissif. Vous voyez donc les différences qu'il peut y avoir entre plusieurs licences libres, maintenant ;) . Remarquons qu'on peut très bien mélanger du code sous GNU GPL et du code sous BSD, et redistribuer le tout sous GPL en citant le nom de l'auteur du code sous BSD.

Quelques liens :

Article sur Wikipédia
Pas de page officielle pour cette licence

Et si je veux une licence en français ?

C'est vrai, tous les textes qu'on a vus sont en anglais. Heureusement, il existe des équivalents en français : cherchez du côté des licences CeCILL (équivalent de la GPL en français) et CeCILL-B (équivalent de la BSD en français). Plus d'informations : site officiel.
Pour appliquer CeCILL ou CeCILL-B à votre programme, suivez les mêmes instructions que pour appliquer la GPL en adaptant intelligement. ;)

Les doubles licences

Certains produits, comme Qt par exemple, ont deux licences différentes.

QUOI ? C'est possible ?

Eh oui. À partir du moment où vous êtes l'auteur de quelque chose, vous en faites ce que vous voulez. Certains ont donc fait le choix de publier deux versions de leur logiciel. Les deux versions sont les mêmes, la seule chose qui change, c'est la licence. La plupart du temps, l'une des versions du logiciel est sous GNU GPL et gratuite, et l'autre est sous une autre licence (qui permet généralement d'utiliser le code dans un logiciel propriétaire), mais payante.
Ainsi, vous pouvez aider la communauté du libre en publiant vos sources, et empêcher les entreprises de profiter de votre code pour faire de l'argent (GPL), mais vous pouvez en même temps gagner des sous en donnant l'autorisation aux gens qui la demandent d'utiliser le code dans un projet fermé, contre une rémunération.

Et tu crois vraiment que les entreprises, elles vont s'intéresser à mon code ?

Ben, j'en sais rien, moi :) . Bon, allez : en fait, je voulais juste vous parler de cette technique pour vous montrer qu'elle existe. Elle est, par exemple, utilisée par la bibliothèque Qt (que j'ai déjà évoquée) : si vous faites du GPL, vous pouvez utiliser Qt gratuitement, sinon, il faut passer à la caisse (et ça fait mal au porte-monnaie pour un particulier :-° ). Et, qui sait, si vous participez à un gros projet, un jour, peut-être ferez-vous une excellente bibliothèque aussi. ;)

Et après ?

Voilà, vous en savez un peu plus : faites votre choix. À vous de voir ce que vous donnez comme droits à vos utilisateurs.

Il existe bien sûr d'autres textes possibles. Je n'en dis pas plus ici car ce n'est pas trop le sujet. De plus, la plupart des licences ressemblent soit à la GPL, soit à la licence BSD.
Voici une liste plus complète de licences libres, avec leurs descriptions : Licences sur OpenSource.org. Bien sûr, de nombreuses informations peuvent être trouvées via Google.

Bon : maintenant qu'on a choisi sa licence, il faudrait peut-être l'appliquer à son programme, non ? Suivez le guide. :)


C'est quoi, un Logiciel Libre ? J'ai ma licence. Comment je l'applique à mon programme ?

J'ai ma licence. Comment je l'applique à mon programme ?

Quelques licences libres : GPL, LGPL, BSD

Il y a deux manières d'appliquer une licence à son programme. Tout dépend de la longueur que fait votre texte. Il y a deux cas.

Licences courtes [type BSD]

Valable aussi pour les licences ZLIB et MIT, très semblables

Valable aussi pour les licences ZLIB et MIT, très semblables

Globalement, cette méthode est à suivre pour toutes les licences qui le permettent, c'est-à-dire celles dont le texte est assez court pour être mis en commentaire dans les fichiers source sans gêner.

La première étape, c'est de se procurer le texte complet de la licence. Sur opensource.org, pour BSD, on trouve :

Citation : Licence BSD

Copyright (c) <année> <nom> <prénom>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

C'est un texte court (pour une licence du moins :p ). Pour l'appliquer à votre programme, mettez simplement ce texte en haut de chaque fichier source, en commentaire. Copiez aussi le texte dans un fichier... texte. Distribuez le code source, le fichier texte et éventuellement l'exécutable ou les autres fichiers du programme dans un .zip. Le tour est joué. ;)

Votre logiciel est maintenant protégé par la licence BSD. Vous et les utilisateurs êtes sûrs de ce qui peut être fait ou non avec ce programme. Ça marche comme ça pour toutes les licences suffisamment courtes pour être incluses dans le code source.

Pour les autres, c'est par ici.

Licences longues [type GPL, CeCILL]

Celles-là, elles sont beaucoup trop longues pour être mises en entier dans le code source (la GPL fait une dizaine de pages :) ). Comment faire alors ? Cette fois, il faut commencer par prendre le texte complet de la licence et le mettre dans un fichier... texte ( :p ), qu'on distribuera avec le programme.

Le texte de la LGPLLe texte de la GPL

En général, le fichier qui contient la licence s'appelle COPYING ou LICENCE, mais ce n'est pas obligatoire.

Bon : ensuite, il faut rajouter un commentaire dans chaque fichier source, qui explique que ce logiciel est soumis à la licence (L)GPL (ou autres). Ce texte est le suivant :

pour la GPL

Citation : Pour appliquer la GPL

Copyright (C) <année> <nom> <prénom>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

et pour la LGPL

Citation : Pour appliquer la LGPL

Copyright (C) <année> <nom> <prénom>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Voilà. Vous n'avez plus qu'à redistribuer le fichier qui contient toute la licence, le code source, avec éventuellement l'exécutable ou les autres fichiers du programme (comme les images) dans un .zip. N'oubliez pas d'inclure le fichier de projet de votre IDE ou votre makefile. C'est important, car c'est considéré comme faisant partie du code source. Et voilà :) ! Votre programme est maintenant sous GPL.

Si j'ai une autre licence que ces deux-là ?

Si vous avez une autre licence longue, vous trouverez probablement le commentaire à insérer sur la page officielle de celle-ci. Pour la licence CeCILL, par exemple, on trouve :

Citation : Pour appliquer la licence CeCILL

Copyright or © or Copr. <Nom> <Prénom>

<Votre email>

This software is a computer program whose purpose is to [describe
functionalities and technical features of your software].

This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited
liability.

In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security.

The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.

Voilà. Les commentaires mis, la licence copiée, vous n'avez plus qu'à redistribuer votre programme.

Deux dernières choses

Deux petites précisions pour finir.

Voilà, c'est tout sur la partie "application des licences" ;) . Peut-être qu'il vous faudra adapter mes explications à votre texte. Je vous laisse juger. Si vous rencontrez des problèmes, n'hésitez pas à me contacter :) .

Et voilà ! Votre logiciel est maintenant protégé par une licence de Logiciels Libres. Tout le monde sait ce qu'il a le droit de faire ou non avec votre logiciel.

N'hésitez pas à vous renseigner sur les différentes licences respectives, je n'ai donné ici qu'un résumé très très rapide des textes (sinon ça aurait pris 3 fois plus de place que la partie "intéressante" du tuto, c'est-à-dire comment appliquer la licence).

Si vous ne savez pas quoi prendre, je vous recommande la GNU GPL pour vos gros projets : elle respecte bien les principes du Logiciel Libre, tout en garantissant la reconnaissance de l'auteur (on saura que c'est vous qui avez écrit le logiciel). Pour les petits projets, la BSD sera plus adaptée (mettre la GNU GPL sur un projet plus court que la licence elle-même, c'est légèrement abuser...). Enfin, certains pensent que tous les projets, même les gros, devraient être sous BSD. C'est tout un débat !

Si vous avez des suggestions ou des corrections pour ce tuto, n'hésitez pas à m'envoyer un MP :D !
De même, si vous avez des problèmes pour appliquer une licence à votre logiciel, vous pouvez me contacter ou demander sur les forums.

Bon développement de Logiciels Libres à tous. ;)

Ce tutoriel est mis à disposition sous contrat Creative Commons - Paternité - Partage des conditions à l'identique. Ça signifie que vous pouvez le copier et le modifier librement, à condition de citer l'auteur original et de garder cette licence.


Quelques licences libres : GPL, LGPL, BSD