Mini CR d’une rencontre en juillet 2023

Bonjour, polatouches resplendissants et écureuils débonnaires,

Face à une demande populaire dans le thread Migration de la zone vers un Gitlab, je prends le temps d’écrire un mini résumé (partiel et partial) de quelques jours où certaines personnes se sont retrouvées pour parler de SPIP ; Je ne sais plus combien nous étions, environs 10 ; toustes n’étaient pas là aux mêmes jours. Il y avait b_b, James & moi, et d’autres qui n’auront qu’à s’exprimer s’iels le souhaitent.

James voulait parler de Composer & d’architecture de code, b_b voulait parler de groupes de travail, et moi avancer sur SPIP 5 et ses réflexions.

Être plus serein sur les releases

En préambule, b_b et moi avions été très épuisés de la release de SPIP 4.2

  • on s’était sentis un peu seuls
  • des éléments ont été ajoutées aux derniers moments qui ont rendu les pre-releases instables

Et ça nous fatigue un rien car il y a de nombreux mois avant la release qui servent à apporter et consolider des améliorations, mais c’est très souvent la dernière semaine avant la date butoir que le monde se réveille insistant qu’il faut en profiter pour intégrer ceci ou cela en débarquant d’un coup, décalant de facto le calendrier prévu le temps de stabiliser.

Du temps pour le fonctionnel

L’autre constat, c’est que compte tenu des faibles forces en présence sur le maintien et actualisation du code SPIP d’une part, et l’envie (marcimat, James au moins) d’aller vers un code plus robuste d’autre part, il nous parait important de se concentrer sur des taches qui sont de l’ordre de l’évolution technique et fonctionnelle de SPIP, et non sur des taches de maintien d’outils spécifiques (de release, de zips, de forge, de tests unitaires, …) et de remplacer une partie des fonctionnalités techniques par des librairies externes éprouvées qui ne sont pas développées et maintenues par l’équipe SPIP, notamment certains modules symfony. Bref, passer le temps dont on dispose à faire évoluer SPIP directement, plutôt que gérer des spécificités, et utiliser des automatismes d’autre part, CI notamment.

SPIP sur Github

Compte tenu du point précédent entre autres, migrer le core SPIP sur Github paraissait une solution satisfaisante, à la fois pour se décharger du maintient d’une forge parfois capricieuse, et pour se faciliter infiniment la tache sur l’intégration avec Composer / Packagist, tout en ayant aucun outil tierce à gérer de notre côté.

Ce sujet fut tendu (parce que Github c’est le mal), mais les participant·es présent·es étaient d’accord, bien que fébrilement. Cela étant, Cédric, qui n’était pas présent, s’est senti dépité et perdre motivation si cette solution était choisie, ce qui a crée aussi d’autres tensions d’ailleurs, sur la difficulté de prendre des décisions et de qui les valide ou pas au final.

SPIP & Composer

L’autre point qui ennuie et dont on n’a aucune solution actuellement c’est de permettre des librairies Composer dans les plugins, via l’interface d’administration des plugins de SPIP.

C’est pourquoi (James & moi) on se garde bien d’aborder ce sujet délicat, pour se concentrer d’abord si possible sur cette utilisation uniquement pour le Core et les plugins-dist fournis, dans la mesure de nos forces.

Sans être sur Github ou Gitlab.com, déjà cette gestion complique et oblige à utiliser un outil tierce, Satis (il existe aussi d’autres outils payants). C’est ce qui est mis en place actuellement, avec quelques doutes sur la montée en charge quand il y aura beaucoup de dépôts et son maintien dans le temps.

Recenser les forces vives !

Avec le temps, il devient nécessaire de faire un tour des forces restantes dans SPIP, le core notamment, pour savoir qui a encore envie d’y participer régulièrement et activement.

Il y a 2 gros points : destructurer la team et établir des équipes spécialisées.

la team

Elle est responsable actuellement de

  • traiter et corriger les failles de sécurité
  • réviser, merger les PRs et les reporter dans les branches concernées
  • garantir le respect du cycle de vie des branches
  • releaser
  • la maintenance des serveurs qui hébergent des trucs de la communauté
  • … et dispose de droits de commit sur l’organisation spip donc

il y a 30 personnes dans le core, mais combien sont encore actives / intéressées par l’objet principal du groupe : la prise en charge les signalements de failles de sécu ? 7 max ? Le fait que ces personnes devenues inactives aient toujours des accès importants est un problème de sécurité en soit.

L’idée serait de redemander à chacune de ces personnes ce à quoi elle a envie de participer ou pas et de dispatcher les personnes volontaires dans des équipes aux rôles plus spécifiques…

équipes spécialisées

Ainsi il pourrait être proposé une structure différente en s’appuyant sur des équipes dont les personnes ont envie de s’investir sur des sujets plus précis.

