[spip-dev] Changer la gestion des catégories de plugin

Hello,

On se place dans un moment charnière où il y aurait des plugins SPIP
«composerisés», mais pas tous. L’idée (de ce que j’ai compris) qu’il
avait en tête en refaisant Smart Paquets est de changer à terme la
méthode de déclaration des paquets (actuellement archivelist*) pour :

  • un automatisme pour les plugins Composerisés (présents sur Packagist)
    : une API publique à Packagist permet de lister l’ensemble des paquets
    de type “spip-plugin” par exemple
    (https://packagist.org/packages/list.json?type=spip-plugin). À partir de
    cela il est possible de récupérer une description de chaque paquet (dont
    le nom, la source, l’url de documentation, le zip …)
    (https://repo.packagist.org/p/spipremix/saisies.json). Donc, de notre
    côté, avec un petit cron, il semble possible de découvrir
    automatiquement ces plugins SPIP pour les lister dans cet annuaire.

Faut juste penser que smart-paquets ne fait pas que compiler les données contenues dans un paquet.xml ou un plugin.xml. Il construit des données incluses dans le archives.xml comme les traductions.
Donc je ne sais pas comment une API sur un outil qui nous est externe et sur lequel nous n’avons pas prise peut arriver à rendre un service équivalent. C’est à étudier, je le répète depuis des semaines sans être audible il semblerait, Composer me parait indolore dans l’étape initiale sauf pour le référencement des plugins et c’est pour cela que j’ai lancé les deux derniers fils.
Ca serait donc bien que cette réflexion se fasse plus ouvertement car je sais par expérience que les fonctions de SVP, ses modules connexes et smart-paquets sont mal connues.

  • pour les autres plugins, l’idée serait d’avoir sur plugins.spip.net un
    formulaire où l’on saisit l’url du projet (plutôt que de donner l’url du
    répertoire à zipper avec le n° de commit) : de donner l’url racine du
    projet (le git), ou sur la zone, le svn au niveau de la racine d’un
    plugin (plugins/saisies) en standard layout (tags / branches / trunk)
    et c’est l’outil qui génère alors un zip pour chaque tag, branche, trunk
    (lorsque la forge ne fournit pas d’api pour obtenir le zip) ; Donc sans
    indication de révision spécifique.

Je comprends pas le “sans révision spécifique”.
Si je comprends bien c’est une autre façon de construire le archivelist.txt non ?
Dans le chantier Refonte de Contrib, qui permettra de construire un nouveau référentiel des plugins (Plugins SPIP + Contrib) on a prévu :

  • un workflow “documenter un plugin”
  • puis ensuite, hier, on s’est dit qu’on pourrait avoir un workflow “catégoriser un plugin” qui pourrait se prolonger par le précédent.
  • j’ai l’impression que là on pourrait encore faire un pas de plus en ayant un workflow “déclarer un plugin” qui pourrait être un préalable ou englober les deux précédents workflows.
  • en allant (beaucoup) plus loin, dans ce cadre de la zone, cet outil
    pourrait servir à transformer des plugins non standard layout sur la
    zone en standard layout, voire faire la migration svn > git, pour les
    personnes donc qui ne sont pas à l’aise avec ces migrations.

Why not c’est une bonne idée.

Par rapport aux documentations

Je pense qu’il faut aussi tenir compte des fichiers ‘Readme.md’ qui est
relativement standard lorsqu’un code source est mis sur github. Assez
souvent aussi un répertoire doc/ ou docs/ est présent. Mais dans la
mesure du possible, s’il y a un composer.json, l’url de documentation
est indiquée (de même que s’il y a un paquet.xml).

Pourquoi demander (lorsqu’on déclare un plugin) de rédiger autre chose
si une telle url est renseignée ? Enfin ça mange pas de pain, mais à mon
avis il manque “La documentation existe déjà” dans les choix.

Absolument. Mais on a déjà ce cas actuellement puisque qu’une partie de la doc des plugins est rédigée en dehors de Contrib et pointée par le lien “documentation”.
Maintenant, je trouve que ce n’est pas une bonne idée parce que le suivi éditorial de Contrib permet d’avoir une documentation relativement homogène et de qualité, ce qui n’est pas le cas des readme que j’ai pu lire, loin de là…
Donc c’est possible mais je trouve que ce n’est pas à encourager.

[...]

Faut juste penser que smart-paquets ne fait pas que compiler les données contenues dans un paquet.xml ou un plugin.xml. Il construit des données incluses dans le archives.xml comme les traductions.

Il me semble que l’idée est bien de continuer à générer ce fichier (et donc à un moment il y a une phase d’analyse du code source, notamment de paquet.xml).

Donc je ne sais pas comment une API sur un outil qui nous est externe et sur lequel nous n'avons pas prise peut arriver à rendre un service équivalent. C'est à étudier, je le répète depuis des semaines sans être audible il semblerait, Composer me parait indolore dans l'étape initiale sauf pour le référencement des plugins et c'est pour cela que j'ai lancé les deux derniers fils.

Heu, oui, enfin nous aussi on se répète…

Ca serait donc bien que cette réflexion se fasse plus ouvertement

Je vois pas en quoi ce n’est pas ouvert. C’est pas les mails qui manquent, ni les résumés des réflexions...

car je

sais par expérience que les fonctions de SVP, ses modules connexes et smart-paquets sont mal connues.

Certes, mais on est peut être pas obligé de reproduire le fonctionnement à l’identique.

Je comprends pas le "sans révision spécifique".

Dans archivelist, tu déclares la … ah non… Lol… pardon, c’est moi qui ait confondu avec un autre outil… donc tu déclares juste le chemin du répertoire.

Si je comprends bien c'est une autre façon de construire le archivelist.txt non ?

Oui, enfin ça ne le reconstruit pas à proprement parler, mais oui, ça crée une liste d’urls sources de plugins.

[...]

et de qualité, ce qui n'est pas le cas des readme que j'ai pu lire, loin de là...

Alors peut être chez SPIP, mais sur d’autres projets le readme est un très bon point d’entrée, qui me semble à encourager au contraire (parce que standard justement).

Un petit exemple : https://github.com/Seldaek/monolog
Le readme et la doc/ correspond à la branche du plugin que tu regardes.
Tu fais une nouvelle version dans une nouvelle branche ? tu adaptes ta doc à côté, elle est à jour pour cette branche. Il y a un côté à la fois pratique et simple, et la doc est associée au code. Par contre, il n’y a pas de traductions (en tout cas dans cet exemple là).

Ce qui n’empêche pas d’avoir une doc collective éditoriale à côté heureusement, mais en tout cas comme base, c’est ce qui me parait le plus sain.

MM.

Re,

Faut juste penser que smart-paquets ne fait pas que compiler les données
contenues dans un paquet.xml ou un plugin.xml. Il construit des données
incluses dans le archives.xml comme les traductions.

Il me semble que l’idée est bien de continuer à générer ce fichier (et
donc à un moment il y a une phase d’analyse du code source, notamment de
paquet.xml).

Ah ok, impec alors.
Mais ça me parait si évident.

Donc je ne sais pas comment une API sur un outil qui nous est externe et
sur lequel nous n’avons pas prise peut arriver à rendre un service
équivalent. C’est à étudier, je le répète depuis des semaines sans être
audible il semblerait, Composer me parait indolore dans l’étape initiale
sauf pour le référencement des plugins et c’est pour cela que j’ai lancé
les deux derniers fils.

Heu, oui, enfin nous aussi on se répète…

De quoi tu parles ?
Moi je parle juste de ce sujet pas de Composer dans sa globalité.
La doc sur la migration vers Composer est très bien.

Le seul truc que je ne vois c’est où on en est du développement ?
Est-on proche d’avoir une version SPIP+dist Composer et Git ou pas ?
Qui travaille dessus, doit-on faire quelque chose ?

A ce propos, une petite aparté : je me suis mis “sérieusement” à git avec Github pour les devs de Contrib, franchement c’est nickel Github !
Je reste sur ma position que Git est bien trop complexe pour 90% des besoins mais avec Github on peut pratiquement faire du SVN-like en mieux (par exemple, avec l’IDE Github Desktop).
Donc à mon avis y a pas à hésiter…

Ca serait donc bien que cette réflexion se fasse plus ouvertement

Je vois pas en quoi ce n’est pas ouvert. C’est pas les mails qui
manquent, ni les résumés des réflexions…

Encore une fois, je ne parle que de cette partie plutôt liée à Smart-paquets.

car je

sais par expérience que les fonctions de SVP, ses modules connexes et
smart-paquets sont mal connues.

Certes, mais on est peut être pas obligé de reproduire le fonctionnement
à l’identique.

Ca ça se discute justement ;-).
Tu es d’ailleurs dans un fil qui discute des fonctions de SVP…

Si je comprends bien c’est une autre façon de construire le
archivelist.txt non ?
Oui, enfin ça ne le reconstruit pas à proprement parler, mais oui, ça
crée une liste d’urls sources de plugins.

Oui c’est ça, c’est ce que je voulais dire.

[…]

et de qualité, ce qui n’est pas le cas des readme que j’ai pu
lire, loin de là…

Alors peut être chez SPIP, mais sur d’autres projets le readme est un
très bon point d’entrée, qui me semble à encourager au contraire (parce
que standard justement).

Je vais pas mettre mes exemples car c’est du SPIP :wink:

Un petit exemple : https://github.com/Seldaek/monolog
Le readme et la doc/ correspond à la branche du plugin que tu regardes.
Tu fais une nouvelle version dans une nouvelle branche ? tu adaptes ta
doc à côté, elle est à jour pour cette branche. Il y a un côté à la fois
pratique et simple, et la doc est associée au code. Par contre, il n’y a
pas de traductions (en tout cas dans cet exemple là).

Ce qui n’empêche pas d’avoir une doc collective éditoriale à côté
heureusement, mais en tout cas comme base, c’est ce qui me parait le
plus sain.

Oui, c’est bien mais je trouve que la lecture sous github est cette fois plus difficile.
Je pense que c’est du à la police et à la présentation.
Mais oui, y a surement de la doc bien faite, le problème c’est la statistique sur le sujet…

Monolog c’est le premier module qui rentrera dans le SPIP-git-composer ? :wink:
Ca a l’air très bien.

Au passage, le rapprochement avec github va donner de plus en plus envie aux développeurs d'utiliser md.

Dans la logique d'immersion des singularités de SPIP dans le grand bain mondialisé d'inter-développements php,
il sera utile de disposer d'un convertisseur raccourcis-SPIP vers l'un des dialectes md le plus approprié.

JL

Hello,

Hop,

Pourquoi demander (lorsqu’on déclare un plugin) de rédiger autre chose
si une telle url est renseignée ? Enfin ça mange pas de pain, mais à mon
avis il manque "La documentation existe déjà" dans les choix.

Absolument. Mais on a déjà ce cas actuellement puisque qu'une partie de la
doc des plugins est rédigée en dehors de Contrib et pointée par le lien
"documentation".
Maintenant, je trouve que ce n'est pas une bonne idée parce que le suivi
éditorial de Contrib permet d'avoir une documentation relativement homogène
et de qualité, ce qui n'est pas le cas des readme que j'ai pu lire, loin de
là...
Donc c'est possible mais je trouve que ce n'est pas à encourager.

Juste sur ce point, et pour rebondir sur la proposition de nicod et cy_altern :

Et si on leur créait quand même un article automatiquement ? (pour ceux qui n'ont pas de lien de doc)

Dans ce cas, l'article créé lors de "déclaration" d'un plugin pourrait contenir l'import de l'éventuel README.md (et bien traité pour l'affichage à l'aide du plugin markdown).

Yop,

Hop,

juste sur ce point, et pour rebondir sur la proposition de nicod et
cy_altern :

Et si on leur créait quand même un article automatiquement ? (pour ceux qui n’ont pas de lien de doc)

Je ne suis pas trop chaud pour cet automatisme.
Je préfère un bouton “documenter un plugin” qui est un acte plus volontaire.

Dans ce cas, l’article créé lors de “déclaration” d’un plugin pourrait
contenir l’import de l’éventuel README.md (et bien traité pour
l’affichage à l’aide du plugin markdown).

Par contre, oui, c’est une bonne idée, à savoir, permettre d’initialiser la doc avec le readme.

Je ne suis pas pour, ça crée un risque de divergence : si le readme évolue mais pas la doc sur contrib ce serait assez contre productif.

Eventuellement, l'attacher comme doc et en faire un embed affiché dans l'article, mais s'il est toujours à jour, ce qui veut dire synchro à mettre en place.

Peut être un peu compliqué.

Hop,

Oui je pensais aussi à une synchro, mais au final ça commence vraiment à ressembler à … un registre comme npm ou packagist ^^

Hello,

Hop,

Par contre, oui, c’est une bonne idée, à savoir, permettre
d’initialiser la doc avec le readme.

Je ne suis pas pour, ça crée un risque de divergence : si le readme
évolue mais pas la doc sur contrib ce serait assez contre productif.

Eventuellement, l’attacher comme doc et en faire un embed affiché dans
l’article, mais s’il est toujours à jour, ce qui veut dire synchro à
mettre en place.

Peut être un peu compliqué.

Oui je pensais aussi à une synchro, mais au final ça commence vraiment à
ressembler à … un registre comme npm ou packagist ^^

Ah ben non moi je pensais pas du tout à une synchro.
Je pensais juste à une initialisation.
J’ai fait mon plugin sur Github avec une readme rapide.
Je vais faire une doc ensuite du plugin sur Contrib et je récupère le readme pour l’initialiser uniquement.

Après, à partir du moment où on connait l’adresse github du repo on sait retrouver celle du readme.
Donc on pourrait aussi le voir comme ça juste avec un lien comme actuellement.
Ce qui est chiant je trouve quand on a des docs partout c’est qu’il faut switcher de site.
Je me demande si dans le cas du readme qui est forcément écrit en MD on ne pourrait pas en connaissant le lien acquérir le contenu MD et le processer SPIP afin de l’afficher commme une page SPIP du site de départ (Contrib en l’occurence) ?

Oué :slight_smile:

Mais pourtant exploiter le readme c'est vraiment une bonne idée.
Çe serait peut être pas si compliqué une synchro après tout.

Faudrait savoir faire un équivalent de `svn export` en git sur un fichier distant pour mettre à jour un doc dans /IMG/md, ou un truc dans le genre.

Sur github, on a déjà les urls raw des fichiers :
https://raw.githubusercontent.com/user/projet/master/readme.md

Hop,

C’est bien ce que je proposais, mais sans l’étape de conversion vers SPIP puisqu’on a ce qu’il faut pour bien prendre en charge du MD.

Ah ben non moi je pensais pas du tout à une synchro.
Je pensais juste à une initialisation.
J'ai fait mon plugin sur Github avec une readme rapide.
Je vais faire une doc ensuite du plugin sur Contrib et je récupère le readme pour l'initialiser uniquement.

Non justement.
Si quelqu'un fait sa doc dans un readme et la tient à jour, il n'a pas envie de s'emmerder à importer ça aussi dans contrib et à penser à la mettre à jour aussi.
Faut que ce soit automatique, le readme étant la référence.

Après, à partir du moment où on connait l'adresse github du repo on sait retrouver celle du readme.
Donc on pourrait aussi le voir comme ça juste avec un lien comme actuellement.
Ce qui est chiant je trouve quand on a des docs partout c'est qu'il faut switcher de site.

Oui.

Je me demande si dans le cas du readme qui est forcément écrit en MD on ne pourrait pas en connaissant le lien acquérir le contenu MD et le processer SPIP afin de l'afficher commme une page SPIP du site de départ (Contrib en l'occurence) ?

C'est bien ce dont on discute non ?

Hop,

Exactement :slight_smile:

Pour trac on a déjà des liens pour ça aussi :

https://zone.spip.net/trac/spip-zone/export/latest/spip-zone/plugins/gis/trunk/paquet.xml permet de récupérer https://zone.spip.net/trac/spip-zone/browser/spip-zone/plugins/gis/trunk/paquet.xml

Et gitlab permet ça aussi.

Yop,

Je me demande si dans le cas du readme qui est forcément écrit en MD on
ne pourrait pas en connaissant le lien acquérir le contenu MD et le
processer SPIP afin de l’afficher commme une page SPIP du site de départ
(Contrib en l’occurence) ?

C’est bien ce dont on discute non ?

Huhu je suis pas sur d’avoir compris.
Je re-phrase plus clairement :

  • je veux documenter mon plugin github sur Contrib.
  • je clique sur le bouton “Documenter un plugin” et dans le formulaire quelque part je choisis Github/readme pour dire que le corps de la doc viens du readme qui est la référence unique.
  • je valide et contrib me crée l’article là où il faut dans contrib et insère dans le texte un modèle <readme|src=xxxx>.
  • donc ensuite je peux ajouter tout ce que je veux à mon article mais le texte lui vient du readme et est affiché dans le site contrib qui a lui tous les éléments de contexte du plugin.

C’est bien ça que vous imaginez ?

Oui, évidemment.

Mais je pense qu'il faut arrêter de vouloir cloisonner et imposer des
limites trop strictes.

Je dis ça, et on le sait, en faisant clairement partie de ceux qui
pensent que c'est bien si les gens utilisent au maximum les outils
communs de la communauté. MAIS dans le même temps, je pense qu'il ne
faut rien imposer.

Si les gens ont envie de pouvoir documenter ailleurs, que ce soit un
fichier MD dans le dépôt de code, ou dans un site séparé (comme
spipr.nursit) qui peut même parfois documenter plusieurs plugins d'un
même gros projet : on doit pouvoir le faire.

Et on doit pouvoir le faire en étant toujours bien référencé sur la
communauté quand même, quand on fait ce qu'il faut pour y être déclaré.
Ça permet de ne pas avoir des projets "fantomes" qu'en fait personne ne
connait et qui trainent, sans être listés chez nous aussi.

C'est d'ailleurs exactement ça : comme les dépôts packagist. D'ailleurs
à terme (plutôt moyen-long), on supprimera totalement archivelist et
notre listing sera à priori un sous-ensemble de packagist (une
extraction des projets composer déclarés comme étant de type "spip-plugin").

Seulement on est gentil et on propose *à ceux qui veulent* de faire leur
documentation sur nos outils communs.

Re,

Oui, par exemple.

Effectivement si on référence directement avec un modèle et la source, pas besoin de synchro d'un document.

Ça couvre déjà le cas de github, en récupérant automatiquement l'url raw depuis le nom du fichier et du dépot :
https://raw.githubusercontent.com/user/projet/master/readme.md

Ça me parait un bon plan.

Oui, c'est bien mais je trouve que la lecture sous github est cette fois plus difficile.
Je pense que c'est du à la police et à la présentation.
Mais oui, y a surement de la doc bien faite, le problème c'est la statistique sur le sujet...

Tiens, autre doc en markdown, celle de Project Fluent : là https://github.com/projectfluent/fluent/tree/master/guide
Qui se retrouve sur GitBook là : https://projectfluent.org/fluent/guide/

Mais… GitBook, qui semble être fait par une équipe lyonnaise, dans sa version 2 a un éditeur en ligne (tout beau, avec édition en place, et a priori propriétaire ? En tout cas ça ne semble plus là https://github.com/GitbookIO) qui stocke maintenant les données en JSON et plus en Markdown. Avec les explications du pourquoi (limitations) là https://docs.gitbook.com/v2-changes/important-differences#editing-markdown-source ; Je n’ai pas trouvé à quoi ressemble le JSON derrière…

Ce qui je trouve est intéressant vis-à-vis de la discussion markdown de l’autre côté. L’inconvénient clair pour moi du JSON est qu’il faut alors absolument un éditeur par dessus pour rédiger le contenu.

Monolog c'est le premier module qui rentrera dans le SPIP-git-composer ? :wink:
Ca a l'air très bien.

Pourquoi pas :slight_smile:

Une des possibilités est d’utiliser un conteneur de services. Le service 'log' (ou équivalent) retournerait un logger compatible avec la l’interface fournie de psr/log. Probablement Monolog s’il y en a un à choisir. Ou une implémentation SPIP qui reprendrait le fonctionnement historique qu’à spip_log. Est configurable quelque part la relation entre le service 'log' et l’implémentation utilisée.

Ceci fait, spip_log() elle même peut devenir dépréciée (ou pas) et utiliser alors le service de log directement.

MM.

La signature de la fonction spip_log a mal évolué dans le temps.
Si ça devient obsolète, je ne regretterai pas le fait de devoir concaténer le nom du fichier de log et le niveau de log.

Mais j'imaginerai bien un tableau de bord permettant de régler certes le niveau de log global,
mais surtout permettant d'activer les logs sur telle ou telle fonctionnalité-fichier de log.

JLuc