Licence (LPPL)

Regardez presque n’importe quel package CTAN : sa licence est souvent LPPL, la licence de LaTeX lui-même et de la grande majorité des packages. C’est du logiciel libre, mais avec une idée inhabituelle au centre : protéger la garantie qu’un fichier portant un nom donné se comporte partout de la même façon.

Ce qu’est la LPPL

La LPPL (The LaTeX Project Public License) est la licence sous laquelle sont distribués le noyau LaTeX et les packages standard ; elle est rédigée par le LaTeX Project. La version actuelle est 1.3c (publiée le 2008-05-04 ; les versions 1.3, 1.3a et 1.3b n’en diffèrent que par des détails). C’est une licence de logiciel libre : la FSF la reconnaît comme libre, elle est approuvée par l’OSI, conforme à Debian (DFSG), et son identifiant SPDX est LPPL-1.3c. Elle est toutefois incompatible avec la GPL : l’obligation d’identifier les versions modifiées comme telles (voir plus bas) est une condition supplémentaire que la GPL n’autorise pas. C’est aussi la licence la plus courante sur CTAN.

L’idée centrale — protéger l’intégrité des fichiers

Pourquoi imposer une condition absente des licences libres ordinaires ? Parce que la valeur de TeX repose sur la reproductibilité : une source .tex donnée devrait produire le même résultat quel que soit l’environnement. Si quelqu’un distribuait un article.cls modifié sous le même nom, cette garantie s’effondrerait et l’on obtiendrait « ça compile chez moi, mais ça casse chez vous ». La LPPL empêche précisément cela.

Dans les anciennes versions (1.0-1.2), il s’agissait d’une stricte « clause de nom de fichier » : un fichier modifié devait être renommé. La version 1.3 a assoupli cela : aujourd’hui, un composant modifié doit s’identifier clairement et sans ambiguïté comme modifié, à la fois dans la source et lors d’une exécution interactive (journaux ou bannières), et vous devez documenter les changements (par exemple avec un journal de modifications). En pratique, renommer un fork reste la façon la plus sûre de se conformer à la licence.

Le modèle de maintenance

L’autre particularité de la LPPL est un mécanisme pour déclarer un statut de maintenance. Chaque œuvre possède un Current Maintainer, et le statut est l’un des trois suivants : maintained (quelqu’un assure la maintenance et accepte les rapports de bogues), author-maintained (seul l’auteur original peut la maintenir) ou unmaintained (pas de mainteneur, ou injoignable pendant six mois sans signe d’activité). CTAN recommande « maintained » plutôt que « author-maintained », afin que l’œuvre reste utile à la communauté.

C’est ce mécanisme qui permet à la communauté de reprendre un package abandonné. Si une œuvre est unmaintained, la licence fixe une procédure claire : (1) faire des efforts raisonnables pour trouver le mainteneur actuel, par exemple via une recherche en ligne ; (2) si cela échoue, annoncer son intention de la maintenir dans les communautés concernées ; et (3) si ni l’ancien mainteneur ni le titulaire des droits ne s’y oppose dans un délai de trois mois, vous pouvez devenir le nouveau Current Maintainer. C’est conçu pour que l’écosystème continue même lorsqu’un auteur disparaît.

L’appliquer à votre propre package

Publier votre propre .sty/.cls sous LPPL est simple. Placez une notice comme ci-dessous au début de chaque fichier, choisissez « 1.3c or any later version », indiquez le statut maintained, puis nommez le Current Maintainer et les fichiers qui composent l’œuvre. C’est la forme attendue par CTAN (la licence est aussi choisie lors du dépôt). Attention : la LPPL n’est pas du domaine public ; vous pouvez l’utiliser librement, mais les obligations d’identification et de documentation ci-dessus demeurent.

document.tex
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status 'maintained'.
% The Current Maintainer of this work is M. Y. Name.
%
% This work consists of the file mypkg.sty.