[spip-dev] Quelques doutes sur les priorités entre plugins

Yo,

Je viens d'envoyer sur la zone un plugin zpip_html5, qui est une
tentative de surcharge des squelettes de zpip-dist en version HTML5.

Je voudrais m'assurer que :
1. zpip_html5 surcharge bien Z
2. les thèmes éventuels des gens surchargent zpip_html5

Le premier point est facile: zpip_html5 <necessite id="Z">.

Pour le second en revanche, j'ai l'impression que rien ne le garantit,
autrement dit rien ne semble garantir que ce ne sera pas zpip_html5 qui
surchargera les thèmes... En effet, les thèmes n'utilisent/nécessitent
pas zpip_html5 (et n'ont aucune raison de le faire). Quant à mettre
dans zpip_html5 un <utilise id="theme">, ça clarifierait la situation
mais avec l'effet contraire à l'effet voulu.

Dans ce cas précis, il existe bien une différence entre un thème et
zpip_html5 : le thème <utilise id="Z"> alors que zpip_html5 le
<necessite>. Je ne pense pas que ça rende les thèmes prioritaires sur
zpip_html5, mais je me trompe peut-être.

Plus généralement, est-ce que des mécanismes ont déjà été envisagés
pour affiner la gestion de priorité entre plugins, au-delà de la
nécessité stricte imposée par l'arbre de dépendance ?
Une solution possible qui me vient en tête (mais il en existe sûrement
d'autres) est la manière dont le logiciel irssi (client IRC) gère une
problématique similaire : les plugins irssi peuvent déclarer qu'ils
interceptent un signal (événement, dans irssi) en premier, en dernier,
ou sans priorité particulière [1]. On pourrait imaginer un système
similaire dans plugin.xml, au moins pour la priorité voulue
(premier/normal/dernier) dans la recherche de chemins, et pourquoi pas
également pour chaque insertion dans un pipeline. (Bien sûr cette
priorité ne devrait s'appliquer qu'entre éléments situés à la même
hauteur dans l'arbre de dépendance, par exemple entre theme et
zpip_html5 dans mon exemple.)

Des avis ? Est-ce que la question s'est déjà posée ?

[1] Voir http://irssi.org/documentation/design :
There are three different signal_add() functions which you can use to
specify if you want to grab the signal first, "normally" or last.