[spip-dev] Noyau & plugins

[je passe sur spip-dev, ça dépasse spip-commit]

Moi je ne fais pas un spip sans bonux, alors que ce soit dans l'un ou l'autre je m'en fiche un peu.

Autrement dit tu te fiches de la cohérence du noyau; c'est tout de même un pb.

L'expérience montre que les fonctions automagiques qui essayent de faire plein de choses à la fois sont des fonctions compliquées, sources de bugs et d'effort de maintenance.

Si on parle d'expérience il faut justement se demander d'où sort ce bout de code.
Svn praise l'indique:
http://trac.rezo.net/trac/spip/changeset/11750
et le log dit que c'est probablement à cause de tout_paragrapher qu'il a fallu rajouter ce bout de code à une fonction qui était pratiquement identique à ton filtre lien_ou_expose au départ, mais dont tu vois qu'il n'est pas à l'abri d'une semblable mésaventure. Alors qui est-ce qui nie l'expérience ici ?

Puisqu'on parle des rapports entre noyau et plugin, il y a un autre point que je voulais aborder.
Une des fonctionnalités du plugin Association utilise le plugin Agenda. Je me souviens que tu as déploré sur spip-blog que personne n'y contribue, bonne nouvelle j'ai commencé à me pencher dessus.
L'un des messages sur cet article de spip-blog ici:
http://www.spip-blog.net/Contribuez-la-communaute-vous-le.html#forum2706
dit que rentrer dans le code c'est vraiment difficile.
J'ai donc été surpris de voir la nouvelle version d'Agenda requiert spip-bonux,
ce qui gêne encore plus la compréhension du code, et pour quel gain ?
Me semble-t-il, c'est seulement pour:

1. aoustrong, mais c'est un synonyme de lien_ou_expose qui est donc dans le noyau depuis un moment;

2. singulier_ou_pluriel, lui aussi dans le noyau maintenant;

3. verifier_corriger_date_saisie, 1 occurrence pour compat d'avant usage spip-bonux, et 2 occurrences dans une fonction présente dans action/editer_evenement.php mais utilisée dans un autre fichier (pourquoi brouiller les pistes à plaisir ?), tout ce code n'étant pas très éloignée de ce qu'on trouve dans ecrire/inc/agenda et ecrire/action/editer_message.

4. picker_selected, qui sert ici à associer un article à un événement, ce qui ne devrait pas être une obligation comme le demande d'ailleurs qq dans le forum associé à ce plugin dans SPIP-Contrib (qui est bourré de rapports de bug et de suggestions, mais tu sembles avoir délaissé ce plugin et son forum depuis 2 mois au moins.

Il faudrait aussi parler du code des fonctions inc/agenda_filtres qui forkent celui d'agenda_memo & Co, sans un commentaire expliquant pourquoi les originaux ne pouvaient pas être adaptés au besoin du plugin (mais sur ce point il semble que ce soit James qui soit à même de répondre).

Bref, l'arrivée des plugins était censée permettre la découpe sur mesure d'un SPIP personnalisé minimal pour chaque site, mais au final on se retrouve à devoir charger des usines à gaz doublonnant à 90% ce qu'il y dans le noyau. Cette méthode de développemet n'est pas raisonnable.

Committo,Ergo:Sum

[je passe sur spip-dev, ça dépasse spip-commit]

Moi je ne fais pas un spip sans bonux, alors que ce soit dans l'un ou l'autre je m'en fiche un peu.

Autrement dit tu te fiches de la cohérence du noyau; c'est tout de même un pb.

Non, mais j'ai compris depuis un moment que cette notion de cohérence et de périmètre du noyau est très variable selon qui l'aborde et je préfère consacrer mon énergie à autre chose que d'essayer de convaincre vainement qu'un certains nombres d'outils, filtres et balises sont plus que très utiles pour développer des squelettes et sites avec SPIP (même si on peut toujours faire sans ; d'ailleurs on peut aussi faire sans SPIP ...).

Donc j'utilise SPIP+bonux et je n'envisage même plus de raisonner sur SPIP seul.
Je ne crois pas être le seul à raisonner ainsi.

