Re: [SPIPremix] Une distribution SPIP alternative

Matthieu Marcillaud <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
Le 03/07/2018 à 23:25, spipfactory a écrit :
> Bonsoir,
[...]
> Donc ne changer rien et ce qui est a la mode aujourd'hui passera demain.

Bon OK ;
On ne change rien ; ça on sait déjà bien faire :)

Les dernières versions du loader sont visiblement bien appréciées 
(auto-congratulons-nous). Je vous rappelle que son code est sur la zone 
si vous voulez qu’il crée les répertoires plugins/auto, lib, squelettes 
manquants…). Y a pas d’obstruction…

Ceci étant dit, deux points :


1) sur la mode.

Je pense que non, cela n’a rien d’une mode ! Désolé ; la communauté PHP 
a mis un temps fou à s’organiser pour trouver une solution acceptable et 
acceptée d’organisation des librairies partagées pour dire «tatata, 
c’est une mode» …

Tu n’as pas un seul nouveau projet qui se dirait : tiens nous on va 
faire du code pas objet, sans réutiliser de librairies packagées, sans 
utiliser Composer, sans suivre quelques suggestions PSR.

L’histoire personnelle de SPIP est comme cela, certes, mais faut-il 
continuer ?

Je vais tenter de faire une relation avec les plugins de SPIP. En tant 
qu’utilisateurices, on est content·e·s de voir des supers plugins naître 
ou évoluer.

Savez-vous que régulièrement, un plugin va utiliser, en sous-jacent, des 
librairies php existantes. Figurez-vous qu’actuellement on est 
profondément embêtés quand on veut utiliser une librairie récente de la 
communauté PHP : celle-ci déclare quelques fichiers à elle, et ses 
dépendances (à d’autres librairies), comme le feraient nos propres 
plugins. Du coup comment intègre t-on cette librairie dans notre plugin 
? on copiant la lib + toutes ses dépendances. Qui sont probablement les 
mêmes que les dépendances d’un autre plugin SPIP intégrant une autre 
librairie… On se retrouve avec possiblement plein de fichiers en 
doubles, de multiples autoloaders à éventuellement charger, du code 
dupliqué, des mises à jour compliquées.

Quelques exemples dans la zone :
- 
https://zone.spip.org/trac/spip-zone/browser/_plugins_/extraire_documents/trunk/lib
- 
https://zone.spip.org/trac/spip-zone/browser/_plugins_/geoip/trunk/lib/vendor
- https://zone.spip.org/trac/spip-zone/browser/_plugins_/http/trunk/vendor
- 
https://zone.spip.org/trac/spip-zone/browser/_plugins_/owncloud/trunk/lib/SabreDAV/vendor

On cherche aussi une solution à ce problème. (c’est ce que faisait la 
déclaration de librairie à télécharger dans nos paquets.xml, sauf que ça 
ne marche plus avec les libs récentes, c’est pour ça qu’on est obligé de 
les «inclure» dans un répertoire lib/ ou pas des plugins ; et c’est pas 
vraiment génial).


2) sur Composer vs Loader

Je vois difficilement comment concilier les deux.

On peut évidemment faire un loader qui chargerait un zip de SPIP (issu 
d’une installation composer). Mais ensuite ? L’intérêt de composer c’est 
qu’un plugin (spip) puisse dire dans son composer.json qu’il nécessite 
telle ou telle librairie PHP. Et installer ce plugin, via composer, 
installerait toutes les librairies manquantes dans le répertoire vendor/.

Et ça c’est difficilement compatible avec SVP (qui télécharge les 
plugins depuis une interface graphique) ou avec le Loader, qui si on 
fournit un zip de SPIP aurait déjà un répertoire "vendor" avec un 
certain contenu, un fichier composer.json racine différent, et ça 
pourrait écraser du coup nos modifications…

Il n’existe pas de méthode pour utiliser Composer depuis des interfaces 
graphiques (sans fichier composer.lock, le calcul des dépendances prend 
trop de mémoire entre autres choses) et ajouter un plugin nécessite 
forcément de recalculer ce fichier composer.lock)

Alors du coup ?

Faut-il abandonner l’idée ?
Faut-il poursuivre dans cette voie (avec les conséquences) ?
Faut-il faire une fourchette ? (ie: faut aller jouer ailleurs ?)

Chaleureusement,

MM.




_______________________________________________
liste: http://listes.rezo.net/mailman/listinfo/spip-dev
doc: http://www.spip.net/
dev: http://trac.rezo.net/trac/spip/
irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.