Qu'est-ce qu'une licence d'adhésion ?
Une licence d'adhésion est une clé de produit liée à une adhésion active plutôt qu'à un achat unique. La copie de votre plugin, script ou bot que possède le membre vérifie la clé à intervalles réguliers : elle fonctionne tant que l'adhésion dure, s'arrête quand l'adhésion prend fin, et se remet à fonctionner si le membre revient. L'adhésion, c'est la licence. C'est la phrase qu'emploie Nadi : votre adhésion est la licence.
Pourquoi cela existe
Quiconque vend un produit qui s'exécute (un plugin pour une appli de design, un script, un bot, un petit outil web) connaît le déséquilibre. La vente a lieu une fois, et le travail ne s'arrête jamais : une mise à jour après chaque nouvelle version de l'appli hôte, des questions, des correctifs, et un acheteur d'il y a deux ans qui vous écrit encore.
Un abonnement règle le côté argent et laisse une question ouverte : qu'est-ce qui fait que l'abonnement mérite d'être renouvelé ? Si le produit continue de fonctionner entre les mains de quelqu'un qui a cessé de payer, renouveler devient un don.
Une licence d'adhésion relie les deux bouts. Tant que la personne est membre, sa copie fonctionne. Quand l'adhésion prend fin, elle s'arrête. Quand la personne revient, elle refonctionne. Les grands logiciels professionnels marchent ainsi depuis des années ; ce qui est plus nouveau, c'est que la clé dépende de l'adhésion à une communauté plutôt que d'un achat unique.
Comment ça marche : une clé, une vérification et un délai de grâce
Trois pièces, et chacune résout un problème évident.
- La clé. Une longue chaîne aléatoire qui appartient à un membre et à un produit. Une plateforme sérieuse la stocke sous forme brouillée plutôt que telle quelle, pour que personne ne puisse lire les clés en lisant la base de données.
- La vérification. Votre produit envoie la clé à une adresse et reçoit une réponse courte : valide ou non valide. Quelques lignes dans votre produit, et aucun serveur à faire tourner de votre côté.
- Le délai de grâce. Chaque oui arrive avec une date d'expiration signée. Le produit garde l'autorisation pendant cette durée et ne redemande rien avant qu'elle n'expire : il fonctionne donc hors ligne. La signature empêche quiconque de modifier un fichier sur son propre ordinateur pour la prolonger.
C'est le délai de grâce qui rend l'idée utilisable. Sans lui, une connexion internet devient obligatoire pour faire tourner le produit, et votre client ne peut plus travailler dans un avion. Avec lui, le pire des cas, c'est que quelqu'un qui est parti continue de travailler quelques jours de plus : un prix très raisonnable pour un produit qui ne casse pas.
La question la plus importante : que se passe-t-il quand le serveur de licences est en panne
C'est ce qui sépare une conception digne de confiance d'une conception qui ne l'est pas. Votre produit pose la question, et aucune réponse n'arrive : la connexion a sauté, la plateforme est en panne, la réponse a mis trop de temps. Que doit faire le produit ?
Continuer de fonctionner. Seul un refus explicite (une réponse qui dit clairement que cette clé est révoquée ou inconnue) peut arrêter un produit. Un silence, une erreur ou un délai dépassé ne sont pas des refus, et les traiter comme tels, c'est laisser la panne de quelqu'un d'autre casser votre produit sous les yeux de votre client.
En une ligne : dans le doute, on laisse ouvert ; dans la certitude, on ferme. Interrogez la plateforme sur ce comportement précis avant de construire chez elle, quelle qu'elle soit, et lisez le code qu'on vous demande de coller dans votre produit. S'il traite une panne réseau comme une révocation, c'est votre réputation qui paie.
Ce qui peut honnêtement être mis sous licence, et ce qui ne le peut pas
La frontière est simple : ce qui s'exécute peut être mis sous licence, ce qui ne s'exécute pas ne le peut pas. Une vérification, c'est le produit qui appelle chez lui, et un fichier statique ne peut appeler nulle part.
- Un plugin, un script, une appli, un bot : cela s'exécute, donc cela peut demander, et vous pouvez l'empêcher de tourner. Ici, la licence est réelle.
- Une image, un fichier audio, un document, un pack de préréglages : on le télécharge une fois et on le garde. Rien là-dedans ne demande quoi que ce soit à qui que ce soit, et il n'y a aucun moyen de le reprendre ensuite.
Dire qu'un fichier statique est sous licence est donc une affirmation que personne ne peut faire respecter. Pour ces fichiers, le mécanisme honnête, c'est la porte elle-même : c'est l'adhésion qui permet le téléchargement, et quelqu'un qui part ne reçoit pas la version suivante. C'est vrai et utile ; ce n'est simplement pas une licence, et cela ne devrait jamais être vendu comme tel.
Ce qu'il faut demander à n'importe quelle plateforme
Six questions suffisent pour juger n'importe quelle mise en œuvre de cette idée :
- La clé meurt-elle au même moment que l'adhésion, ou au rythme d'un cycle mensuel ou d'une tâche nocturne ?
- Si le membre revient, son ancienne clé revient-elle, ou doit-il en coller une nouvelle dans votre produit ?
- Combien dure le délai de grâce, qui le fixe, et la réponse est-elle signée pour qu'on ne puisse pas la falsifier ?
- Que répond le point d'accès quand la plateforme est en panne : « je ne peux pas répondre », ou « non valide » ?
- Combien de lignes demande l'intégration, et vous faut-il votre propre serveur ou votre propre base de données ?
- L'interrupteur de licence est-il proposé sur des choses qui ne pourraient jamais être contrôlées ? Une plateforme qui vous laisse mettre sous licence un fichier statique vous vend une apparence, pas un mécanisme.
Un exemple concret : comment fait Nadi
Nadi est une plateforme de communautés : c'est donc ici que nous décrivons notre propre produit. Uniquement ce qu'il fait aujourd'hui.
- Un propriétaire met sous licence un élément de la bibliothèque de sa communauté, et chaque membre reçoit sa propre clé, affichée sur la fiche de l'élément avec un bouton pour la copier.
- La clé est validée tant que l'adhésion est vivante, et renvoie REVOKED dès qu'elle meurt, que le membre soit parti, qu'il ait été retiré ou que son abonnement ait expiré.
- Quand il revient, la même ligne reprend vie : personne n'a donc à coller une nouvelle clé où que ce soit.
- Le code à intégrer tient en une dizaine de lignes dans votre produit. Il vérifie la clé une fois par semaine et continue de fonctionner hors ligne entre-temps.
- Le délai de grâce est de sept jours par défaut, et la réponse est signée : votre produit peut donc distinguer notre jeton de grâce d'un fichier que quelqu'un a modifié sur son propre ordinateur.
- Le point d'accès laisse ouvert en cas d'échec. Quand nous ne pouvons pas répondre, nous le disons, et nous ne disons jamais « non valide » à la place. Une panne de notre côté n'est jamais déguisée en révocation.
- Le propriétaire voit qui utilise l'élément, l'état de chaque détenteur (actif ou arrêté), et quand son produit s'est signalé pour la dernière fois.
- Publier une nouvelle version de l'élément prévient uniquement les détenteurs de clés, pas toute la communauté.
- Le message de refus que voit un membre dont l'adhésion a expiré nomme la communauté et dit ce qui fera revenir le produit : la rejoindre.
Les limites, en toute honnêteté
Rien sur Nadi ne peut être dit sous licence avant d'avoir prouvé que c'est possible. L'interrupteur reste désactivé sur chaque élément, fichier ou lien, jusqu'à ce que le produit de cet élément ait appelé notre vérification avec une vraie clé au moins une fois : le produit fait la démonstration du mécanisme devant nous avant que la mention « Sous licence » ne soit autorisée sur sa page. Un fichier qu'un membre télécharge et qui n'est jamais relié à la vérification n'est donc jamais dit sous licence, nulle part dans notre produit ; son mécanisme honnête, c'est la porte, où c'est l'adhésion qui permet le téléchargement. Désactiver une licence est toujours permis.
Laisser ouvert en cas d'échec est un engagement, pas une faille. Le point d'accès répond « indisponible » quand il ne peut pas interroger la base de données, et l'extrait de code que nous vous fournissons traite tout ce qui n'est pas une réponse explicite comme une permission de continuer. Cela signifie qu'une personne partie peut continuer de travailler jusqu'à la fin de son délai de grâce, et nous l'acceptons délibérément : les produits des autres ne doivent pas casser parce qu'un de nos déploiements a eu un hoquet.
Deux dernières limites. Une clé vient avec l'adhésion, et il n'existe aujourd'hui aucun moyen d'en détenir une sans devenir membre. Et une clé partagée reste une seule clé liée à une seule adhésion : elle s'arrête quand cette adhésion s'arrête.