[spip-dev] Catégorie de plugins, SVP, SPIP et Composer

Yop,

Le ven. 17 mai 2019 à 10:44, Maïeul <maieul@maieul.net <mailto:maieul@maieul.net>> a écrit :

    autre piste : est-ce que la liste de catégories ne pourrait pas être
    servi à SPIP par un serveur externe (genre : le référentiel de plugin).
    Comme cela en cas de changement de liste, l'actualisation se fait plus
    simplement.

C'est à quelque chose comme ça que je pensais, plutôt qu'une liste fournie en dur par SPIP ou un des ses plugins dist (ce qui reviendrait au même).

Je ne suis pas sur que la récurrence des changements soit telle qu'il faille imaginer autre chose qu'une release SPIP.
Le problème à mon avis le plus aigu restera la mise à jour des plugins (paquet.xml).

Je ne pensais pas du tout à un changement aussi radical que l'actuel, mais plutôt à des modifications au fil de l'eau et de l'utilisation, un ajout, un renommage...

Question complémentaire : admettons que SPIP X dispose d'une liste de catégories, et que la nouvelle version SPIP Y en a une nouvelle.
Est ce qu'un plugin qui utiliserait une de ces nouvelles catégories pourrait être "découvrable" et installé sur SPIP X ?
Est ce qu'il y aurait d'autres effets de bord de ce type ?

Re,

Yop,

autre piste : est-ce que la liste de catégories ne pourrait pas être
servi à SPIP par un serveur externe (genre : le référentiel de plugin).
Comme cela en cas de changement de liste, l’actualisation se fait plus
simplement.

C’est à quelque chose comme ça que je pensais, plutôt qu’une liste
fournie en dur par SPIP ou un des ses plugins dist (ce qui reviendrait
au même).

Oui on peut le voir comme ça.
Je m’interroge juste sur l’intérêt du truc.

Je ne suis pas sur que la récurrence des changements soit telle qu’il
faille imaginer autre chose qu’une release SPIP.
Le problème à mon avis le plus aigu restera la mise à jour des plugins
(paquet.xml).

Je ne pensais pas du tout à un changement aussi radical que l’actuel,
mais plutôt à des modifications au fil de l’eau et de l’utilisation, un
ajout, un renommage…

Oui mais finalement un ou 1000 c’est un peu pareil.
La question est toujours : je migre (donc bing-bang) ou j’assure une retro-compat.
Ca reviendrait à versionner les catégories en rapport avec SPIP…

Question complémentaire : admettons que SPIP X dispose d’une liste de
catégories, et que la nouvelle version SPIP Y en a une nouvelle.
Est ce qu’un plugin qui utiliserait une de ces nouvelles catégories
pourrait être « découvrable » et installé sur SPIP X ?
Est ce qu’il y aurait d’autres effets de bord de ce type ?

En fait, il n’y a aujourd’hui (faudra que je vérifie quand même) pour moi qu’un fil à la patte entre SPIP et les catégories.
C’est la validation du paquet.xml.
La DTD impose une liste :

Si on fait sauter cette contrainte, en conservant le caractère obligatoire de l’attribut, en remplaçant cette liste par une simple chaine je pense qu’on simplifie le problème.

Ensuite, la recherche elle n’est pas forcément contrainte par la catégorie.
Je pense qu’il faudrait faire une version n+1 pour chaque branche SPIP 3.x en virant le critère catégorie de la recherche.
Je suis persuadé d’ailleurs que les critères de ce formulaire sont rarement modifiés.

Après, je réfléchis en écrivant, mais si on voulait être hyper souple, la seule solution serait de sortir la catégorie du XML et de compiler quelque part (surement au niveau du référentiel des plugins) à la fois la liste des catégories et les affectations.
Finalement ça revient à tenir à jour l’équivalent du fichier excel que j’utilise pour revoir les affectations actuelles.
On peut imaginer une API REST pour lire cette liste et compléter la table plugins en fin de traitement SVP.
Cela a aussi l’avantage de ne plus avoir à modifier les plugins lors de migration de catégories voire de pouvoir versionner les affectations de branche SPIP en branche SPIP.
Je me demande si ce n’est pas LA solution ?

Oui on peut le voir comme ça.
Je m'interroge juste sur l'intérêt du truc.

De ne pas se fermer une possibilité d'extension ?

Oui mais finalement un ou 1000 c'est un peu pareil.
La question est toujours : je migre (donc bing-bang) ou j'assure une retro-compat.
Ca reviendrait à versionner les catégories en rapport avec SPIP....