Par exemple il pourrait être envisagé des équipes identifiées de :

  • sécurité: pour l’analyse et traitement des failles,
  • maintenance: pour réviser, merger les PRs et les reporter dans les branches concernées
  • architecture & DX : définir la vision souhaitée à long terme du code,
  • fonctionnel & UX : définir les fonctionnalités maintenues et souhaitées,
  • documentation,
  • traduction,
  • modération (sur Discuter)
  • animation (organiser des rencontres, comptes rendus, etc…)

Outre les membres actuels du core, il pourra être possible d’intrégrer donc d’autres personnes motivées par le projet dans ces équipes, en accord avec les valeurs initiales du projet SPIP évidemment. La question de comment on valide sera toujours délicate à trancher.

L’idée aussi est que ces attributions ne sont pas éternelles, et que les membres puissent partir ou revenir au gré des motivations et du temps libre.

Sur ces tâches, il sera important d’exposer le manque de forces vives là où c’est le cas, les membres du core doivent savoir « laisser de la place » afin de permettre aux personnes volontaires de s’impliquer.


Voilà en gros ce qui s’était partiellement discuté ; d’autres personnes complèteront peut être…
Toujours est-il qu’il ne s’est rien passé depuis, sinon beaucoup de démotivation un peu partout.

Matthieu & b_b

10 « J'aime »

Pour avoir été présent, je confirme que c’est l’essentiel de ce qui s’est dit d’un point de vue organisationnel/technique.

1 « J'aime »

Merci @marcimat pour ce retour.

Merci Matthieu & b_b pour ce CR.
Du coup est-ce qu’on commence d’appliquer ce qui était discuté, notamment en ce qui concerne les équipes spécialisées ?
Perso je travaille déjà sur traduction et documentation, ça pourrait faire l’objet d’une participation plus formelle. Faire connaitre de tels groupes de travail élargis sur ces sujets pourrait peut-être permettre à de nouvelles personnes de voir les besoins de trad ou de doc… et de s’impliquer ?
Je pourrais également participer à la modération sur discuter (actuellement quand je vois un spam je le tague et le signale sur IRC, mais ça pourrait être plus direct)

Pourquoi pas oui, il faudrait déjà lister la liste de base des équipes en question, celle qu’on proposait n’est peut-être pas bonne complète, mais c’est déjà une bonne base.

Oui c’est complètement l’idée, permettre à des personnes de s’impliquer sans se poser la question de la légitimité ou de l’appartenance à un groupe comme le core (qui amha ne veut plus rien dire).

Concernant le groupe documentation, j’y pensais l’autre jour en commentant dans le privé de spip.net. Tous nos échanges là bas sont « cachés » et je trouve ça dommage et peu gratifiant pour les personnes qui participent à la doc. On pourrait peut-être créer une catégorie dédié dans le forum et brancher les notifications des commentaires de l’espace privé de spip.net sur cette catégorie. Histoire de donner de la visibilité à tout ça. Après, c’est peut-être pas une bonne idée, car ça doublonne l’info dans deux espaces différents. À voir…

Concernant le groupe modération : il faut qu’on trouve la possibilité pour mettre ça en place sur le forum afin de distinguer les membres de ce groupe dans les interventions et aussi de permettre aux membres du groupe de l’interpeler avec un @legroupe quand un sujet dérape et que la personne souhaite laisser la main au groupe. => voir Mise en place effective du groupe de modération sur le forum

En tout cas, merci pour tes implications et de te proposer d’avancer là dessus !

Alors je trouve que c’est une excellente idée ! Pas que pour donner de la visibilité mais aussi pour que les personnes qui pourraient répondre soient notifiées. Actuellement si on n’est pas auteur·e de l’article ou si on n’est pas abonné aux flux rss du forum privé on n’est pas informé…

Ça me parait une très bonne approche. La liste que donnait @marcimat est plutôt censée, mais on peut en discuter pour l’affiner / la simplifier.

Sur le fond, je prends mon cas personnel : je n’ai strictement aucune plus value sur les questions de sécu.
Et je suis d’ailleurs très étonné que depuis plusieurs années, un gros paquet de comptes historiques du core mais qu’on ne voit plus du tout ici depuis longtemps aient toujours accès à ces infos très très sensibles.
Est ce qu’on sait qui lit les emails de tous ces comptes « morts » ?

Par contre, tout ce qui touche à l’UI/UX, et à l’accessibilité, ça ça m’intéresse beaucoup.

Il faudra coupler cette nouvelle orga avec la notion de droits sur les dépots git dans la forge aussi.

Et il faudra que ce soit bien mis en avant sur spip.net : liste des groupes de travail, voir des travaux en cours, et un moyen de rejoindre ou de candidater., ne serait ce qu’un simple formidable formulaire.

Yep la page existe, avec un modèle facile à lire à suivre pour chaque groupe, il suffit de mettre à jour avec des trucs récents :slight_smile:

