[SPIP Zone] [Spip-zone-commit] r61724 - _plugins_/palette/trunk

Hello,

Je suis dubitatif sur ton commit :

  • pourquoi avoir passé la version en 3.0.0 ?
  • pourquoi avoir mis la compatibilité à 3.* et non 3.1.* si tant est que tu l’aies testée ? L’idée de la borne sup est d’avoir testé le fonctionnement avant de la déterminer.

++
Eric

2012/5/27 <webmaster@geomaticien.com>

Author: webmaster@geomaticien.com
Date: 2012-05-27 00:11:37 +0200 (Sun, 27 May 2012)
New Revision: 61724

Modified:
plugins/palette/trunk/paquet.xml
Log:
Restauration de la compatibilité avec SPIP 3.1.0-dev et suivants et passage du n° de version du plugin au n° 3.0.0

Details: http://zone.spip.org/trac/spip-zone/changeset/61724


Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit

Le dimanche 27 mai 2012 09:54:11, Eric a écrit :

Hello,

Eric écrit :

Je suis dubitatif sur ton commit :
- pourquoi avoir passé la version en 3.0.0 ?

Pour avoir un numéro de version plus intuitif que 1.4 ou 1.5 : le chiffre 3
indique clairement la compatibilité avec SPIP 3.

- pourquoi avoir mis la compatibilité à 3.* et non 3.1.* si tant est que tu
l'aies testée ? L'idée de la borne sup est d'avoir testé le fonctionnement
avant de la déterminer.

Même principe que le plugin "Les crayons", qui a vocation à être compatible
avec toutes les versions futures. Il sera bien temps de mettre la borne sup à
3.0.n ou 3.1.n, et/ou de faire une nouvelle branche, si le problème se pose
dans l'avenir. En attendant, il serait absurde de rendre Palette incompatible
avec SPIP 3.1.0-dev et de futurs 3.n.n uniquement à cause d'une borne sup trop
basse. L'architecture de SPIP et de ses plugins doit préserver la
compatibilité ascendante autant que faire se peut.
J'ai testé avec la version dev du SVN, versionnée 3.1.0-dev, bien entendu (rev
19470). On ne doit JAMAIS commiter un truc de ce genre sans avoir testé !!!

++
Eric