Je ne crois pas (ou j'ai pas compris)

En fait, il n'y a aujourd'hui (faudra que je vérifie quand même) pour moi qu'un fil à la patte entre SPIP et les catégories.
C'est la validation du paquet.xml.
La DTD impose une liste :
<!ENTITY % CATEGORY "auteur|communication|date|divers|edition|maintenance|multimedia|navigation|outil|performance|squelette|statistique|theme)" >
Si on fait sauter cette contrainte, en conservant le caractère obligatoire de l'attribut, en remplaçant cette liste par une simple chaine je pense qu'on simplifie le problème.

Ça serait peut être bien pour l'ouverture mais c'est à double tranchant.
Si chacun peut mettre sa propre catégorie, la porte ouverte au grand bazar qui deviendrait ingérable ?

Ensuite, la recherche elle n'est pas forcément contrainte par la catégorie.
Je pense qu'il faudrait faire une version n+1 pour chaque branche SPIP 3.x en virant le critère catégorie de la recherche.
Je suis persuadé d'ailleurs que les critères de ce formulaire sont rarement modifiés.

Après, je réfléchis en écrivant, mais si on voulait être hyper souple, la seule solution serait de sortir la catégorie du XML et de compiler quelque part (surement au niveau du référentiel des plugins) à la fois la liste des catégories et les affectations.
Finalement ça revient à tenir à jour l'équivalent du fichier excel que j'utilise pour revoir les affectations actuelles.
On peut imaginer une API REST pour lire cette liste et compléter la table plugins en fin de traitement SVP.
Cela a aussi l'avantage de ne plus avoir à modifier les plugins lors de migration de catégories voire de pouvoir versionner les affectations de branche SPIP en branche SPIP.
Je me demande si ce n'est pas LA solution ?

Mais si la catégorie n'est plus dans le paquet, concrètement comment on la déclarerait quand on crée un nouveau plugin, qu'il soit sur la zone ou sur une autre forge ?
Dans un autre référentiel sur la zone ?
Source d'oubli potentiel non ?

Yo yo,

Oui on peut le voir comme ça.
Je m’interroge juste sur l’intérêt du truc.

De ne pas se fermer une possibilité d’extension ?

Oui et non, je vais expliquer le truc globalement à la fin du mail

.

En fait, il n’y a aujourd’hui (faudra que je vérifie quand même) pour
moi qu’un fil à la patte entre SPIP et les catégories.
C’est la validation du paquet.xml.
La DTD impose une liste :

Si on fait sauter cette contrainte, en conservant le caractère
obligatoire de l’attribut, en remplaçant cette liste par une simple
chaine je pense qu’on simplifie le problème.

Ça serait peut être bien pour l’ouverture mais c’est à double tranchant.
Si chacun peut mettre sa propre catégorie, la porte ouverte au grand
bazar qui deviendrait ingérable ?

Ne pas le valider dans la paquet.xml ne veut pas dire qu’on ne fait jamais de contrôle.
Oui on le fait mais pas dans une DTD surtout quand on va passer de 15 à 60 catégories.

Mais si la catégorie n’est plus dans le paquet, concrètement comment on
la déclarerait quand on crée un nouveau plugin, qu’il soit sur la zone
ou sur une autre forge ?
Dans un autre référentiel sur la zone ?
Source d’oubli potentiel non ?

Oui on le ferait ailleurs. Avant d’expliquer comment, je voudrais quand même tirer quelques conclusions sur les 10 ans des catégories actuelles.

Le premier constat qu’on a fait c’est que les 14 catégories existantes étaient devenues trop restrictives et confuses en passant de 300 plugins à 1200. Donc l’idée est de revoir ce classement pour affiner le rangement et le faire mieux correspondre au référentiel de plugins. D’où une inflation, environ 60 catégories à stabiliser.
Et bien on pourra y passer des heures (je peux le dire en connaissance de cause) on aura du mal à stabiliser cette liste le jour de la « grande migration ». On passera donc par une phase surement longue de stabilisation pendant laquelle il faudra faire des changements et ce serait une erreur de l’éviter.
Donc la capacité à faire évoluer cette liste est un must à mon avis.

A quoi sert cette liste aujourd’hui ?
Premièrement à regrouper des plugins plus ou moins connexes pour faciliter la recherche des utilisateurs.
Cette recherche se fait dans Plugins SPIP et dans une moindre mesure via le formulaire de l’admin plugins dans le privé.
Je suis persuadé que l’utilisation du critère catégorie dans ce formulaire est très limitée.
Donc en conclusion, c’est principalement le référentiel des plugins qui a besoin de ces catégories, ce qui est sur c’est que SPIP et les plugins fonctionnent très bien sans.

Etat de la liste aujourd’hui ?
En révisant toutes les affectations des 1200 plugins je me suis aperçu qu’environ 50% étaient « mal positionnés » dans le paquet.xml (en tout cas au vu de la compréhension actuelle des catégories) et surtout qu’une grande proportion des plugins documentés sur Contrib étaient affectés différemment dans le paquet et dans Contrib alors qu’il était très facile d’être cohérent. Par contre, en 10 ans j’ai très peu corrigé des catégories manquantes.
En conclusion, il est très difficile d’avoir une vision globale d’une catégorie (Plugins SPIP n’est pas pratique pour ça et une requête SQL n’est pas à la portée de tout le monde). En outre, corriger une « erreur » n’est pas immédiat car il faut le faire via un commit sur la zone, et ce pour toutes les branches zippées voire dans le paquet.xml et le plugin.xml : cela peut rebuter et donc réfréner les volontés.

Donc toutes ces années d’expérience m’amène à penser que ce système ne favorise pas l’amélioration du classement au fil des années mais exactement le contraire et on se rend compte que son manque de pédagogie fait que les gens s’en foutent ou n’acquièrent jamais un ressenti correct des catégories.
C’est pourquoi je proposerais finalement (j’ai pas été tout de suite convaincu) de sortir la gestion des catégories de SPIP, donc des XML, pour l’inclure comme une fonctionnalité du site « Référentiel des plugins ».

Les avantages :

  • Plus de migration ou d’évolution compliquée. On peut choisir de conserver l’attribut pour éviter 3000 commits en une journée ;-), de le virer de tous les XML (ça serait plus propre). Ce qui est sur c’est que toute évolution de catégories ou d’affectations futures sera totalement indolore pour les plugins, et compte tenu de ma première remarque je pense que c’est essentiel.
  • La catégorisation devient un sujet uniquement référentiel ce qui permet d’extraire de SVP toute cette gestion.
  • On peut proposer un assistant pour choisir sa catégorie sur le référentiel des plugins en visualisant simplement les autres plugins qui en font partie. Des explications peuvent être données sur les catégories… On peut en faire un élément de pédagogie.
  • si la catégorie est oubliée, le référentiel l’identifie de suite et la correction est bien plus aisée que de d’aller commiter sur 1 ou n XML. De même si on se rend compte qu’il faut changer le classement. Tout pourrait se faire sur le site Référentiel des plugins (surement la fusion de Contrib et Plugins SPIP).