À l’époque il n’y avait pas le nouveau Discuter, maintenant on peut tout basculer (si on veut) sur des catégories dédiées du nouveau forum, pour là où chaque groupe discute ensemble (et suivant le thème, ça peut être public ou privé, on configure comme on veut).

Héhé, je savais que tu allais nous en parler ;o

Amha ça n’est pas la même chose dont on parle ici : équipes != groupes de travail.

C’est exactement pour ça qu’on se disait qu’il fallait remettre tout ça à plat.

Je disais dans l’autre thread

Je rebondis la dessus quand même, puisqu’il y a aussi ce CR maintenant, mais je t’assure qu’il n’y a aucune malveillance dans ces réflexions.

Il y a quand même le constat qu’en Git, et avec la simplicité des forges actuelles, proposer des modifications sur des projets, ça peut se faire aussi très convenablement via des forks et des branches distantes, et qu’il n’est donc pas toujours obligatoire d’avoir des droits de commits sur le projet en question. C’est incomparable avec SVN !

Et on l’a vu a plusieurs reprises, tout le monde n’est pas particulièrement à l’aise sur Git et peut pousser malencontreusement des éléments non prévus, des réécritures de branches ou de tag ; protéger les branches main / master est une solution pour cette branche spécifique, mais ce n’est pas la seule possible…

On voit aussi qu’à l’usage, certains dépôts ont des mainteneuses et mainteneurs plus ou moins attitrés, parce qu’iels connaissent mieux et globalement cette partie du code ; il ne me parait pas incongru de permettre d’attribuer des rôles différents par projets ou par groupe. Notamment pour les nouveaux arrivants dont on ne connait pas encore les compétences dans le domaine.

De même il ne me parait pas ridicule d’enlever les droits d’écriture des personnes qui ne participent plus depuis X années.

Oui, je suis assez d’accord que cela aurait deja a minima du sens de protéger la branche principale.

Et oui, attribuer des roles différents par projets ou groupe cela pourrait être bien. Ca permettrait aussi de savoir à qui l’on s’adresse lorsqu’on fait des PR ou qu’on contribue sur un projet.

Parce que pardois il y a des PR qui restent des mois en suspens parce qu’en pratique… il n’y plus personne pour suivre. Si les projets étaient clairement flechés, on pourrait voir si la personne est encore active ou pas, etc.

+1
J’ai fait deux fois la boulette de commiter sur master sur des plugins.
D’ailleurs je viens de protéger master en écriture sur tous mes plugins.

Le 22/02/2024 à 12:50, Matthieu Marcillaud via Discuter de SPIP a écrit :

De même il ne me parait pas ridicule d’enlever les droits d’écriture des personnes qui ne participent plus depuis X années.

Ça c’est une chose oui, ne serait-ce que pour la sécu, et je suis plutôt d’accord (ainsi que la protection par défaut de la branche principale, ça va sans dire)

Pour le reste, je maintiens pour le moment que ça spécialise, professionnalise, et déresponsabilise les gens si on a des droits différents. Corporate et non démocratique. Pour 99% des projets, si ya des oups, c’est rarement un drame et on a toujours pu corriger. Et le but est justement de faire apprendre à tout le monde à créer les bonnes branches séparées pour proposer des modifs.

Il y a une différence politique qui me semble importante entre avoir tous les mêmes droits exécutifs réels, mais que les relations sociales font que socialement on pense que c’est bien d’avoir l’avis de tel ou telle dev pour intégrer telle modif ; et le fait de bloquer concrètement des droits différents pour chacun⋅e. Ce n’est vraiment pas la même chose.

Que de manière ponctuelle, pour tel ou tel plugin très sensible sur la sécurité, on configure des droits différents, je n’ai pas de soucis majeur (Bank pourrait parfaitement revenir dans la communauté avec des droits de commits pour la sécu dédié ! depuis le temps qu’on a une forge Git). Mais ça reste une config ponctuelle.


RastaPopoulos

1 « J'aime »

Ya des ambiguïtés sur le statut de certains plugins actuellement : certains sont zone ouverte et sur d’autres tout le monde peut théoriquement y commiter, mais ils sont suivis de près et commit-gardés par une personne.
Clarifier ça et le rendre visible, notamment par des statuts, ça serait une bonne chose.
Mais si les statuts sont associés à des droits, faudra t il forker un repo pour continuer à le dev si la gardienne du repo répond pas ?

Dans tous les cas c’est une bonne pratique de faire une PR plutôt que commit directement dans le master, ce qui a le bon goût de permettre la relecture.
Et si la personne ne réponds pas à la PR même après une relance mais que d’autres ont donné leur avis positif alors il est légitime de merger. Je pense donc pas qu’il y a de problème ni besoin de forker quoi que ce soit…

Perso je participe sur d’autres projets libres ou la branche master est protégée par principe, et il faut toujours passer par une PR, parce que ça a le bon gout de permettre de vérifier les tests automatiqement par exemple, et de s’assurer qu’on envoie pas des bugs dans la branche principale, même si en pratique on est que 2 à commits.