Par contre (ça n'a rien à voir), un post sur contrib signale un pb de
librairie sur la branche 1_3 pour SPIP 2.1, lié au commit 61190 : cf.

Je veux bien m'en occuper, mais j'aimerais bien des avis tiers avant d'aller
coder en dur tel ou tel chemin de librairie dans le plugin. Cette librairie
doit-elle être sur http://files.spip.org/contribs/farbtastic_1_3.zip ou plutôt
sur Connexion · GitLab
zone/browser/_libs_/farbtastic/farbtastic.js , ou encore ailleurs ?
Quelle est la façon la plus "SPIP-3-ienne" de mettre à disposition une telle
lib, dans ses différentes versions, désormais ?

dF

2012/5/27 <webmaster@geomaticien.com>

> Author: webmaster@geomaticien.com
> Date: 2012-05-27 00:11:37 +0200 (Sun, 27 May 2012)
> New Revision: 61724
>
> Modified:
> _plugins_/palette/trunk/paquet.xml
>
> Log:
> Restauration de la compatibilité avec SPIP 3.1.0-dev et suivants et
> passage du n° de version du plugin au n° 3.0.0
>
>
> Details: Connexion · GitLab
>
> _______________________________________________
> Spip-zone-commit@rezo.net -
> http://listes.rezo.net/mailman/listinfo/spip-zone-commit

Le 27/05/2012 21:26, Daniel FAIVRE a écrit :

Pour avoir un numéro de version plus intuitif que 1.4 ou 1.5 : le chiffre 3
indique clairement la compatibilité avec SPIP 3.

Pour les autres points why not, mais pour ce point-là, teu teu teu : un plugin à SON propre cycle de vie, sa numérotation n'a rien à faire avec celle du noyau de SPIP. La compatibilité c'est dans l'attribut dédié, sinon il n'y aurait pas deux champs différents.

--
RastaPopoulos

Même principe que le plugin « Les crayons »

j’ai mis * dans un mouvement d’humeur mais marcimat m’a expliqué pourquoi il ne fallait pas faire ça…

– Fil

Le dimanche 27 mai 2012 22:54:22, RastaPopoulos a écrit :

Le 27/05/2012 21:26, Daniel FAIVRE a écrit :
> Pour avoir un numéro de version plus intuitif que 1.4 ou 1.5 : le chiffre
> 3 indique clairement la compatibilité avec SPIP 3.

Pour les autres points why not, mais pour ce point-là, teu teu teu : un
plugin à SON propre cycle de vie, sa numérotation n'a rien à faire avec
celle du noyau de SPIP. La compatibilité c'est dans l'attribut dédié,
sinon il n'y aurait pas deux champs différents.

c'est également défendable. Mais le fait que le plugin ait son cycle de vie
propre n'interdit en rien de lui donner un numéro principal égal à celui de la
version spip en cours, et de suivre son cycle de vie sur les deux numéros
suivants, non ?
ça n'a rien d'indispensable, mais comme rien ne l'interdit non plus, je ne
vois pas d'inconvénient à numéroter 3.x.x. un plugin pour SPIp 3.y.y

Maintenant, si quelque chose m'a échappé, bien entendu, on changera ça.

Le dimanche 27 mai 2012 23:44:29, Fil a écrit :

> Même principe que le plugin "Les crayons"

j'ai mis * dans un mouvement d'humeur mais marcimat m'a expliqué pourquoi
il ne fallait pas faire ça…

-- Fil

Je n'ai pas vu les explications de Marcimat. Moi, mon idée était de mettre une
compatibilité "ouverte" a priori, et de ne fermer la borne que si dans
l'avenir une nouvelle version de SPIP brisait la compatibilité ascendante.
SPIP a pendant longtemps préservé une excellente compatibilité ascendante lors
de ses évolutions, et c'est un atout à préserver autant que faire se peut,
AMHA.

Mais s'il ne faut pas faire ça, OK, dites moi juste ce qu'il convient de faire
pour ne changer la borne sup QUE si une nouvelle version SPIP brise la
compatibilité.

Le 28/05/12 00:36, Daniel FAIVRE a écrit :

mon idée était de mettre une
compatibilité "ouverte" a priori, et de ne fermer la borne que si dans
l'avenir une nouvelle version de SPIP brisait la compatibilité ascendante.

scénario :

un plugin 'truc' en version 1.0.0 compatible avec SPIP jusqu'à l'infini
(et au-delà...) ;

sortie de SPIP version 4 (celle prévue en octobre 2012, mais chut :
il faut pas le dire) brisant la compatibilité du plugin 'truc' ;

mise à jour du plugin 'truc' en version 2.0.0 compatible avec SPIP (y
compris SPIP4) jusqu'à l'infini (et au-delà...) ;

avec mon SPIP4, je télécharge 'truc' version 1.0.0 car annoncé comme
compatible.

Le lundi 28 mai 2012 01:22:29, denisb a écrit :

Le 28/05/12 00:36, Daniel FAIVRE a écrit :
> mon idée était de mettre une
> compatibilité "ouverte" a priori, et de ne fermer la borne que si dans
> l'avenir une nouvelle version de SPIP brisait la compatibilité
> ascendante.

scénario :

un plugin 'truc' en version 1.0.0 compatible avec SPIP jusqu'à l'infini
(et au-delà...) ;

sortie de SPIP version 4 (celle prévue en octobre 2012, mais chut :
il faut pas le dire) brisant la compatibilité du plugin 'truc' ;

mise à jour du plugin 'truc' en version 2.0.0 compatible avec SPIP (y
compris SPIP4) jusqu'à l'infini (et au-delà...) ;

avec mon SPIP4, je télécharge 'truc' version 1.0.0 car annoncé comme
compatible.

Scénario plus courant, qui se produira avant :
- le plugin "truc" a comme borne sup 3.0.99
- SPIP 3.1 sort
- le plugin "truc" n'est plus reconnu comme compatible, alors qu'il l'est ...
- avec mon SPIP 3.1.0, je ne retrouve plus le plugin "truc", pourtant
compatible, dans la liste ...

Hello Daniel,

Après la question, je vais expliquer mes motivations sur le sujet.

Pour le numéro de version, ce qui m’a choqué c’est qu’aucun commit préalable ne justifiait le changement. Donc dans le cycle de vie du plugin on voit à un moment un saut incompréhensible sur le x (de x.y.z) qui devrait signifier une incompatibilité.
La sortie de Plugins SPIP a justement été l’occasion de « rationaliser » un peu ces concepts pour une meilleure visibilité pour tous.
L’explication est ici : http://plugins.spip.net/redaction-du-paquet-xml.html

Le 28 mai 2012 02:20, Daniel FAIVRE <webmaster@geomaticien.com> a écrit :

Scénario plus courant, qui se produira avant :

  • le plugin « truc » a comme borne sup 3.0.99
  • SPIP 3.1 sort
  • le plugin « truc » n’est plus reconnu comme compatible, alors qu’il l’est …
  • avec mon SPIP 3.1.0, je ne retrouve plus le plugin « truc », pourtant
    compatible, dans la liste …

Oui mais celui-là n’est pas problématique et « protège » le webmestre.
Alors oui, le dev poilu ça le fait chier car il « perd » son plugin qu’il savait (le dev est magicien par essence) fonctionner.

L’interface de SVP est pas top lors que cela se produit, il faudra y remédier plutôt que réouvrir toutes les bornes. Fil a déjà fait une liste.
En outre, Denis vient de rajouter un define pour outrepasser ce comportement et cela me parait plus intéressant comme démarche car c’est une démarche de dev.

Enfin, on a passé des semaines à corriger les bornes de près de 800 plugins de la zone afin qu’ils annoncent leur vraie compatibilité affichée sur Plugins SPIP : j’ai pas trop envie de perdre cet acquis.
Et tu ne t’imagines pas combien de plugins plus compatibles depuis 1.9.2 avaient une borne sup ouverte comme tu dis qui annoncait compatible jusqu’à la fin des temps.
Et mettre un borne sup à une valeur x apporte plus d’informations (au moins j’ai testé ça marche) que de la fermer un jour hypothétique.

Voilà

++
Eric

Le 28/05/12 02:20, Daniel FAIVRE a écrit :

Scénario plus courant, qui se produira avant :
- le plugin "truc" a comme borne sup 3.0.99
- SPIP 3.1 sort
- le plugin "truc" n'est plus reconnu comme compatible, alors qu'il l'est ...
- avec mon SPIP 3.1.0, je ne retrouve plus le plugin "truc", pourtant
compatible, dans la liste ...

je ne nie pas le fait que ce puisse être problématique.

mais :
1) la mise en place de la nouvelle gestion des plugins
dans SPIP3 a donné lieu à une documentation de préparation
assez importante.