Les inconvénients :

  • Je n’en voit pas. Mais c’est vrai que si on veut remplir le champ catégorie dans la base des plugins de chaque site installé il faut mettre en place un mécanisme type API REST pour récupérer la liste des affectations (préfixe-catégorie)
    Rasta m’a fait remarquer que c’était bien lourd.
    Soit mais c’est oublier que SVP fonctionne déjà comme ça et ce toutes les 6 heures ! Je vois pas en quoi récupérer un json de plus de temps en temps serait si compliqué. Un système de cache pourrait aussi être mis en place.
    Après, si on vire le critère catégorie dans le formulaire admin plugins je pense qu’on peut même s’abstenir de remplir le champ catégorie pour les sites fonctionnant en mode runtime SVP cad tous les sites sauf Plugins SPIP !

J’ai vraiment l’impression qu’on résout tous nos problèmes ainsi, qu’on s’allège la gestion en se donnant plus de moyens d’avoir une catégorisation fiable et compréhensible et qu’on répond à toutes les interrogations de ce fil.

La seule chose que je peux dire vite fait en passant (sans avoir encore pu trouver le temps de comprendre et réfléchir en détail à ce qui est proposé) c’est que les paquets Composer proposent une clé de configuration pour tagguer les paquets. Tags libres et multiples. Ils n’ont pas de catégories figées. Je suppose que peut être qu’il est trop difficile de prévoir tous les cas. Je suppose aussi que le "tag" augmente le score des résultats sur les recherches qui contiennent ce tag (sans garantie).

MM.

Hello,

On peut aussi considérer que parmi les tags,
il y en a certains qui sont recommandés et qu'on qualifie de "catégories".
Les catégories seraient alors le sous ensemble "dist" de l'ensemble des tags utilisés.
Globalement d'ailleurs cela revient à créer une catégorie "autre"
pour ceux qui n'ont pas.