L'expérience montre que les fonctions automagiques qui essayent de faire plein de choses à la fois sont des fonctions compliquées, sources de bugs et d'effort de maintenance.

Si on parle d'expérience il faut justement se demander d'où sort ce bout de code.
Svn praise l'indique:
http://trac.rezo.net/trac/spip/changeset/11750
et le log dit que c'est probablement à cause de tout_paragrapher qu'il a fallu rajouter ce bout de code à une fonction qui était pratiquement identique à ton filtre lien_ou_expose au départ, mais dont tu vois qu'il n'est pas à l'abri d'une semblable mésaventure. Alors qui est-ce qui nie l'expérience ici ?

Ben justement, ce patch est mauvais. C'est à l'appelant d'appliquer |textebrut ou |PtoBR ou ce qu'il veut sur le contenu qu'il fournit comme titre du lien. Que ce soit dans les squelettes ou dans le php. C'est aussi beaucoup plus clair et lisible dans les squelette.

Puisqu'on parle des rapports entre noyau et plugin, il y a un autre point que je voulais aborder.
Une des fonctionnalités du plugin Association utilise le plugin Agenda. Je me souviens que tu as déploré sur spip-blog que personne n'y contribue,

que personne ne contribue à fournir des squelettes de présentation de l'agenda pour le public. De nombreux utilisateurs ont développés de tels squelettes pour leur site ou pour des squelettes génériques, mais personne ne s'est jamais donné la peine de mettre au propre et de rendre génériques de tels squelettes.

bonne nouvelle j'ai commencé à me pencher dessus.
L'un des messages sur cet article de spip-blog ici:
http://www.spip-blog.net/Contribuez-la-communaute-vous-le.html#forum2706
dit que rentrer dans le code c'est vraiment difficile.

J'ai donc été surpris de voir la nouvelle version d'Agenda requiert spip-bonux,

comme tous les plugins que je développe, cf plus haut.

ce qui gêne encore plus la compréhension du code, et pour quel gain ?

Mise en commun des outils...

Me semble-t-il, c'est seulement pour:

1. aoustrong, mais c'est un synonyme de lien_ou_expose qui est donc dans le noyau depuis un moment;

c'est l'ancêtre justement. Le plugin agenda a été l'occasion du dev de ce filtre, repris ensuite dans bonux, puis intégré dans le core sous un nom plus clair.

2. singulier_ou_pluriel, lui aussi dans le noyau maintenant;

idem, même histoire.

3. verifier_corriger_date_saisie, 1 occurrence pour compat d'avant usage spip-bonux, et 2 occurrences dans une fonction présente dans action/editer_evenement.php mais utilisée dans un autre fichier (pourquoi brouiller les pistes à plaisir ?), tout ce code n'étant pas très éloignée de ce qu'on trouve dans ecrire/inc/agenda et ecrire/action/editer_message.

c'est une fonction qui était à l'origine dans le plugin agenda, et qui a été déplacée dans bonux car utile à d'autres.

4. picker_selected, qui sert ici à associer un article à un événement, ce qui ne devrait pas être une obligation

c'est un avis. Mais le plugin agenda a pris le parti qu'un événement est obligatoirement associé à un article. La question s'est posée il y a 4 ans au début du développement du plugin et a été discutée collectivement :
- doit on faire d'un événement un objet éditorial autonome (avec ses auteurs, son statut de publication, et très rapidement son contenu éditorial),
- ou doit on choisir qu'un événement est un outil de datage des articles, et est obligatoirement associé à un article. Il peut alors avoir un contenu éditorial minimum, strictement lié à cette info de datage, et se passer d'auteur et de statut.

C'est ce dernier qui a été choisi. Rendre 'non obligatoire' l'association à un article poserait tout un tas de problème de gestion de la publication, et c'est quelque chose que je refuse de faire dans ce plugin.

comme le demande d'ailleurs qq dans le forum associé à ce plugin dans SPIP-Contrib