2) il ne me parait pas inutile qu'un plugin bénéficie d'un
minimum de suivi (je suis pas trop partisan du "on pose sur la
zone et on s'en lave les mains.").

3) pour le cas d'une mise à jour de SPIP au niveau d'un serveur
(dans le cas d'une ferme à SPIP mutualisée par exemple) il ne
me parait pas ahurissant d'avoir informé préalablement les utilisateurs
de la nécessité de vérifier leurs plugins avant de provoquer
le 'grand saut'.

4) d'autres évolutions apportées par SPIP3 rompent la luxueuse
compatibilité ascendante (id_secteur par exemple), tout comme
SPIP2.1 : voir "Incompatibilités connues" sur

comme souvent, trouver l'équilibre entre compatibilité ascendante,
rajeunissement du code et préalables nécessaires à l'utilisation de
nouvelles fonctionnalités n'est pas le plus simple.

Scénario plus courant, qui se produira avant :

  • le plugin « truc » a comme borne sup 3.0.99
  • SPIP 3.1 sort
  • le plugin « truc » n’est plus reconnu comme compatible, alors qu’il l’est …
  • avec mon SPIP 3.1.0, je ne retrouve plus le plugin « truc », pourtant
    compatible, dans la liste …

J’y ai un peu réfléchi en me rasant et je trouve qu’il n’y a pas de moyen simple de sortir du sac de noeuds.

Je vois deux cas :

a) un plugin en cours de dev en même temps que le core, et qui utilise des fonctionnalités en cours de dev dans le core. => dans ce cas, l’info de compatibilité n’est pas essentielle, rien n’étant stabilisé le plugin ne va pas être « consommé » tout de suite par des utilisateurs « non dev ». Donc on peut s’en foutre.

b) un plugin connu et stable, ou en cours de dev sur des fonctionnalités stables du core.

