http://spip21.smellup.net/spip.php?article36
En fait, la surveillance couteuse des fichiers des plugins (verifier_plugin) n'a qu'une finalité :
permettre de désactiver un plugin en supprimant ou renommant son répertoire en cas de page blanche après une activation.
Autrement dit c'est une fonction de secours qui permet de rétablir par ftp le fonctionnement normal du site par une opération à peu près naturelle.
C'est l'expérience qui nous avais conduit à ajouter ce fonctionnement qui n'était pas là au tout début.
Je ne comprends pas. Si la page est blanche après activiation, on comprend tout de suite que qqch ne va pas dans ce plugin. En outre, au moment de l'activation on peut faire ces contrôles une fois pour toutes, à quoi ça sert de le faire à chaque fois ?
Sur l'usage des tags, je pense que ce serait une erreur que de générer automatiquement les zip à partir des branches.
L'acte de publication d'une archive doit rester un acte volontaire et conscient (sauf si on parle d'un zip de dev réputé instable).
Il faut pouvoir faire évoluer une branche sans que le zip ne varie, sauf à se retrouver avec des zip temporairement non fonctionnels.
Les tags ont le mérite de figer la version à un moment choisi par les développeurs.
Ce que je prétend, et c'est assez général dans SPIP, c'est qu'il y a redondance de fonctionnalités qui pertubent tout le monde, surtout les nouveaux venus. Dans le répertoire d'un plugin on peut créer des branches et spécifier dans le fichier XML l'état du plugin, de "dev" à "stable", et comme tout le monde a accès en écriture au fichier archivelist, on peut demander qu'une branche soit zippée. Dès lors, la branche générale des archives ne sert à rien: au moment où l'auteur d'un plugin modifie son numéro de version x.y.z si, il décide d'en faire ou non une branche, et qu'elle soit zippée ou non. Gérer d'une part le répértoire de son plugin, d'autre part le répertoire des tags est une complication inutile, coûteuse et perturbante. Par ailleurs comme SVN archive les anciennes versions d'un fichier, l'argument qu'il ne faut pas que le zip varie est irrecevable: si une variation N+1 introduit une régression, il est toujours possible de récupérer l'ancienne version des fichiers et de récréer un zip étiquetté N+2 et identique à N, ça n'a rien de gênant et le cas est rare.
Note qu'il y a en fait 2 questions distincites, l'existence d'une branche générale des archives est-elle souhaitable, et le fichier archivelist doit-il être produit manuellement et collectivement ? Pour moi les 2 réponses sont non, mais elles sont indépendantes.
Sur la terminologie, mathieu souligne involontairement en énumérant, le seul petit flou que je vois dans ta proposition :
Sur ce point ce n'est pas ma proposition mais le reflet de l'état actuel de SPIP.
le terme activation correspond à une unique étape utilisateur, mais à 2 étapes techniques : l'activation donc, et la création du schema/maj
Je pense qu'il serait bien de nommer cette seconde partie, car même si elle est invisible pour les utilisateurs, elle a une existence,
et le fait qu'on soit obligé de périphraser pour la désigner n'est pas génial
Oui cette 2e étape est véritablement l'initialisation du plugin, et devrait être nommée ainsi, en précisant que activation ==> initialisation si pas déjà faite. Mais pour moi le pb n'est pas tant terminologique que logiciel:
comme je le dis dans l'article, cette initialisation se fait lorsqu'on visite une page produite par un exec/
qui normalement ne fait pas d'accès en écriture, seulement de l'affichage. C'est surtout cette entorse au modèle REST qu'il faudrait éliminer. Quant on aura un bon modèle fonctionnel, la terminologie suivra.
J'avais eu le tort de choisir 'installation', alors que ce terme désigne en général l'ensemble du processus, depuis le dépôt des fichiers, jusqu'à la mise en service.
Peut être devrait-on complètement évacuer ce terme, et ne le garder que dans son sens englobant général.
Il faut un mot désignant l'opération de copie des sources d'un plugin dans un répertoire connu de SPIP pour avoir des plugins. Actuellement c'est "installation" qui est pris, on peut prendre autre chose par exemple "chargement" (cf spip_loader), mais maintenant que l'habitude est prise, je suis pas sûr que ça éclaricirait vraiment la situation.
Le build_while n'était pas simplement utilisable en version 2.1 du fait de l'obligation d'utiliser une numérotation de version entière,
et de la gestion de redirection au bout de 20s qui renvoie actuellement sur une url non fonctionnelle dans le contexte de la page des plugins.
Cela dit, sur la branche dev, il a évolué pour prendre en compte les numéros de version x.y.z, et prend en compte la gestion de timeout, avec un point d'entrée
maj_plugin symétrique du maj_base utilisé par le core.
J'avais signalé dans ce code que j'avais écrit rapidement pour la sortie de la 2.1 que ça restait "à tester", n'ayant eu le temps de le faire que pour des petits cas sans Time-out. Tant mieux si tu as arrangé ça. Il était en revanche "simplement utilisable" pour des numéros de version entiers dont je répète que c'est une discipline qui contraint faiblement le présent pour éviter de gros ennuis futurs.
Cela simplifie bien de se reposer sur cette fonction, et je suis d'accord que l'interface technique pour le plugin pourrait se limiter a la déclaration du tableau d'operation de maj.
Bon très bien si on est d'accord pour partir là-dessus, mais tout le monde doit se rendre compte qu'il y a des incompatibilités fortes du coup, surmontables sans difficulté mais comme toujours qui demandent du temps.
Committo,Ergo:Sum