Que des utilisateurs demandent à pouvoir faire cela, c'est la nature des choses. Comme certains demandent à pouvoir mettre des brèves dans une sous rubrique, ou d'autres à pouvoir faire des boucles sur des tableau...

(qui est bourré de rapports de bug et de suggestions,

L'essentiel des rapports de bugs portent sur l'utilisation du calendrier-mini qui est pas simple à utiliser.

mais tu sembles avoir délaissé ce plugin et son forum depuis 2 mois au moins.

Répondre quotidiennement aux forums de 79 contributions est un boulot à plein temps que j'aimerais bien pouvoir faire. Mais comme il faut aussi remplir le frigo, il m'arrive d'être moins réactif par moment, j'avoue.
Cela dit, rassures toi, je vois bien passer et je lis tous les messages de forums tous les jours, et je réagis en général quand un bug est bloquant. Mais quand il s'agit du 250° message pour expliquer que le clic sur le calendrier mini ça va pas, je laisse les utilisateurs s'entre-aider, en effet.

Il faudrait aussi parler du code des fonctions inc/agenda_filtres qui forkent celui d'agenda_memo & Co, sans un commentaire expliquant pourquoi les originaux ne pouvaient pas être adaptés au besoin du plugin (mais sur ce point il semble que ce soit James qui soit à même de répondre).

Bref, l'arrivée des plugins était censée permettre la découpe sur mesure d'un SPIP personnalisé minimal pour chaque site, mais au final on se retrouve à devoir charger des usines à gaz doublonnant à 90%

Intégrons ce plugin dans le core alors, puisque 90% du code y est déjà...

ce qu'il y dans le noyau. Cette méthode de développemet n'est pas raisonnable.

Ah ben oui hein. C'est pas en s'opposant à l'intégration dans le core de fonctions dont *tu* n'as pas besoin que ça fait disparaitre le besoin des gens.
Donc on s'organise pour le satisfaire autrement. Et en pratique ça se traduit par un plugin bonux qui devient un spip++ et que à peu près tout le monde utilise.

Il est tout de même paradoxal que tu commences ce mail en ergotant sur la réelle utilité d'avoir intégré un filtre dans le core, et que tu le finisses en t'indignant qu'on fait plein de choses dans les plugins qui pourraient être fusionnées dans le core ...

Cédric

Ce fil a commencé parce que TU as ergorté sur une FUSION: mon log commit ne niait pas l'utilité de ce filtre (j'aurais pu carrément faire un revert), au contaire il l'a rendu encore plus légitime. Ta réaction sur ce commit comme celle sur mes modifs sur CVT laissent plutôt penser que tu refuses un travail véritablement collaboratif sur le code: tu veux bien des discussions préalables, mais si à ce moment-là on était soi-même en train de "remplir le frigo" comme tu dis, c'est trop tard, ton code a été sacralisé. Et tu ressors toujours l'argument de la taille de ton fan-club sans répondre à mes objections de fond: en enflant perpétuellement la taille du code, on grève les performances et on décourage les nouveaux arrivants qui veulent essayer de comprendre comment SPIP marche. Mais évidemment eux on ne les entend pas: ils repartent sans rien dire.

Maitenant, sur les aspects techniques:

1. Le bout de code que j'avais introduit date donc de
http://trac.rezo.net/trac/spip/changeset/11750
qui disait que ce n'était pas clair.
Si effectivement ton idée de PtoBR (textbrut certainement pas) solutionne mieux le pb,
allons-y, mais ce serait infiniment plus utile de l'implémenter pour le vérifier plutôt que perdre son temps avec ce genre de mails.

2. pour le plugin Agenda, la première chose à remarquer est qu'il est dans le répertoire _plugins_/agenda/2_0_0 mais depuis
http://zone.spip.org/trac/spip-zone/changeset/38439
il y a 3 mois, le fichier plugin.xml indique une version 2.1
à l'occasion du "bandeau 2.2" dit le log.
Alors moi qui veut contribuer je ne comprends rien: est-ce que ça veut dire que depuis 3 mois ce plugin ne marchera qu'avec SPIP 2.2 qui n'est pas encore sortie ? Ca n'aurait pas été mieux de faire un svn copy en disant que la version 2.1 de ce plugin nécessite SPIP 2.1 (en particulier les fonctions de Bonux que tu y as mises) ?