Dans ce cas, si un point d’entrée pète parce que le core a bougé, c’est une rupture de compat du core, censée ne se produire que lorsqu’on change de gros numéro de version.

Du coup si les crayons marchent avec SPIP 3.0.0 on peut être sûrs qu’ils marcheront avec tous les SPIP 3.0.x — mais pas forcément avec SPIP 3.1.x (ça, c’est ce qui demande d’être testé).

Donc actuellement, comme il n’y a pas de chantier prévu pour 3.1 sur les points d’entrée utilisés par les crayons, je devrais indiquer comme borne 3.1.99, et ne plus être emmerdé par cette question que si on passe un jour à une branche SPIP 3.2.x ou SPIP 4.0.0.

Mais peut-être mon raisonnement es-il aussi valide à l’étape du dessus : à savoir que je suis sûr que les crayons seront compatibles SPIP 3.99.99, mais que je ne sais pas pour SPIP 4.0.0. En effet si SPIP casse la compat de inc/modifier ça justifiera un SPIP 4 (et le responsable se fera taper !).

Si je comprends bien qu’on ne peut pas prédire l’avenir des compatibilités, s’obliger à tester et renuméroter presque un millier de plugins à chaque révision mineure du core me paraît dangereusement démotivant. On a donc une recherche de compromis à faire. Si le plugin est vraiment réputé stable comme le sont les crayons, je dois pouvoir me permettre une borne à 3.99.99 ; si c’est un peu plus périlleux, 3.1.99. Mais en fait, c’est une contrainte que j’impose alors sur le core.

Ou alors, on procède autrement, avec quatre états : inconnu, compatible, incompatible, douteux. Lorsque l’état de compatibilité d’un plugin XvN avec SPIPvZ est inconnu, on laisse l’utilisateur apprécier la situation : il peut « prendre le risque », et on l’invite à renseigner lui-même l’info comme quoi ça marche ou pas, ou pas sûr. Si l’incompatibilité est avérée on propose de chercher une mise à jour (il y en a sûrement une, sauf plugin abandonné).

On peut alors imaginer un outil de gestion du tableau des compatibilités. Les utilisateurs et développeurs pourraient aller modifier l’état de la matrice quand ils constatent des problèmes, d’un simple clic sur plugin.spip.net par exemple.

– Fil

Hello Eric, Denis, Fil, ...

@Eric : Tout d'abord, je tiens à te dire explicitement que je suis très
respectueux (et reconnaissant) du travail de toute la communauté SPIP, et
aussi de sa philosophie du libre: j'avais donc potassé la page
http://plugins.spip.net/redaction-du-paquet- xml.html AVANT de toucher au
moindre paquet.xml. Cette page n'interdit pas ni ne déconseille de numéroter
un plugin sur le modèle
"version majeure de SPIP - version majeure du plugin - révision du plugin". Le
changement de version était de toute façon rendu indispensable par
l'incompatibilité factice crée par une borne sup trop basse, signalée par
Franck sur SPIP-Contrib, et ça m'a semblé une bonne idée d'en profiter pour
faire ce saut de version afin que celà soit plus clair pour les utilisateurs.

A part ça je suis effectivement un dév "poilu" (je suis barbu), mais Fil a
publié ce jour (15h01:16) sur spip-zone un post où il dit "J'y ai un peu
réfléchi en me rasant et je trouve qu'il n'y a pas de moyen simple de sortir
du sac de noeuds."

Je partage donc l'opinion de Fil (sauf pour le rasage matinal ...) :
- "s'obliger à tester et renuméroter presque un millier de plugins à chaque
révision mineure du core me paraît dangereusement démotivant.".
Je pense que les évolutions du core doivent donc s'assurer de ne pas casser de
compatibilités quand ce n'est pas absolument inévitable en raison de l'ajout
de fonctionnalités nouvelles.

A terme, l'idéal serait de prévoir des tests unitaires normalisés au niveau
des plugins (et des "noisettes" incluses dedans, bien entendu), afin de
permettre aux développeurs du core de tester rapidement la compatibilité des
évolutions avec TOUT l'existant.

