Nous souhaitons nous rapprocher du comportement de symfony pour sa gestion des requêtes HTTP, des réponses retournées, des configurations de conteneur, de gestion d’événements (équivalent à nos pipelines), système de routage (partiellement).
Dans un premier temps, on ne demande pas une revue particulière sur le code, mais surtout de pouvoir s’assurer que l’ensemble fonctionne a peu près correctement.
Pour se faire :
git clone -b plugin_config git@git.spip.net:spip/spip refactor
cd refactor
composer update
Démarrer votre server web dessus, vérifier l’installation de SPIP.
Tout le détail de la démarche, de toutes les PRs et des vérifications à effectuer :
Bonsoir,
Alors, déjà, un grand merci à vous pour ce chantier titanesque !
Je viens de cloner le dépôt, l’installation des dépendances se fait sans accroc, l’installation itou, et les quelques manipulations éditoriales de base que j’ai faites ne font remonter aucune erreur.
J’ai cependant noté que des boutons de soumission de formulaire de configuration manquaient : Configurer les URLs, quasiment tous les formulaire de Contenus du site, quelques manques aussi dans Fonctions avancées, dans Interactivité, et les deux configurations liées aux langues.
Quels autres aspects souhaiteriez-vous voir testés plus particulièrement ?
Grumph… Nope, aucune erreur dans la console…
Et dans tmp/log/spip.log, je ne vois que passer des 581 │ 2026-05-01 21:41:20 192.168.97.5 (pid 521) :Pub:!INFO: Serializer:unserialize utilisation de unserialize() sur des données legacy, mettez à jour vos données.
Aucun autre type de message.
Et donc, pour documenter la chose : l’adblock utilisé est AdGuard Adblocker avec pas mal de listes activées dont la Dandelion Sprout’s Annoyances List qui contient notamment la règle *,~[barter.vg](http://barter.vg)#?#p:contains(/^\xA0$/):not(:contains(/\S/)):not(:has(img)) qui n’apprécie pas trop le <span class="image_loading"> </span> dans le <p class="boutons">…
Pour info, on avance encore un peu, donc, une fois l’installation vérifiée, il faut penser à mettre à jour de temps en temps :
# cd refactor
git pull
composer update
Je ne sais pas trop ce que font les personnes qui testent les releases en dehors de la mise à jour elle-même, mais J’ai quelques idées qui me viennent en vrac :
L’ensemble fonctionne a peu près correctement
affichage de la page sommaire, plan, contact
logout, login
création de rubriques, d’articles, workflow de publication
édition d’articles, déplacement d’articles
cron (voir que la job queue s’exécute)
La page d’administration des plugins de SVP fonctionne
activation de dépôt, recherche de plugin, installation en fonction de la compat’
activation/désactivation/désinstallation
suppression de dépôt aussi, au cas où
mots-clés, médias, auteurs
créer du contenu de base (doc joints, group de mots, mots clé, auteurs)
associer, désassocier, supprimer
on a un bug connu sur mediabox, comme l’a expliqué @marcimat dans le ticket, donc, à voir
Pour l’instant, nous n’avons pas vraiment touché aux stats, aux dumps, aux urls, aux sites etc … ça viendra peut-être bientôt
Doc
Facultatif :
Pour celleux qui auraient du temps, nous avons poussé quelques markdowns.
Fort intéressant tout ça, hâte de voir sur quoi ça va déboucher.
J’avais justement commencé à m’intéresser et à faire mumuse avec les évènements de symfony pour compléter voir remplacer les pipelines. C’est donc maintenant entre de bonnes mains
Ça @pierretux c’est déjà un problème dans la version SPIP 5-dev sans nos travaux : c’est dû à une sécu appliquée plus sévèrement qui nécessite de reprendre le javascript associé à ces boutons. @placido est au courant, mais ceci dit on n’a peut être pas de tickets dessus.
Mais, cela semble dépendre du type de serveur web utilisé : un petit ddev config --webserver-type apache-fpm && ddev restart et le problème ne se présente plus…
Je poste donc ici la config Nginx utilisée par DDEV a priori :
# ddev php default (PHP project type) config
#ddev-generated
# If you want to take over this file and customize it, remove the line above
# and ddev will respect it and won't overwrite the file.
# See https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#custom-nginx-configuration
server {
listen 80 default_server;
listen 443 ssl default_server;
root /var/www/html;
ssl_certificate /etc/ssl/certs/master.crt;
ssl_certificate_key /etc/ssl/certs/master.key;
include /etc/nginx/monitoring.conf;
index index.php index.htm index.html;
# Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html
sendfile off;
error_log /dev/stdout info;
access_log /var/log/nginx/access.log;
location / {
absolute_redirect off;
try_files $uri $uri/ /index.php?$query_string;
}
location @rewrite {
# For D7 and above:
# Clean URLs are handled in drupal_environment_initialize().
rewrite ^ /index.php;
}
# pass the PHP scripts to FastCGI server listening on socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm.sock;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_intercept_errors off;
# fastcgi_read_timeout should match max_execution_time in php.ini
fastcgi_read_timeout 10m;
fastcgi_param SERVER_NAME $host;
fastcgi_param HTTPS $fcgi_https;
# Pass the X-Accel-* headers to facilitate testing.
fastcgi_pass_header "X-Accel-Buffering";
fastcgi_pass_header "X-Accel-Charset";
fastcgi_pass_header "X-Accel-Expires";
fastcgi_pass_header "X-Accel-Limit-Rate";
fastcgi_pass_header "X-Accel-Redirect";
}
# Prevent clients from accessing hidden files (starting with a dot)
# This is particularly important if you store .htpasswd files in the site hierarchy
# Access to `/.well-known/` is allowed.
# https://www.mnot.net/blog/2010/04/07/well-known
# https://tools.ietf.org/html/rfc5785
location ~* /\.(?!well-known\/) {
deny all;
}
# Prevent clients from accessing to backup/config/source files
location ~* (?:\.(?:bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$ {
deny all;
}
include /etc/nginx/common.d/*.conf;
include /mnt/ddev_config/nginx/*.conf;
}