Ce qui m'agace, c'est que tu fais pleins de choses intéressantes mais que tu décourages tout développement collaboratif d'une part à cause de tes réactions épidermiques quand on veut partager du code avec le tien, ensuite parce que ton usage des numéros de versions est incohérent aussi bien dans le noyau que dans les plugins.

Committo,Ergo:Sum

Il est tout de même paradoxal que tu commences ce mail en ergotant sur la réelle utilité d'avoir intégré un filtre dans le core, et que tu le finisses en t'indignant qu'on fait plein de choses dans les plugins qui pourraient être fusionnées dans le core ...

Ce fil a commencé parce que TU as ergorté sur une FUSION: mon log commit ne niait pas l'utilité de ce filtre (j'aurais pu carrément faire un revert), au contaire il l'a rendu encore plus légitime. Ta réaction sur ce commit comme celle sur mes modifs sur CVT laissent plutôt penser que tu refuses un travail véritablement collaboratif sur le code: tu veux bien des discussions préalables, mais si à ce moment-là on était soi-même en train de "remplir le frigo" comme tu dis, c'est trop tard, ton code a été sacralisé.

J'apporte une attention particulière sur les modifs du code que je sais utilisé dans les plugins, oui, pour éviter de me retrouver à patcher pléthore de contributions. Et aussi parce que je sais que dès qu'on touche à du code existant, on introduit inévitablement et statistiquement des bugs (cf l'histoire de CVT notamment, qui nous vaut d'avoir releasé une version 2.1.1 bugguée pour zéro apport fonctionnel dans la version), et que je préfère les voir au plus vite que de les découvrir 6 mois après.

Cela dit, note qu'en introduisant mes propositions dans des plugins, cela permet de les tester, confronter, éprouver à la réalité, et de vérifier leur réelle utilité avant de les passer dans le core. Cela me parait plus constructif et collaboratif que de balancer direct une fonction dans le core sur la seule foi de ma façon de voir. Il y a de nombreuses choses qui passent ainsi à la trappe parce que ça ne s'avérait pas une si bonne idée que cela. Et ça évite de devoir trainer ensuite le poids de ce code pour rien.

Pour en revenir à la technique et au filtre lien_ou_expose, je ne demande qu'a garder une spec simple et claire pour ce filtre, et a laisser le truc qui modifie le balisage dans la fonction utilisée par l'agenda du core. Ça n'a pas de conséquence en terme de taille du code ou de complexité, mais ça en a en simplicité du filtre et sur son comportement prévisible.

Et tu ressors toujours l'argument de la taille de ton fan-club sans répondre à mes objections de fond: en enflant perpétuellement la taille du code, on grève les performances et on décourage les nouveaux arrivants qui veulent essayer de comprendre comment SPIP marche.

Qu'est ce qui va être plus performant, lisible et maintenable comme écriture dans un squelette entre :

