Ce cours est visible gratuitement en ligne.

J'ai tout compris !
Faire de son programme un Logiciel Libre

Faire de son programme un Logiciel Libre

Mis à jour le mercredi 30 octobre 2013

Ç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 ?

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" :

  • exécuter le programme dans n'importe quel but ;

  • distribuer des copies du programme, y compris en échange d'argent, sans avoir à demander l'autorisation de personne avant ;

  • regarder comment le logiciel fonctionne. En d'autres termes, d'avoir accès à son code source ;

  • modifier le logiciel comme vous le souhaitez, sans demander l'avis de personne ;

  • distribuer des copies de votre version modifiée du logiciel, toujours sans avoir à demander l'avis de personne avant.

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

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.

  • La GNU GPL [GNU General Public Licence] (et non un carburant pour voiture :-° )

  • La GNU LGPL [GNU Lesser GPL] (similaire à GPL à une nuance près)

  • La nouvelle licence de BSD [Berkeley Software Distribution] (du nom du premier logiciel à l'avoir utilisé)

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.

  • La permission est donnée à quiconque en possède une copie d'exécuter, copier, modifier, distribuer des versions modifiées du logiciel.

  • « Distribuer » un logiciel inclut vendre des copies de celui-ci.

  • La licence du logiciel, ainsi que le nom des auteurs, ne peuvent être modifiés ou supprimés.

  • Si vous distribuez des copies, vous devez redistribuer le code source avec le logiciel, ou bien vous engager à fournir ce code à quiconque vous le demande.

  • Tout projet qui incluerait un élément sous licence GNU GPL ne pourra être distribué QUE sous GNU GPL.

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 :

  • si vous liez le fichier libmachin.a (qui est sous GNU LGPL) à votre programme, celui-ci EST contaminé par la GNU LGPL ;

  • si vous ne liez pas libmachin.a à votre programme et que vous utilisez un fichier DLL (machin.dll) à la place, le programme N'EST PAS contaminé ;

  • si vous modifiez le code source de la libmachin, cette dernière restera sous GNU LGPL.

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 :) :

  • la permission est donnée à quiconque d'utiliser, redistribuer, modifier, librement le logiciel ;

  • la condition est l'obligation de citer l'auteur et la licence originale.

Conséquences :

  • ceci implique qu'on peut redistribuer le logiciel sans son code source, ou encore inclure un élément sous BSD dans un produit sous une autre licence ;

  • si vous redistribuez un code-source sous BSD, vous ne devez ni enlever ni modifier le commentaire en haut de chaque fichier source (qui contient la licence et le nom de l'auteur) ;

  • si vous redistribuez un élément (compilé) sous BSD, vous devez inclure un fichier texte (ou dans la documentation du produit) la licence originale.

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. :)

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

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.

  • Évitez les traductions de licences. En effet, si on est sûr de la valeur juridique de la GPL (par exemple) en anglais, on ne sait pas du tout ce qu'elle vaut une fois traduite (puisque la traduction est non-officielle). Il se peut très bien que cette licence ne soit pas conforme aux lois par exemple, et du coup inappliquable, à cause d'une erreur de traduction. Au pire, prenez une licence CeCILL dont le texte est disponible en français et anglais, ce qui arrange tout le monde. :)

  • Mettez le copyright à votre nom. Pas à un pseudo, pas à une team. Sauf dans le cas où vous mettez le nom de votre entreprise ou de votre association, mettre autre chose que vos noms et prénoms annule totalement le copyright et donc la licence. Ce qui peut poser quelques problèmes.

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.

déroulement d'un cours

  • 1

    Dès aujourd'hui, vous avez accès au contenu pédagogique et aux exercices du cours.

  • 2

    Vous progressez dans le cours semaine par semaine. Une partie du cours correspond à une semaine de travail de votre part.

  • !

    Les exercices doivent être réalisés en une semaine. La date limite vous sera annoncée au démarrage de chaque nouvelle partie. Les exercices sont indispensables pour obtenir votre certification.

  • 3

    À l'issue du cours, vous recevrez vos résultats par e-mail. Votre certificat de réussite vous sera également transmis si vous êtes membre Premium et que vous avez au moins 70% de bonnes réponses.

L'auteur

Découvrez aussi ce cours en...

Exemple de certificat de réussite
Exemple de certificat de réussite