Fil propose néanmoins plusieurs pistes qui me semblent meilleures que
d'obliger tout développeur de plugin à mettre à jour des bricoles (voire un
simple numéro de version) parce qu'une compatibilité ascendante aurait été
cassée trop vite lors d'une évolution du core de SPIP.
Il me semble ESSENTIEL que l'excellente compatibilité ascendante qui a
contribué au succès de SPIP depuis de nombreuses années reste une priorité
lors des évolutions du core, et que les règles de versionnement ne créent pas
d'incompatibilités factices, comme celà s'est produit pour Palette avec SPIP
3.1.0-dev (svn).

L'idée de Fil d'un outil de gestion d'un tableau des compatibilités me semble
excellente, et je voudrais suggérer en plus que tout signalement
d'incompatibilité dans un tel outil soit lié à l'outil de suivi de bugs et de
features requests. Des mails automatiques aux développeurs de plugins ET DU
CORE seraient un plus : si un dev ne corrige pas une incompatibilité signalée
au bout d'un temps raisonnable, alors on pourrait considérer qu'il s'agit d'un
développement abandonné ?

@Eric : les "corrections de bornes" de près de 800 plugins n'étaient pas une
bonne solution, AMHA, pour trois raisons :

- celle que Fil a signalé : c'est à refaire à chaque évolution même mineure du
core;

- si c'est nécessaire, c'est peut-être bien parce que la compatibilité
ascendante du core a été traitée plus légèrement que par le passé;

- et surtout, c'est un changement "philosophique", un renversement de
perspective (qui me déplait), entre la volonté de moderniser régulièrement le
core et le souhait légitime des développeurs d'avoir un core ultra-stable
facilitant les développements sur cette plateforme.
Je pense que certains points d'entrée du core devraient être "ultra-stables"
et à défaut prévoir des fonctionnalités de compatibilité quand la
modernisation du core impose des changements (fonction find_in_path(),
pipelines, modalités de surcharge des fonctions du core, ...).

Encore une fois, développer un mécanisme solide et global de tests unitaires
normalisé pour les développements hors du core serait sans doute une meilleure
solution, plus fiable. Il y a déjà eu des tentatives dans cette direction;
peut-être sont-elles à moderniser, elles aussi ?

Bien cordialement,
dF

Le lundi 28 mai 2012 10:40:54, vous avez écrit :

Hello Daniel,

Après la question, je vais expliquer mes motivations sur le sujet.

Pour le numéro de version, ce qui m'a choqué c'est qu'aucun commit
préalable ne justifiait le changement. Donc dans le cycle de vie du plugin
on voit à un moment un saut incompréhensible sur le x (de x.y.z) qui
devrait signifier une incompatibilité.
La sortie de Plugins SPIP a justement été l'occasion de "rationaliser" un
peu ces concepts pour une meilleure visibilité pour tous.
L'explication est ici :
Rédaction du paquet.xml - Plugins SPIP

Le 28 mai 2012 02:20, Daniel FAIVRE <webmaster@geomaticien.com> a écrit :
> Scénario plus courant, qui se produira avant :
> - le plugin "truc" a comme borne sup 3.0.99
> - SPIP 3.1 sort
> - le plugin "truc" n'est plus reconnu comme compatible, alors qu'il l'est
> ...
> - avec mon SPIP 3.1.0, je ne retrouve plus le plugin "truc", pourtant
> compatible, dans la liste ...

Oui mais celui-là n'est pas problématique et "protège" le webmestre.
Alors oui, le dev poilu ça le fait chier car il "perd" son plugin qu'il
savait (le dev est magicien par essence) fonctionner.

L'interface de SVP est pas top lors que cela se produit, il faudra y
remédier plutôt que réouvrir toutes les bornes. Fil a déjà fait une liste.
En outre, Denis vient de rajouter un define pour outrepasser ce
comportement et cela me parait plus intéressant comme démarche car c'est
une démarche de dev.

Enfin, on a passé des semaines à corriger les bornes de près de 800 plugins
de la zone afin qu'ils annoncent leur vraie compatibilité affichée sur
Plugins SPIP : j'ai pas trop envie de perdre cet acquis.
Et tu ne t'imagines pas combien de plugins plus compatibles depuis 1.9.2
avaient une borne sup ouverte comme tu dis qui annoncait compatible jusqu'à
la fin des temps.
Et mettre un borne sup à une valeur x apporte plus d'informations (au moins
j'ai testé ça marche) que de la fermer un jour hypothétique.

Voilà

++
Eric