[(#ENV{id_rubrique}|=={23}|oui)<strong class='on'>][(#ENV{id_rubrique}]=={23}|non)<a href='#URL_RUBRIQUE{23}'>
]Titre de mon lien[(#ENV{id_rubrique}]=={23}|oui)</strong>][(#ENV{id_rubrique}]=={23}|non)</a>]

(ou ses multiples variantes que j'ai a peu près toutes essayées)

et
[(#URL_RUBRIQUE{23}|lien_ou_expose{Titre de mon lien,#ENV{id_rubrique}|=={23}})]

en particulier quand le même type de code est répété à l'envie N fois pour construire une navigation claire et fonctionnelle, et lorsque le test est dix fois plus compliqué ?

Mais évidemment eux on ne les entend pas: ils repartent sans rien dire.

Ah, c'est particulièrement savoureux d'entendre cela :slight_smile:
Pour arriver jusqu'au code, il faudrait déjà que les débutants n'aient pas été rebutés bien avant ...

Maitenant, sur les aspects techniques:

1. Le bout de code que j'avais introduit date donc de
http://trac.rezo.net/trac/spip/changeset/11750
qui disait que ce n'était pas clair.
Si effectivement ton idée de PtoBR (textbrut certainement pas) solutionne mieux le pb,
allons-y, mais ce serait infiniment plus utile de l'implémenter pour le vérifier plutôt que perdre son temps avec ce genre de mails.

2. pour le plugin Agenda, la première chose à remarquer est qu'il est dans le répertoire _plugins_/agenda/2_0_0 mais depuis
Connexion · GitLab
il y a 3 mois, le fichier plugin.xml indique une version 2.1

Le plugin est en version 2.1.4 :
<version>2.1.4</version>

et fonctionne avec SPIP >=2.0.3
<necessite id='SPIP' version='[2.0.3;]' />

à l'occasion du "bandeau 2.2" dit le log.
Alors moi qui veut contribuer je ne comprends rien: est-ce que ça veut dire que depuis 3 mois ce plugin ne marchera qu'avec SPIP 2.2 qui n'est pas encore sortie ? Ca n'aurait pas été mieux de faire un svn copy en disant que la version 2.1 de ce plugin nécessite SPIP 2.1 (en particulier les fonctions de Bonux que tu y as mises) ?

Ce qui m'agace, c'est que tu fais pleins de choses intéressantes mais que tu décourages tout développement collaboratif d'une part à cause de tes réactions épidermiques quand on veut partager du code avec le tien, ensuite parce que ton usage des numéros de versions est incohérent aussi bien dans le noyau que dans les plugins.

je ne vois pas d'incohérence.
Chaque plugin a son cycle de vie et sa numérotation de version, indépendamment de celles de SPIP.

Cédric

Ah d’ailleurs, ce patch est d’autant plus mauvais qu’il préjuge à la place du webmestre de ce qui est bien ou pas.
Or mettre un

dans un n’est mal que parce que tu veux respecter le xhtml1.x strict dans l’espace privé.
C’est quelque chose de tout à fait licite dans html5
http://html5doctor.com/block-level-links-in-html-5/

Qui plus est, si le webmestre veut faire un lien valide autour de


il va se retrouver avec une soupe aberrante

Comment défendre un tel comportement ?

Cédric

dont acte :
http://trac.rezo.net/trac/spip/changeset/15939
il manquait aussi des attribut_html() si on veut être sur de produire du code xhtml strict valide…

et j’ai donc évacué la regexp de la discorde qui n’a plus d’utilité et se trouve même être contre-productive en html5 comme exposé plus avant :
http://trac.rezo.net/trac/spip/changeset/15940

Cédric

A la bonne heure, enfin le retour du vrai travail collaboratif dans le noyau; je suis sûr que certains spipeurs y verront le résultat des cierges allumés en ce jour de l'Assomption.

Cela dit je trouve assez fou que dans tout cet échange il n'y ait que la réparation de la profanation de ton saint code qui ait retenu ton attention, puisque tu as répondu systématiquement à côté des questions de fond de mon dernier mail, infiniments plus importantes que cette fonction http_href dont "je me fiche un peu".

En particulier, puisque je n'ai pas eu la réponse à la question de savoir pourquoi on trouve sur Zip-Spip un plugin nommé Agenda_2_0 qui, au déballage, apparaît être Agenda_2_1, je conclus à une erreur et je vais créer la branche Agenda_2_1 en remettant 2.0 dans le plugin.xml de l'original. Je vais essayer de faire en sorte que cet Agenda_2_1 n'ait pas besoin de Bonux, parce que tu ne me feras jamais croire que rajouter ces 500Ko au noyau de SPIP va dans le sens de ce qui était souhaité avec la mise en plugins.

Committo,Ergo:Sum

En particulier, puisque je n'ai pas eu la réponse à la question de savoir pourquoi on trouve sur Zip-Spip un plugin nommé Agenda_2_0 qui, au déballage, apparaît être Agenda_2_1, je conclus à une erreur et je vais créer la branche Agenda_2_1 en remettant 2.0 dans le plugin.xml de l'original.

Non mais je crois qu'on s'est pas bien compris.
J'ai le droit de numéroter les versions de plugin indépendamment de SPIP
Si j'ai passé le plugin en version 2.1 c'est parce qu'il y avait des évolutions qui le justifiaient, qui n'etaient pas mineures pour le plugin.

Ça n'a rien a voir avec la version de SPIP, et le plugin peut très bien passer en version 3.0 alors que SPIP sera toujours en 2.1.

Les numéros de versions des plugins sont liées aux fonctionnalités des-dits plugins, un point c'est tout.
Donc le plugin Agenda dans sa version 2.1 fonctionne avec SPIP>=2.0.3

Tu fais comme tu veux dans tes développements, mais merci de respecter la façon de faire des autres, et en l'occurence je ne suis pas d'accord avec une renumérotation sauvage des versions du plugin qui n'a aucun sens, ni aucune légitimité.

Je vais essayer de faire en sorte que cet Agenda_2_1 n'ait pas besoin de Bonux, parce que tu ne me feras jamais croire que rajouter ces 500Ko au noyau de SPIP va dans le sens de ce qui était souhaité avec la mise en plugins.

Si c'est juste pour le plaisir d'enlever bonux, tu fais bien comme tu veux, mais dans un fork.
Cédric

En particulier, puisque je n'ai pas eu la réponse à la question de savoir pourquoi on trouve sur Zip-Spip un plugin nommé Agenda_2_0 qui, au déballage, apparaît être Agenda_2_1, je conclus à une erreur et je vais créer la branche Agenda_2_1 en remettant 2.0 dans le plugin.xml de l'original.

Non mais je crois qu'on s'est pas bien compris.
J'ai le droit de numéroter les versions de plugin indépendamment de SPIP

En effet on ne se comprend pas: ma remarque principale était qu'il est anormal qu'un plugin nommé Agenda_2_0_0 indique 2.1.x dans son plugin.xml. Mais de nouveau tu réponds â côté même quand je laisse tomber les remarques supplémentaires que le log en rajoutait dans la confusion potentielle pour un nouveau venu, sachant que pour ma part le rapport avec la version de SPIP n'avait rien à voir. Je suis plus au fait du fonctionnement des plugins que je ne laisse paraître.

Si c'est juste pour le plaisir d'enlever bonux, tu fais bien comme tu veux, mais dans un fork.

C'est que je viens de faire, sauf que ce n'est pas par plaisir mais par nécessité.

Committo,Ergo:Sum

Hello,

Non mais je crois qu’on s’est pas bien compris.

J’ai le droit de numéroter les versions de plugin indépendamment de SPIP

Je fais une petite digression pour reprendre au bond le problème des numéros de version.
Je crois que là vous êtes en train de disputer d’une toute petite partie de la problématique du plugin.xml.

Depuis que j’ai entamé la réalisation de SVP, je me suis rendu compte que nombre d’informations du plugin.xml sont erronées, mal utilisées, non comprises, voire inexploitables.

Des plugins avec des versions identiques en changeant de branche, des archives identiques, des versions SPIP qui ne définissent jamais la borne max alors que le plugin est inexploitable depuis la version 2.0 de SPIP…

J’ai proposé de réfléchir sur ce sujet et d’agir, j’attends donc impatiemment vos remarques… :stuck_out_tongue:

* Committo,Ergo:sum tapuscrivait, le 15/08/2010 18:30:

En effet on ne se comprend pas: ma remarque principale était qu'il est anormal qu'un plugin nommé Agenda_2_0_0 indique 2.1.x dans son plugin.xml. Mais de nouveau tu réponds â côté même quand je laisse tomber les remarques supplémentaires que le log en rajoutait dans la confusion potentielle pour un nouveau venu, sachant que pour ma part le rapport avec la version de SPIP n'avait rien à voir. Je suis plus au fait du fonctionnement des plugins que je ne laisse paraître.

Ben justement :
- Agenda_2_0_0 Désignerait la version de SPIP visée (précisée ensuite par le necessite)
- 2.1.x désigne la version d'avancement du plugin, indépendamment de SPIP

Merci Eric pour cette intervention qui n'est nullement une digression mais bien au coeur du sujet, en tout cas de mon point de vue: l'organisation du code et ses méta-informations découragent la participation des nouveaux venus. Commencer par fiabliser l'utilisation de plugin.xml est un très bon début.

QQ remarques sur ce que je viens de lire sur sur http://spip21.smellup.net

Pour la question de l'annuaire des auteurs, Ohloh en fait un, il devrait y avoir moyen de récupérer ses infos avec son API de programmation.

Changer la syntaxe de plugin.xml paraît effectivement illusoire aujourd'hui, en revanche on peut très bien imaginer que la production du paquet s'accompagne d'une normalisation du plugin.xml qu'il contient par le script de paquetage. Par exemple, la balise auteur d'origine pourrait assez facilement être éliminée et remplacée par une production automatique à partir de l'annuaire des auteurs dont on parle ci-dessus.

La question de la branche est importante, c'était justement un des sujets de ce fil et typiquement je crois qu'ici le paquet agenda_2_0_0.zip aurait dû être rejeté puisque son plugin.xml contenait 2.1.x,
ça me parait être faisable facilement. Mais les derniers mails de Cédric et Realet montrent à quel point il y a de la confusion potentielle dans ces chiffres.

Il faudrait déjà compléter les docs sur ce fichier. Je cherche en vain des informations sur les conséquences de l'utilisation de la balise "utilise", j'ai péniblement trouvé un bout d'info dans le livre de Mathieu:
http://programmer.spip.org/Gestion-des-dependances
mais c'est assez sybillin. Il ne faut donc pas s'étonner si ce fichier est souvent "inexpoitable".

Committo,Ergo:Sum

Ciao

Il faudrait déjà compléter les docs sur ce fichier. Je cherche en vain des informations sur les conséquences de l'utilisation de la balise "utilise", j'ai péniblement trouvé un bout d'info dans le livre de Mathieu:
http://programmer.spip.org/Gestion-des-dependances
mais c'est assez sybillin. Il ne faut donc pas s'étonner si ce fichier est souvent "inexpoitable".

Tu oublies http://doc.spip.org/@plugin-xml#utilise

Km

Ciao

Il faudrait déjà compléter les docs sur ce fichier. Je cherche en vain des informations sur les conséquences de l'utilisation de la balise "utilise", j'ai péniblement trouvé un bout d'info dans le livre de Mathieu:
http://programmer.spip.org/Gestion-des-dependances
mais c'est assez sybillin. Il ne faut donc pas s'étonner si ce fichier est souvent "inexpoitable".

Tu oublies http://doc.spip.org/@plugin-xml#utilise

Ben c'est surtout les moteurs de recherche qui l'ont oublié, y compris celui de doc.spip.org lui-même, il fallait donc deviner cette URL, encore un truc que les nouveaux venus apprécieront. Le texte qu'on y trouve ne dit pas plus que le livre de Mathieu mais a le mérite de renvoyer sur le dépot qui l'a introduit, savoir:
http://trac.rezo.net/trac/spip/changeset/11964

Le log semble dire que le seul effet de cette balise réside là-dedans:

lorsqu'un plugin A utilise/necessite un plugin B :
- il passe avant dans le path, pour pouvoir surcharger B
- il passe apres dans les pipelines pour pouvoir modifier le resultat de B

alors maintenant question: si j'ai n plugins P1 .... Pn avec Pi utilisant Pi+1 et Pn utilisant P1 il se passe quoi ?

Un joli cas pour SVP, Eric.

Merci Camille.

Committo,Ergo:Sum

c'est un cas non soluble de dépendance qui produit consécutivement la non activation de P1 à Pn.
Mais si la théorie nous propose une solution meilleure ...

Cédric

Ma question était de savoir si c'était prévu et signalé, évidemment.

Committo,Ergo:Sum

c'est prévu dans la construction du graphe de dépendance, oui.
Les cas de non activation pour cause de dépendance non satisfaite sont signalés d'une erreur.

Cédric

Il faudrait déjà compléter les docs sur ce fichier. Je cherche en vain des informations sur les conséquences de l'utilisation de la balise "utilise", j'ai péniblement trouvé un bout d'info dans le livre de Mathieu:
http://programmer.spip.org/Gestion-des-dependances
mais c'est assez sybillin. Il ne faut donc pas s'étonner si ce fichier est souvent "inexpoitable".

Tu oublies http://doc.spip.org/@plugin-xml#utilise

Je reviens là-dessus parce que du coup j'ai eu l'idée de regarder aussi:
http://doc.spip.org/@plugin-xml#chemin
ici la doc dit qu'il faut écrire qqch qui n'est pas du XML:

C’est la régle :<chemin="./"> :

..

  • <chemin="./">, necessaire pour rendre la racine du plugin accessible

  • <chemin="./prive" type="prive">

J'ai donc écrit ça. SPIP ne me prévient pas que le fichier plugin.xml est incorrect, et ignore la déclaration recommandée par la doc sans prévenir.

J'ai fait un var_dump sur le résultat retourné par spip_xml_load, il contient le message d'erreur mais il est ignoré. Regardant alors cette fonction, j'ai été sidéré de voir qu'il ne s'agit pas d'un simple appel à SAX qui aurait signalé cette erreur automatiquement, mais d'un bricolage de RegExp dispendieux et fatalement insuffisant (si SAX existe, il y a une raison). Pourquoi développer une implémentation vouée à l'échec ?

En regardant le plugin.xml de qq plugins j'ai vu que la bonne syntaxe est:

<chemin dir='' />

c'est écrit où dans la doc ?

Committo,Ergo:Sum

Pourquoi développer une implémentation vouée à l'échec ?

Oui, pourquoi ?

-- Fil

Cédric

Il faudrait déjà compléter les docs sur ce fichier. Je cherche en vain des informations sur les conséquences de l'utilisation de la balise "utilise", j'ai péniblement trouvé un bout d'info dans le livre de Mathieu:
http://programmer.spip.org/Gestion-des-dependances
mais c'est assez sybillin. Il ne faut donc pas s'étonner si ce fichier est souvent "inexpoitable".

Tu oublies http://doc.spip.org/@plugin-xml#utilise

Je reviens là-dessus parce que du coup j'ai eu l'idée de regarder aussi:
http://doc.spip.org/@plugin-xml#chemin
ici la doc dit qu'il faut écrire qqch qui n'est pas du XML:

C’est la régle :<chemin="./"> :

..

   • <chemin="./">, necessaire pour rendre la racine du plugin accessible

   • <chemin="./prive" type="prive">

J'ai donc écrit ça. SPIP ne me prévient pas que le fichier plugin.xml est incorrect, et ignore la déclaration recommandée par la doc sans prévenir.

J'ai fait un var_dump sur le résultat retourné par spip_xml_load, il contient le message d'erreur mais il est ignoré. Regardant alors cette fonction, j'ai été sidéré de voir qu'il ne s'agit pas d'un simple appel à SAX qui aurait signalé cette erreur automatiquement, mais d'un bricolage de RegExp dispendieux

Je n'avais pas conscience que SAX était un outil léger. C'est un a priori ou tu as fait un bench ?

et fatalement insuffisant (si SAX existe, il y a une raison).

Le parsage est réalise en mode tolérant pour accepter l'écriture de balises <> non echapees dans le descriptif des plugins.
On peut activer le mode strict si on préfère exiger un niveau de prestation plus élevés des contributeurs.

Pourquoi développer une implémentation vouée à l'échec ?

Vaste question.

En regardant le plugin.xml de qq plugins j'ai vu que la bonne syntaxe est:

<chemin dir='' />

c'est écrit où dans la doc .

Cette déclaration est sans effet puisque cela correspond a la valeur par défaut. Elle n'a d'utilité que pour déclarer d'autres dossier dans le path.