J'ai enfin réussi à mettre au propre ce très modeste schéma que l'on a fait avec Charles lors de la formation Composer. Je pose ça là pour le moment, à copier ailleurs (Framavox, Contrib ou autre) quand il y aura un lieu unique et clair pour l'équipe qui veut réfléchir à Composer/Git.
Un peu d'explication :
Quand on parle "interface" pour Composer, il ne s'agit évidemment pas que d'ergonomie et de graphisme. Il s'agit aussi du mot "interface" en tant qu'une chose se trouve entre deux autres.
En effet, pour résumé, afin que des SPIP installés sur des hébergements basiques, ou sur des bons hébergements mais par des gens qui ne font pas en terminal, puissent utiliser la puissance des dépendances par Composer, alors il FAUT déléguer ce service à un serveur externe.
L'idée serait donc de développer un logiciel (libre), sans rapport avec SPIP, qui fournirait ce service sur "composer.spip.net". Pour l'instant il serait basique et tourné vers nos besoins prioritaires, mais ça peut intéresser potentiellement beaucoup de monde dans PHP, et d'autres personnes pourraient l'améliorer. Il se peut aussi que des gens aient déjà commencé des projets similaires (en libre !) : il faut regarder pour ne pas partir de zéro.
Quand les dépendances sont calculées, Composer génère un fichier "composer.lock" qui contient les liens vers les ZIP des bonnes versions de chaque modules. Avec ce fichier, nos SPIP sont capables comme maintenant de télécharger ces ZIP, et de les installer dans les bons dossiers.
Pour cela, /plugins (ou /plugins/auto) doit toujours être accessible en écriture, mais aussi /vendor pour toutes les libs qui ne sont pas propres à SPIP.
Il reste à résoudre le problème du "composer.lock" lui-même. En effet SPIP va en fournir un par défaut (contenant son noyau et les plugins-dist). Mais dès qu'on va ajouter des plugins et des libs tierces, ce fichier va changer ! Et donc il faut que SPIP soit capable d'écrire ce fichier et le modifier ! Cela dit, on n'est pas obligé de rendre la racine du SPIP en écriture pour ça : il suffit que CE fichier puisse être écrit, tout comme on demande à rendre dispo /IMG, /tmp etc.
À suivre !