Je ne suis pas certain que c'est très différent au final...
(sauf qu'yc dans le "privé" il faudrait refaire une navigation adaptée)
mais il me semble qu'avec des tags, c'est plus souple
et plus facile à faire évoluer dans le temps.
Il peut par exemple y avoir plusieurs catégories citées,
appartenant à différents différentiels ou versions du référentiel.

JLuc

Hello,

On peut aussi considérer que parmi les tags,
il y en a certains qui sont recommandés et qu’on qualifie de « catégories ».
Les catégories seraient alors le sous ensemble « dist » de l’ensemble des tags utilisés.
Globalement d’ailleurs cela revient à créer une catégorie « autre »
pour ceux qui n’ont pas.

Je ne suis pas certain que c’est très différent au final…
(sauf qu’yc dans le « privé » il faudrait refaire une navigation adaptée)
mais il me semble qu’avec des tags, c’est plus souple
et plus facile à faire évoluer dans le temps.
Il peut par exemple y avoir plusieurs catégories citées,
appartenant à différents différentiels ou versions du référentiel.

Je ne suis pas trop d’accord en fait.
C’est bien différent de mon point de vue même si c’est complémentaire.

Je crois qu’on appelle ça taxinomie (catégorie) et folksonomie (tags libres).
La taxinomie a (comme pour les êtres vivants) un but de classement « exhaustif », « universel » et centralisé.
La folksonomie c’est un « système de classification collaborative décentralisée et spontanée ».

Je pense que les deux classements sont complémentaires, le premier est une repère « plus ou moins immuable », le second un accélérateur de recherche si tant est que ce ne soit pas trop l’anarchie.

Pour l’instant on parle des catégories en rapport avec le référentiel des plugins (Contrib/Plugins SPIP) pour justement structurer le site. Rien ne nous empêche ensuite de mettre en place la notion de tag qui est attente depuis des années mais je trouve que les deux ont leur place.

je partage l'analyse (pour relire aussi la catégorisation) et la conclusion. Reste que ceci est perdu au fond d'un fil de discussion, je me demande si tu devrais pas reprendre ton mail et le mettre au début, sur une nouvelle discussion

Ah ben tu vois, ça valait le coup de se poser des questions :smiley:

Hello,

oui, il me semble utile qu'on puisse "forker" les catégories sur une
installation locale dans laquelle on veut faire une présentation
"personnalisée" des plugins aux utilisateurs de ce fork
(après, ça n'est pas non plus un besoin prioritaire...)

cy_altern

SVP supporte plusieurs fonctions dont :
1- la "gestion" des catégories
2- la gestion des branches SPIP
3- la construction du référentiel des plugins et des dépôts.
4- l'installation des plugins incluant la gestion des dépendances.

[...]

C'est pourquoi je me disais qu'on pourrait aujourd'hui extraire les
fonctions 1 à 3 de SVP pour ne laisser que la fonction 4, et ce dans la
version SPIP 3.3.
Mon idée serait :
- transférer les fonctions 1 et 2 dans SPIP directement. Cela correspond
principalement à des globales, une balise pour les catégories et des
filtres.
- transférer la fonction 3 dans un plugin "Référentiel des plugins" qui
construit la base des plugins à partir des archives XML. En complément, il
serait bien de réfléchir à une autre manière d'intégrer dans le référentiel
les plugins Github de façon corriger les liens erronés.
- réduire SVP à la fonction 4 en nécessitant le plugin "Référentiel des
plugins" pour un certain temps.

Qu'en pensez-vous ?

à première vue ça semble une bonne idée cet "éclatement" de SVP...
...et ça me va d'autant mieux que dans la majorité des cas je n'utilise
que la fonction 4 (à priori la seule "indispensable" pour le
fonctionnement d'un SPIP) et que le fait de l'isoler devrait faciliter
son remplacement par Composer

cy_altern

La discussion semble bien partie dans l'autre fil...
Dans ce fil, Eric, j'ai bien utilisé le terme "catégorie" dans le sens d'élément structurant de taxinomie.

Je crois qu'on appelle ça taxinomie (catégorie) et folksonomie (tags libres).
La taxinomie a (comme pour les êtres vivants) un but de classement "exhaustif", "universel" et centralisé.
La folksonomie c'est un "système de classification collaborative décentralisée et spontanée".
Je pense que les deux classements sont complémentaires, le premier est une repère "plus ou moins immuable", le second un accélérateur de recherche si tant est que ce ne soit pas trop l'anarchie.

Il y a 2 registres de fonctionnements différents :
- l'origine du système de classification
- son usage et sa présentation (UI)
Ils sont habituellement confondus mais la proposition invite à les dissocier :
faire usage des tags folksonomiques
comme base pour la construction d'une classification taxinomique :

On peut aussi considérer que parmi les tags,
il y en a certains qui sont recommandés et qu'on qualifie de "catégories".
Les catégories seraient alors le sous ensemble "dist" de l'ensemble des tags utilisés.

Tu réponds :

Pour l'instant on parle des catégories en rapport avec le référentiel des plugins (Contrib/Plugins SPIP) pour

> justement structurer le site.

Oui.

Et si ça semble plus souple, c'est que plusieurs référentiels ou plusieurs versions d'un même référentiel peuvent co-exister... du moins tant que les tags n'entrent pas en conflit.
(S'il faut prévenir des conflits, j'imagine qu'on a recours à des préfixes, mais ça devient expert et ça n'est plus autant folkulaire).

Hop,

Complètement d'accord avec l'idée initiale, dégraissons le bouzin !

Donc en conclusion, c'est principalement *le référentiel des plugins qui a
besoin de ces catégories,* ce qui est sur c'est que *SPIP et les plugins
fonctionnent très bien sans*.

Oui aussi. Je ne suis pas certain que beaucoup de monde utilise le menu déroulant des 14 catégories pour rechercher un plugin, et encore moins quand il affichera 60 catégories. Amha la recherche libre est ce qu'il y a de plus simple et facile à appréhender.

Les inconvénients :
- Je n'en voit pas. Mais c'est vrai que si on veut remplir le champ
catégorie dans la base des plugins de chaque site installé il faut mettre
en place un mécanisme type API REST pour récupérer la liste des
affectations (préfixe-catégorie)

Sur ce point, Rasta dit :

Quand on a 50 plugins activés par exemple, ça peut être bien de les
afficher par catégorie (au moins de premier niveau). Enfin c'est un
exemple, je veux dire, les catégories c'est pas forcément que pour la
"recherche" (trouver une fonctionnalité), mais aussi dans les trucs
existants sur un site installé quoi.

Amha, une fois de plus la recherche libre présente dans la page qui liste les plugins du site répond au besoin de manière simple et efficace.

Rasta m'a fait remarquer que c'était bien lourd.
Soit mais c'est oublier que SVP fonctionne déjà comme ça et ce toutes les 6
heures ! Je vois pas en quoi récupérer un json de plus de temps en temps
serait si compliqué. Un système de cache pourrait aussi être mis en place.
Après, si on vire le critère catégorie dans le formulaire admin plugins je
pense qu'on peut même s'abstenir de remplir le champ catégorie pour les
sites fonctionnant en mode runtime SVP cad tous les sites sauf Plugins SPIP
!

Si cette fonctionnalité semble vraiment importante (alors même qu'elle ne serait utilisée que plus tard dans une hypothétique nouvelle interface), on aura tout le temps de mettre en place cette nouvelle API quand le besoin se présentera.

J'ai vraiment l'impression qu'on résout tous nos problèmes ainsi, qu'on
s'allège la gestion en se donnant plus de moyens d'avoir une catégorisation
fiable et compréhensible et qu'on répond à toutes les interrogations de ce
fil.

Merci pour tout ça :slight_smile:

Yop,

Oui aussi. Je ne suis pas certain que beaucoup de monde utilise le menu
déroulant des 14 catégories pour rechercher un plugin, et encore moins
quand il affichera 60 catégories. Amha la recherche libre est ce qu’il y
a de plus simple et facile à appréhender.

Oui, le besoin c’est vraiment le rubriqcage de Contrib.

Si cette fonctionnalité semble vraiment importante (alors même qu’elle
ne serait utilisée que plus tard dans une hypothétique nouvelle
interface), on aura tout le temps de mettre en place cette nouvelle API
quand le besoin se présentera.

L’API REST sera dispo bientôt dans SVP API qui sert déjà les plugins et les paquets à partir de Plugins SPIP.
Peu connu mais ça existe !
Deux collections seront rajoutées : la liste des catégories et les affectations préfixe-catégorie.

Merci pour tout ça :slight_smile:

Cadeau :wink:
Je pense qu’il serait bien lors de la sortie de la 3.3 de modifier sur toutes les branches de SPIP 3 la DTD paquet et plugin afin de rendre l’attribut categorie optionnel (il est required aujourd’hui) et de supprimer la liste des valeurs possibles pour ces catégories.
Comme ça sans rien modifier dans un premier temps sur les plugins ont pourra injecter la nouvelle catégorisation.
En complément on pourrait virer le chargement de la catégorie dans SVP à partir de archives.xml et soit le remplacer par la lecture du JSON des affectations prefixe-catégorie soit par rien et virer tout ce qui correspond aux catégories dans SVP. C’est un premier pas simple et sans risque à mon avis.