Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Général > Faire de son programme un logiciel libre > Lecture du tutoriel

Faire de son programme un logiciel libre

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : GuilOooo
Note : 18 / 20 (25 votes)
Visualisations : 19 283

Plus d'informations Plus d'informations
Ca 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 de faire de votre logiciel 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 ;)

Dernière mise à jour [06/2008]:
Sommaire du tutoriel :
Icône du chapitre

C'est quoi un logiciel libre ?

Déjà, avant de faire de votre programme un logiciel libre, il 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 d'avantage 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é 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 3km 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:

Holà, du calme. Déjà, avant d'aller chercher la licence, il faut en choisir une. Et 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 la licence 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 (moyenant quelques conditions, comme citer l'auteur original).

Je vais vous présenter trois licences. Il en existe, bien sur, beaucoup plus. Pourquoi ces trois là alors ? Et 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.

Il faut aussi savoir que ces trois licences (et la plupart des licences libres) précisent bien que les logiciels qu'elles couvrent ne fournissent aucune garantie d'aucune sorte, et que rien ne dit qu'il marchera. Cependant, ça ne vous donne pas le droit de faire un logiciel qui met le bordel dans l'ordinateur des gens ! Vous vous feriez attaquer pour ça ! Donc, respectez vos utilisateurs et tout ira bien.

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.

Sachez donc que si vous utilisez une bibliothèque sous licence GNU GPL dans votre programme, vous incluez des éléments sous GNU GPL dans votre programme. Celui-ci doit donc être redistribué obligatoirement sous GNU GPL. C'est le cas si vous utilisez, par exemple, SDLtk (une bibliothèque pour faire des interfaces avec SDL) ou Qt. Pensez bien à vérifier la licence des bibliothèques que vous utilisez :)


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 biliothè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ême :) :


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 vu 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



Si vous avez un peu du mal à vous y retrouver avec toutes les licences, libre, propriétaire, tout ça, bref, que c'est pas clair pour vous, vous pouvez sauter ce passage. Il est juste là pour vous montrer que ça existe, mais n'est pas indispensable pour comprendre la suite ;)


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

QUOI ? C'est possible ?

Eh oui. A 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énumé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. A vous de voir ce que vous donnez comme droits à vos utilisateurs.
Il faut bien comprendre que ce sont ici des résumés. De plus, j'ai pu faire des approximations pour simplifier l'explication. Pour plus d'informations, cherchez sur google et wikipédia.


Il existe bien sûr d'autres textes possibles. Je n'en dit 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


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 pas avec ce programme. Ca marche comme ça pour toutes les licences suffisament 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 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 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 :) .

Q.C.M.

Ma licence est très courte. Comment fais-je pour l'appliquer au programme ?
Maintenant, ma licence est très longue. Comment je l'applique au programme ?
Parmi la LGPL, la GPL et la licence BSD, laquelle empêche totalement les gens d'utiliser mon code dans un logiciel non-libre ?

Statistiques de réponses au QCM


Et voilà ! Maintenant votre logiciel est protégé par une licence de logiciels libres. Tout le monde sait ce qu'il a le droit de faire ou pas 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 abusé...). 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 su 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.
Retour en haut Retour en haut


Créé : le 04/02/2007 à 13:46:11
Modifié : le 22/08/2008 à 16:09:20
Avancement : 100%
Licence : Creative Commons BY-SA

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 496 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0249s (0.0131s)