Plugins, paquets et dépôts

Le site Plugins SPIP est motorisé principalement par le plugin SVP.

Cet article fournit des explications sur ce plugin, son fonctionnement, les objets qu’il manipule et qui constituent le fondement de ce site, à savoir, les plugins, les paquets et les dépôts.

SVP, le SerVeur de Plugins

Les objectifs de SVP sont :

  • Tenir à jour une base de plugins/paquets utilisables dans les sites SPIP, en consolidant les contributions de divers dépôts (comme SPIP-Zone) ;
  • Offrir une interface de recherche et d’information sur les plugins, et de téléchargements de leurs paquets (fichiers zip) ;
  • Offrir le socle de la nouvelle interface d’administration des plugins de SPIP 3.

Le fonctionnement de SVP peut se résumer ainsi si l’on considère l’exemple du dépôt SPIP-Zone :

  • La liste des archives (.zip) de plugins de SPIP-Zone est décrite dans le fichier archivelist.txt. Toutes les heures un script (nommé Smart-Paquets) regénère, si besoin, les archives listées dans archivelist.txt et produit un fichier XML résultant : archives.xml, contenant les informations sur tous les paquets construits.
  • Toutes les six heures, le plugin SVP installé sur Plugins SPIP relit le fichier archives.xml et met à jour sa base de données de plugins d’où est issu l’ensemble des pages du site.

Le Plugin

Le cœur de SVP réside dans son modèle d’objets dont le point notable est la distinction entre le « Plugin » et ses « paquets ».
Un Plugin est une fonctionnalité additionnelle à SPIP, distribuée sous forme de paquets. Le plugin est déterminé par son préfixe, unique. Il possède et est aussi (re)connu par son nom et sa catégorie qui doivent rester uniques et constants tout au long de la vie du plugin... Afin que le nom du plugin ne devienne pas une description, on adjoint au plugin une description courte, appelée slogan. Par exemple, pour « Accès restreint » :

  • Préfixe : accesrestreint
  • Nom : Accès restreint
  • Catégorie : auteur
  • Slogan : Gestion de zones d’accès restreint

Le nom et le slogan peuvent être traduits.

Le Paquet

C’est une instance d’un Plugin. Le Paquet hérite donc de toutes les caractéristiques du Plugin (comme son préfixe, son nom, sa catégorie...) Il est identifié par ses autres attributs : sa version, sa compatibilité SPIP, son auteur, sa description détaillée et toutes les autres informations incluses dans le fichier XML (plugin.xml ou paquet.xml). Il est matérialisé par une archive.

Par exemple, Accès restreint possède sur SPIP-Zone plusiuers paquets dont ceux correspondant aux deux branches suivantes :

  • acces_restreint_1_9, correspondant à la branche 1
  • acces_restreint_3_0, correspondant à la branche 2 qui d’ailleurs a un article de documentation sur SPIP-Contrib titré « Accès restreint 3.0 »

Par extension, les contributions qui ne sont pas des plugins seront aussi assimilées à des paquets matérialisées par une archive mais leurs données se limiteront aux informations de l’archive elle-même. Ces contributions sont aujourd’hui les squelettes non distribués en plugin, les jeux d’icônes, certains outils, les librairies...

Le Dépôt

C’est un lieu d’hébergement d’un ensemble de paquets. Il est défini principalement par une adresse et un fichier contenant la description de tous les paquets hébergés.

Par exemple, le dépôt SPIP-Zone est localisé à l’adresse http://files.spip.org/spip-zone/ et est décrit par le fichier archives.xml (http://files.spip.org/spip-zone/archives.xml).

Les archives sont stockées à partir de l’adresse de dépôt et de préférence dans le répertoire racine. Un paquet est distribué par un seul dépôt.

Il est important de noter que cette notion de dépôt est purement logique et n’est pas forcée de coïncider avec le dépôt physique qu’il soit SVN, Git ou autre. Par exemple, on pourrait créer avantageusement plusieurs dépôts logiques sur le même dépot physique SVN SPIP-Zone.

Les Catégories

La catégorie permet de classifier les plugins pour effectuer des recherches rapides. Elle est utilisée sur Plugins SPIP comme principal moyen de navigation dans le site et/ou de filtre des pages. Il existe 13 catégories. Elles sont répertoriées dans l’article Rédaction du paquet.xml.