[SPIP Zone] /!\ Création de branches et tags dans spip-zone

Bonjour,

certains plugins assez importants méritent qu’ils soient structurés sous la forme
trunk/ → la « branche » stable la plus à jour
branches/ → les branches de maintenance OU des branches de développement
tags/ → L’équivalent d’un « sabot » dans svn pour repérer facilement une version donnée : c’est une branche qui ne subira aucune modification

Je ne fais que reprendre ici les recommandations de Subversion ainsi que les dénominations d’usage.

Exemples de problèmes actuels :

  1. Certains plugins ne sont plus compatibles avec la famille 1.9 de spip, au fil de l’eau
    (ex. http://trac.rezo.net/trac/spip-zone/changeset/29644/plugins/csv_import)
    ==> il faut alors créer une branche de maintenance pour ceux qui sont sous 1.9, afin d’y porter des corrections et améiorations

  2. Des plugins multiplient les versions dans archivelist.txt et/ou SVN sans que ce soit très homogène.

ex. # Agenda :

plugins/agenda/2_0_0;agenda_2_0
plugins/agenda/1_9_0;agenda_1_9
plugins/agenda/1_9_1:8642;agenda_1_9_1
plugins/agenda/1_9_2:13400;agenda_1_9_2

  1. Les fichiers .zip n’intègrent pas les modifs ajoutées aux branches de maintenance car les sabots sont mal utilisés.
    Par exemple, pour le plugin agenda ci-dessus, le fichier agenda_1_9_2.zip n’intègrera pas le commit de sécurité
    http://trac.rezo.net/trac/spip-zone/changeset/25373/plugins/stable/agenda/1_9_2

  2. Vous avez un gros plugin ou squelette (je pense à Multi-saisons) et un gars vient le rendre complètement instable en y ajoutant des fonctionnalités pas testées. C’est une situation qu’il faut absolument éviter : toutes les contributions doivent avoir une branche de référence stable (le trunk) : soit elle ne subit que des commits qui ne perturbent pas sa stabilité, soit les développements sont effectués sur des branches séparées.

  3. etc…

Avant de me lancer dans une phase de mise à plat des plugins concernés, je lance le chantier sur le wiki de Trac :
http://trac.rezo.net/trac/spip-zone/wiki/MiseEnBranche
que vous pouvez compléter

Après concertation générale et stabilisation du wiki, on fera comme l’a fait Ben : « on bouge » :slight_smile:

Liste des plugins concernés repérés d’après archivelist.txt (première passe) :

  • acces_restreint
  • agenda
  • enluminures_typographiques
  • en_travaux
  • forms
  • FpipR
  • gerer_date
  • interface_couleurs_xxx
  • lilyspip
  • nuage
  • palette
  • panoramas
  • pim_agenda
  • saveauto
  • squelettes_par_mots_cle
  • article_pdf
  • Association
  • csv2spip
  • mots_partout
  • spipcarto
  • spip-listes
  • abonnement
  • abomailmans
  • openid
  • convertisseur
  • export_odt
  • liens_contenus
  • ma-lettre
  • plugin-thelia
  • spip2spip
  • spipBB
  • blog_SpipClear
  • Durzy
  • eva-web
  • the_morning_after

Il y a bien d’autres développements à regrouper (je pense à forms&tables), mais je laisse à d’autres le soin de compléter le wiki s’ils en repèrent.

.Gilles

Le 13 juil. 09 à 04:29, Gilles VINCENT a écrit :

Bonjour,

certains plugins assez importants méritent qu’ils soient structurés sous la forme
trunk/ → la « branche » stable la plus à jour

heu non ,c’est la branche de dev ça

branches/ → les branches de maintenance OU des branches de développement
tags/ → L’équivalent d’un « sabot » dans svn pour repérer facilement une version donnée : c’est une branche qui ne subira aucune modification

Je ne fais que reprendre ici les recommandations de Subversion ainsi que les dénominations d’usage.

Exemples de problèmes actuels :

  1. Certains plugins ne sont plus compatibles avec la famille 1.9 de spip, au fil de l’eau
    (ex. http://trac.rezo.net/trac/spip-zone/changeset/29644/plugins/csv_import)
    ==> il faut alors créer une branche de maintenance pour ceux qui sont sous 1.9, afin d’y porter des corrections et améiorations

ah ben il y aurait du avoir un sabot pour que le zip soit bon !

  1. Des plugins multiplient les versions dans archivelist.txt et/ou SVN sans que ce soit très homogène.

ex. # Agenda :

plugins/agenda/2_0_0;agenda_2_0
plugins/agenda/1_9_0;agenda_1_9
plugins/agenda/1_9_1:8642;agenda_1_9_1
plugins/agenda/1_9_2:13400;agenda_1_9_2

je crois que ces sabots avaient été mis pour essayer de réduire les durées de creation des paquets…

  1. Les fichiers .zip n’intègrent pas les modifs ajoutées aux branches de maintenance car les sabots sont mal utilisés.
    Par exemple, pour le plugin agenda ci-dessus, le fichier agenda_1_9_2.zip n’intègrera pas le commit de sécurité
    http://trac.rezo.net/trac/spip-zone/changeset/25373/plugins/stable/agenda/1_9_2

oui, erreur, donc

  1. Vous avez un gros plugin ou squelette (je pense à Multi-saisons) et un gars vient le rendre complètement instable en y ajoutant des fonctionnalités pas testées. C’est une situation qu’il faut absolument éviter : toutes les contributions doivent avoir une branche de référence stable (le trunk) : soit elle ne subit que des commits qui ne perturbent pas sa stabilité, soit les développements sont effectués sur des branches séparées.

heu ben non.
Pour moi le trunk c’est la branche courante de dev, et ça peut etre des fois instables.
Les branches servent à la maintenance ou pour des forks experimentaux effectivement.

  1. etc…

Avant de me lancer dans une phase de mise à plat des plugins concernés, je lance le chantier sur le wiki de Trac :
http://trac.rezo.net/trac/spip-zone/wiki/MiseEnBranche
que vous pouvez compléter

Après concertation générale et stabilisation du wiki, on fera comme l’a fait Ben : « on bouge » :slight_smile:

moui enfin je préfererai que ça reste vu au cas par cas selon les plugins…

Cédric

Salut,

2009/7/13 cedric.morin@yterium.com <cedric.morin@yterium.com>

Le 13 juil. 09 à 04:29, Gilles VINCENT a écrit :

trunk/ → la « branche » stable la plus à jour

heu non ,c’est la branche de dev ça

C’est une des utilisations de trunk/
cf. http://svn.collab.net/repos/svn/trunk/doc/user/svn-best-practices.html

option « never-branch » vs. option « always-branch » vs. option « branch-as-needed »

Le choix d’une de ces options peut d’ailleurs figurer dans le fichier regles-de-commit.txt

branches/ → les branches de maintenance OU des branches de développement
tags/ → L’équivalent d’un « sabot » dans svn pour repérer facilement une version donnée : c’est une branche qui ne subira aucune modification

Je ne fais que reprendre ici les recommandations de Subversion ainsi que les dénominations d’usage.

Exemples de problèmes actuels :

  1. Certains plugins ne sont plus compatibles avec la famille 1.9 de spip, au fil de l’eau
    (ex. http://trac.rezo.net/trac/spip-zone/changeset/29644/plugins/csv_import)
    ==> il faut alors créer une branche de maintenance pour ceux qui sont sous 1.9, afin d’y porter des corrections et améiorations

ah ben il y aurait du avoir un sabot pour que le zip soit bon !

un sabot s’apparente à un tag SVN, c’est-à-dire à une branche qui n’est jamais modifiée.
L’intérêt des branches c’est de maintenir un support de plusieurs versions

  1. Des plugins multiplient les versions dans archivelist.txt et/ou SVN sans que ce soit très homogène.

ex. # Agenda :

plugins/agenda/2_0_0;agenda_2_0
plugins/agenda/1_9_0;agenda_1_9
plugins/agenda/1_9_1:8642;agenda_1_9_1
plugins/agenda/1_9_2:13400;agenda_1_9_2

je crois que ces sabots avaient été mis pour essayer de réduire les durées de creation des paquets…

Je ne le sais pas.
Si un paquet n’est généré que lorsqu’une branche est modifiée, on n’a pas ce problème.

  1. Les fichiers .zip n’intègrent pas les modifs ajoutées aux branches de maintenance car les sabots sont mal utilisés.
    Par exemple, pour le plugin agenda ci-dessus, le fichier agenda_1_9_2.zip n’intègrera pas le commit de sécurité
    http://trac.rezo.net/trac/spip-zone/changeset/25373/plugins/stable/agenda/1_9_2

oui, erreur, donc

Non car entre temps la version était entrée dans une phase de compatibilité avec spip2.0 (donc avec une certaines instabilité potentielle)

  1. Vous avez un gros plugin ou squelette (je pense à Multi-saisons) et un gars vient le rendre complètement instable en y ajoutant des fonctionnalités pas testées. C’est une situation qu’il faut absolument éviter : toutes les contributions doivent avoir une branche de référence stable (le trunk) : soit elle ne subit que des commits qui ne perturbent pas sa stabilité, soit les développements sont effectués sur des branches séparées.

heu ben non.
Pour moi le trunk c’est la branche courante de dev, et ça peut etre des fois instables.
Les branches servent à la maintenance ou pour des forks experimentaux effectivement.

L’exemple rapporté ici est un exemple vécu : quelqu’un a foutu son merdier dans un dev’ et a gentillement attendu que les autres le corrige.

Pour moi le trunk est la branche minimale.
On ne peut avoir que des commits dans cette branche sans créer d’autres branches. C’est ce qui se faisait jusqu’à présent d’ailleurs.

Là ou je ne suis pas d’accord avec toi c’est que le trunk est selon moi la branche de référence, pas la branche de développements +/- expérimentaux :
En effet, lorsqu’on dit à quelqu’un de récupérer un plugin par svn, on lui donne l’adresse du trunk, pas d’une branche de maintenance. Pour une raison simple aussi : 1 an plus tard, la branche de maintenance est devenue obsolète donc le lien n’est plus à jour.
On ne va pas demander aux utilisateurs novices en SVN de parcourir l’arbo SVN pour récupérer la dernière version d’un plugin.

C’est pour l’ensemble de ces raisons que le trunk/ devrait rester le plus stable possible.

  1. etc…

Avant de me lancer dans une phase de mise à plat des plugins concernés, je lance le chantier sur le wiki de Trac :
http://trac.rezo.net/trac/spip-zone/wiki/MiseEnBranche
que vous pouvez compléter

Après concertation générale et stabilisation du wiki, on fera comme l’a fait Ben : « on bouge » :slight_smile:

moui enfin je préfererai que ça reste vu au cas par cas selon les plugins…

C’est évident bien sûr.

Le 13/07/2009 23:09, Gilles VINCENT a écrit :

On ne va pas demander aux utilisateurs novices en SVN de parcourir
l'arbo SVN pour récupérer la dernière version d'un plugin.

D'après moi, SVN c'est pour les développeurs.
Un développeur peu certes être novice en SVN mais seulement au début, s'il continue de développer autour de SPIP alors il ne sera plus novice puisque sur la zone tout se fait par SVN.

Les utilisateurs eux, utilisent des paquets ZIP, ou l'installeur interne à l'interface.

--
RastaPopoulos

2009/7/14 RastaPopoulos <vincent@ldd.fr>

Le 13/07/2009 23:09, Gilles VINCENT a écrit :

On ne va pas demander aux utilisateurs novices en SVN de parcourir
l’arbo SVN pour récupérer la dernière version d’un plugin.

D’après moi, SVN c’est pour les développeurs.
Un développeur peu certes être novice en SVN mais seulement au début, s’il continue de développer autour de SPIP alors il ne sera plus novice puisque sur la zone tout se fait par SVN.

Les utilisateurs eux, utilisent des paquets ZIP, ou l’installeur interne à l’interface.

Tout à fait d’accord.
C’est pour cela qu’il faut mettre à disposition le maximum de paquets zip pour les non développeurs (la majorité des utilisateurs).

L’aspect déclaratif du fichier archivelist.txt crée donc une limite qu’il faut combler :

  • soit on n’a pas les derniers paquets, parce que considérés comme « trop en cours de développement » (ce qui peut se justifier, même si cela est parfois assez subjectif)
  • soit on n’a plus les anciens paquets (donc comment retrouver une version du plugin qui soit compatible avec un SPIP 1.9.1 ?)
  • soit les anciens paquets n’incluent pas les correctifs (ce qui est le problème quand on ne développe pas en branche et que la compatibilité n’est pas toujours assurée – cas de pas mal de plugins lorsqu’ils sont passés en version spip-2.0)

A mon avis, seule une automatisation plus avancée et l’usage de branches de maintenances peut régler cela.

Pour les scripts, je suis dessus, afin d’avoir du concret à présenter.

Pour les branches, c’est au cas par cas : en effet, reporter des corrections de bugs sur des branches de maintenance est un boulot que ne fait pas tout le monde => il faut trouver des volontaires pour cela.

.Gilles


RastaPopoulos


spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Euh pas forcément d’accord avec tout ce que tu dis…

L’aspect déclaratif du fichier archivelist.txt crée donc une limite qu’il faut combler :

  • soit on n’a pas les derniers paquets, parce que considérés comme « trop en cours de développement » (ce qui peut se justifier, même si cela est parfois assez subjectif)

Ca reste à la discrétion du développeur non ? de décider de faire un zip? je refuse depuis longtemps de faire un zip pour inscription2 car je ne le juge pas stable… je ne crois pas que c’est toi qui ensuite essuie les plaintes des utilisateurs…

(…)

  • soit les anciens paquets n’incluent pas les correctifs (ce qui est le problème quand on ne développe pas en branche et que la compatibilité n’est pas toujours assurée – cas de pas mal de plugins lorsqu’ils sont passés en version spip-2.0)

Pour prendre l’exemple que tu as cité au début de ce thread (CSV_import). La dernière modification de code date du 24 mai 2007 (je ne parle pas de modifs n’ayant pas trait au code). S’il n’a pas été modifié depuis plus de deux ans c’est qu’il doit être stable… au lieu de faire une branche pour ce type de plugin qui ne sont pas voué à évoluer, il me semble que faire 2 zips (ce que j’ai fait) suffit amplement… à quoi bon s’évertuer à déployer une armada de bidules pour un plugin qui ne bougera pas d’une part pour une version de SPIP désuète d’autre part… Autant se mordre la queue et passer du temps à ranger que de coder…

Pour les branches, c’est au cas par cas : en effet, reporter des corrections de bugs sur des branches de maintenance est un boulot que ne fait pas tout le monde => il faut trouver des volontaires pour cela.

Surtout que dans beaucoup de cas il n’y a pas de réel intérêt … faire évoluer les plugins est aussi un moyen de faire comprendre à un utilisateur de changer de version de SPIP à un moment ou un autre surtout dans le cas ou la compat ascendante est "encore respectée… c’est limite moins chiants pour eux plutot que de se galérer à avoir des plugins fonctionnant avec les mêmes fonctionnalités sur plusieurs versions mais qui du coup sont moins stables, ou d’éviter au mec qui code de faire le boulot 1,5 fois parce que des gens gardent des versions désuètes de SPIP.

Juste pour signaler qu’en dehors de ne pas être « tous » codeurs… nous ne sommes pas « tous » professionnels (aka ceux qui tirent des salaires de leurs développement)… donc pour ne parler que de moi à l’instant présent : si on commence à me policer et me prendre le choux pour des trucs dont on ne m’a pas prouvé la réelle utilité et me demander de faire comme les autres parce que chez les autres on fait comme ca … je pense que je ne vais pas utiliser la zone très longtemps encore…

kent1

L’aspect déclaratif du fichier archivelist.txt crée donc une limite qu’il faut combler :

  • soit on n’a pas les derniers paquets, parce que considérés comme « trop en cours de développement » (ce qui peut se justifier, même si cela est parfois assez subjectif)

Ca reste à la discrétion du développeur non ? de décider de faire un zip? je refuse depuis longtemps de faire un zip pour inscription2 car je ne le juge pas stable… je ne crois pas que c’est toi qui ensuite essuie les plaintes des utilisateurs…

Tu as raison, je ne l’avais pas trop envisagé.
On pourrait exclure du calcul automatique des archives les plugins à l’état de « dev » :
Ça laisserait alors une souplesse pour le développeur de choisir de ne donner accès à ses travaux que via SVN, qu’en penses-tu ?

(…)

  • soit les anciens paquets n’incluent pas les correctifs (ce qui est le problème quand on ne développe pas en branche et que la compatibilité n’est pas toujours assurée – cas de pas mal de plugins lorsqu’ils sont passés en version spip-2.0)

Pour prendre l’exemple que tu as cité au début de ce thread (CSV_import). La dernière modification de code date du 24 mai 2007 (je ne parle pas de modifs n’ayant pas trait au code). S’il n’a pas été modifié depuis plus de deux ans c’est qu’il doit être stable… au lieu de faire une branche pour ce type de plugin qui ne sont pas voué à évoluer, il me semble que faire 2 zips (ce que j’ai fait) suffit amplement… à quoi bon s’évertuer à déployer une armada de bidules pour un plugin qui ne bougera pas d’une part pour une version de SPIP désuète d’autre part… Autant se mordre la queue et passer du temps à ranger que de coder…

Pour les anciens plugins, je pense qu’on peut créer des branches de façon automatique à partir des sabots déjà définis dans archivelist.txt.
De cette façon un calcul des archives à partir des branches nous permettrait de retrouver nos petits.
Comme l’avait dit cy_altern, une telle réorganisation doit se faire sans quasi aucun effort de la part de tout le monde (ou presque pas), j’en suis conscient.

Pour les branches, c’est au cas par cas : en effet, reporter des corrections de bugs sur des branches de maintenance est un boulot que ne fait pas tout le monde => il faut trouver des volontaires pour cela.

Surtout que dans beaucoup de cas il n’y a pas de réel intérêt … faire évoluer les plugins est aussi un moyen de faire comprendre à un utilisateur de changer de version de SPIP à un moment ou un autre surtout dans le cas ou la compat ascendante est "encore respectée… c’est limite moins chiants pour eux plutot que de se galérer à avoir des plugins fonctionnant avec les mêmes fonctionnalités sur plusieurs versions mais qui du coup sont moins stables, ou d’éviter au mec qui code de faire le boulot 1,5 fois parce que des gens gardent des versions désuètes de SPIP.

2 remarques :

  • Ce n’est pas forcément le mec qui code pour spip-2.0 qui va reporter les bugs sur les branches compatibles avec SPIP1.9.x
  • Je pense là surtout au « pauv’ gars » qui est devenu webmestre d’un SPIP d’une assoc’, installé il y a quelques mois par un autre développeur pas forcément très doué non plus (qu’il soit pro ou pas). On lui demande de rajouter « une super fonctionalité qu’ils ont lu sur contrib » (genre, au pif, un antispam, un formulaire, etc…). Il y en a plein qui n’oserons pas se risquer dans une mise à jour de leur site en prod, juste pour installer un plugin qui existe pour leur version mais n’est accessible que par SVN pour une version même pas forcément très identifiée…

Juste pour signaler qu’en dehors de ne pas être « tous » codeurs… nous ne sommes pas « tous » professionnels (aka ceux qui tirent des salaires de leurs développement)… donc pour ne parler que de moi à l’instant présent : si on commence à me policer et me prendre le choux pour des trucs dont on ne m’a pas prouvé la réelle utilité et me demander de faire comme les autres parce que chez les autres on fait comme ca … je pense que je ne vais pas utiliser la zone très longtemps encore…

Je te rejoins à 200% : j’ai parlé de « codeurs » pour me référer à des utilisateurs chevronnés de SPIP, version montage de squelettes - sans référence aucune avec un quelconque status professionnel.

D’ailleurs, il y a sur la zone des pro qui sont de très mauvais codeurs, et de très bons codeurs qui font ça juste par passion.
Moi, heureusement que je fais ça par passion, sinon je serai complètement dans la première catégorie ^^

Essayons de garder cette bio-diversité, non ? :wink:

.Gilles

Le 15 juil. 09 à 05:24, Gilles VINCENT a écrit :

L’aspect déclaratif du fichier archivelist.txt crée donc une limite qu’il faut combler :

  • soit on n’a pas les derniers paquets, parce que considérés comme « trop en cours de développement » (ce qui peut se justifier, même si cela est parfois assez subjectif)

Ca reste à la discrétion du développeur non ? de décider de faire un zip? je refuse depuis longtemps de faire un zip pour inscription2 car je ne le juge pas stable… je ne crois pas que c’est toi qui ensuite essuie les plaintes des utilisateurs…

Tu as raison, je ne l’avais pas trop envisagé.
On pourrait exclure du calcul automatique des archives les plugins à l’état de « dev » :
Ça laisserait alors une souplesse pour le développeur de choisir de ne donner accès à ses travaux que via SVN, qu’en penses-tu ?

Moi je pense que dans tous les cas, c’est aux developpeurs qui vont avoir a faire la doc, le support etc … de décider si ils publient leur contribution sous forme de zip facile à installer, ou si ils ne le laissent accessibles que par SVN, à la seule intention des codeur.
Parce que mettre un zip a dispo n’est pas un acte anodin, et celui qui le fait se retrouve ensuite avec plein de sollicitations.
Le truc pervers de ton robot c’est que tous ceux qui ne veulent pas publier le zip (pour plein de bonne raisons) vont laisser le statut dev, et ce même si c’est stable. Donc ce champ va perdre tout son sens.

2 remarques :

  • Ce n’est pas forcément le mec qui code pour spip-2.0 qui va reporter les bugs sur les branches compatibles avec SPIP1.9.x

Bah.
Dans la pratique, on a deja du mal à avoir des contributeurs qui viennent aider sur les plugins existants, et même sur ceux qui sont deja branchés, j’ai plus que rarement vu des report de patch.
Deployer une usine à gaz au pretexte que peut etre un jour un gars va avoir envie de reporter un correctif pour une vieille version me parait assez peu écologique…

  • Je pense là surtout au « pauv’ gars » qui est devenu webmestre d’un SPIP d’une assoc’, installé il y a quelques mois par un autre développeur pas forcément très doué non plus (qu’il soit pro ou pas). On lui demande de rajouter « une super fonctionalité qu’ils ont lu sur contrib » (genre, au pif, un antispam, un formulaire, etc…). Il y en a plein qui n’oserons pas se risquer dans une mise à jour de leur site en prod, juste pour installer un plugin qui existe pour leur version mais n’est accessible que par SVN pour une version même pas forcément très identifiée…

Tu as un exemple concrêt de cas qui pose problème ?
parce qu’a ma connaissance, les zip pour les anciennes versions sont générés, et il n’est nul besoin de SVN.
Si ils ne le sont pas, c’est alors parce que le(s) dev(s) du plugin l’ont voulu comme cela (cf les problèmes que cela pose en terme de support ensuite).
Et encore enfin, si il y a eu un oubli, un simple post sur le forum de contrib suffit à le réparer …

Cédric

Le 13 juil. 09 à 23:09, Gilles VINCENT a écrit :

2009/7/13 cedric.morin@yterium.com <cedric.morin@yterium.com>

Le 13 juil. 09 à 04:29, Gilles VINCENT a écrit :

trunk/ → la « branche » stable la plus à jour

heu non ,c’est la branche de dev ça

C’est une des utilisations de trunk/
cf. http://svn.collab.net/repos/svn/trunk/doc/user/svn-best-practices.html
option « never-branch » vs. option « always-branch » vs. option « branch-as-needed »
Le choix d’une de ces options peut d’ailleurs figurer dans le fichier regles-de-commit.txt

Je bosse sur tous mes projets avec le trunk comme dev, et des branches pour la maintenance des versions stabilisées. C’est une pratique plutôt courante, il me semble.

C’était déjà le cas du temps de CVS, il y a quelques années.

-Nicolas


Nicolas HOIZEY
Blog : http://www.gasteroprod.com/
Photos : http://flic.kr/nicolas-hoizey/

Le 15 juil. 09 à 04:02, Quentin Drouet a écrit :

Euh pas forcément d'accord avec tout ce que tu dis...

L'aspect déclaratif du fichier archivelist.txt crée donc une limite qu'il faut combler :
- soit on n'a pas les derniers paquets, parce que considérés comme "trop en cours de développement" (ce qui peut se justifier, même si cela est parfois assez subjectif)

Ca reste à la discrétion du développeur non ? de décider de faire un zip? je refuse depuis longtemps de faire un zip pour inscription2 car je ne le juge pas stable... je ne crois pas que c'est toi qui ensuite essuie les plaintes des utilisateurs...

+1

On pourrait imaginer une info supplémentaire dans plugin.xml, genre <package>, si on veut un zip ? Et on pourrait y mettre un attribut "sabot".

-Nicolas

--
Nicolas HOIZEY
Blog : http://www.gasteroprod.com/
Photos : http://flic.kr/nicolas-hoizey/

2009/7/15 cedric.morin@yterium.com <cedric.morin@yterium.com>

Le 15 juil. 09 à 05:24, Gilles VINCENT a écrit :

L’aspect déclaratif du fichier archivelist.txt crée donc une limite qu’il faut combler :

  • soit on n’a pas les derniers paquets, parce que considérés comme « trop en cours de développement » (ce qui peut se justifier, même si cela est parfois assez subjectif)

Ca reste à la discrétion du développeur non ? de décider de faire un zip? je refuse depuis longtemps de faire un zip pour inscription2 car je ne le juge pas stable… je ne crois pas que c’est toi qui ensuite essuie les plaintes des utilisateurs…

Tu as raison, je ne l’avais pas trop envisagé.
On pourrait exclure du calcul automatique des archives les plugins à l’état de « dev » :
Ça laisserait alors une souplesse pour le développeur de choisir de ne donner accès à ses travaux que via SVN, qu’en penses-tu ?

Moi je pense que dans tous les cas, c’est aux developpeurs qui vont avoir a faire la doc, le support etc … de décider si ils publient leur contribution sous forme de zip facile à installer, ou si ils ne le laissent accessibles que par SVN, à la seule intention des codeur.
Parce que mettre un zip a dispo n’est pas un acte anodin, et celui qui le fait se retrouve ensuite avec plein de sollicitations.

Sachant qu’à mon avis les plus chieurs se mettront à SVN rien que pour récupérer le plugin dans sa dernière version, j’étais d’avis de laisser l’accès le plus ouvert possible – un peu dans la logique de SPIP, quoi

Mais je maintiens que c’est une fausse solution : le seul moyen de ne pas avoir de gèneurs, c’est de développer sur son serveur SVN privé. Reste à canaliser les emmerdeurs et là dessus, peut-être que la communauté est « trop gentille » et protège mal les contributeurs…

Sinon, sur le Trac j’ai activé le temps d’une soirée une option qui permet de télécharger une archive d’une version SVN quelconque :
Essaye ce que ça donne à : http://trac.rezo.net/trac/spip-zone/browser/plugins/polyhierarchie

Redoutable, non ?
(Allez, ne me lynchez pas trop vite : ça ne restera actif que le temps de faire un sondage rapide de popularité de l’option – ensuite ce sera shutdown dans tous les cas)

Le truc pervers de ton robot c’est que tous ceux qui ne veulent pas publier le zip (pour plein de bonne raisons) vont laisser le statut dev, et ce même si c’est stable. Donc ce champ va perdre tout son sens.

Pourtant c’est logique, non ?
Il ne veut laisser le plugin que pour les « DEVeloppeurs », c’est bien qu’il considère que le plugin ne mérite pas d’être lu par tous (un peu comme un super article laissé en cours de rédaction)

Bon, j’arrete de taquiner car je me rappelle de cas plutôt pénibles que tu as vécu et je comprends la solidité de ton argument.

2 remarques :

  • Ce n’est pas forcément le mec qui code pour spip-2.0 qui va reporter les bugs sur les branches compatibles avec SPIP1.9.x

Bah.
Dans la pratique, on a deja du mal à avoir des contributeurs qui viennent aider sur les plugins existants, et même sur ceux qui sont deja branchés, j’ai plus que rarement vu des report de patch.

Une des explications me semble liée au flou qui règle sur la façon dont on peut participer à des développements. Comment s’assurer qu’on ne va pas marcher sur les plate-bandes du développeur initial ? Je me rappelle que tu as fais un rollback d’un commit que j’avais fais sur Agenda, car ce n’était pas « dans la philosophie du plugin » – ce type de situation, ainsi que les trop vagues consignes des fichiers (jamais lus ?) expliquant comment contribue.

Le manque de méthodologie, de structure, ça fait qu’un développeur d’une contrib qui se trouve devant un contributeur qui casse (temporairement) son travail n’a aucune option pour lui donner une « seconde voie » et généralement il y a clash (ou emmerde s’il laisse faire)

Deployer une usine à gaz au pretexte que peut etre un jour un gars va avoir envie de reporter un correctif pour une vieille version me parait assez peu écologique…

Ce n’est qu’un des arguments. Ce n’est pas une usine à gaz, juste des outils pour inciter d’avantage de personnes à « se lâcher » sans qu’ils ne craignent de se faire mal voir ou de gèner.

Et ce n’est qu’une proposition qui peut-être se réduira au début à affiner la page de Trac sur l’utilisation de SVN, rien de plus…

  • Je pense là surtout au « pauv’ gars » qui est devenu webmestre d’un SPIP d’une assoc’, installé il y a quelques mois par un autre développeur pas forcément très doué non plus (qu’il soit pro ou pas). On lui demande de rajouter « une super fonctionalité qu’ils ont lu sur contrib » (genre, au pif, un antispam, un formulaire, etc…). Il y en a plein qui n’oserons pas se risquer dans une mise à jour de leur site en prod, juste pour installer un plugin qui existe pour leur version mais n’est accessible que par SVN pour une version même pas forcément très identifiée…

Tu as un exemple concrêt de cas qui pose problème ?

J’ai 2 cas précis :

  • un développeur professionnel avec qui j’ai eu l’occasion de travailler. Il a utilisé SPIP de façon très occasionnelle et qui a dû customiser de vieux SPIP (jusqu’à des 1.8 !). Bien sûr il n’a aucune envie de mettre à jour les versions des sites sous SPIP car il n’est pas payé pour cela – ce sont des micro-budgets ! Il lui est impossible de savoir quelle version des plugins installer et ne voit aucun maintient de compatibilité sur pas mal d’entre eux qui sont passés en 2.0 ( à tord, peut-être) ==> ça le décourage de proposer d’autres SPIP et du coup il préfère d’autres CMS dont les contribs sont mieux structurées.
  • un « papy » à qui on a confié le site Internet d’une asso. Le site était sous SPIP et avais des plugins buggués. Il a voulu mettre à jour sous 1.9.2 (à l’époque) : ça a tout planté. La mise à jour des plugins n’a rien arrangé (à partir des zip). Du coup il a trouvé que SPIP c’est de la merde, a réussi (avec de l’aide externe) à revenir en arrière et ne s’occupe plus du site actuellement.

Bref 2 situations où les plugins ont donné l’impression que SPIP c’est que pour les bricoleurs.
(j’aime bien les bricoleurs, c’est un peu ma façon de fonctionner :wink:

parce qu’a ma connaissance, les zip pour les anciennes versions sont générés, et il n’est nul besoin de SVN.
Si ils ne le sont pas, c’est alors parce que le(s) dev(s) du plugin l’ont voulu comme cela (cf les problèmes que cela pose en terme de support ensuite).
Et encore enfin, si il y a eu un oubli, un simple post sur le forum de contrib suffit à le réparer …

Oui, on va commencer par ça déjà (ainsi que du report de patchs hein :wink:

.Gilles

Cédric

Le 15 juil. 09 à 18:39, Gilles VINCENT a écrit :

Le truc pervers de ton robot c’est que tous ceux qui ne veulent pas publier le zip (pour plein de bonne raisons) vont laisser le statut dev, et ce même si c’est stable. Donc ce champ va perdre tout son sens.

Pourtant c’est logique, non ?
Il ne veut laisser le plugin que pour les « DEVeloppeurs », c’est bien qu’il considère que le plugin ne mérite pas d’être lu par tous (un peu comme un super article laissé en cours de rédaction)

Non un plugin peut être stable, mais a l’attention des développeurs uniquement. Et dans ce cas son etat n’est pas dev mais bien stable.

Bon, j’arrete de taquiner car je me rappelle de cas plutôt pénibles que tu as vécu et je comprends la solidité de ton argument.

2 remarques :

  • Ce n’est pas forcément le mec qui code pour spip-2.0 qui va reporter les bugs sur les branches compatibles avec SPIP1.9.x

Bah.
Dans la pratique, on a deja du mal à avoir des contributeurs qui viennent aider sur les plugins existants, et même sur ceux qui sont deja branchés, j’ai plus que rarement vu des report de patch.

Une des explications me semble liée au flou qui règle sur la façon dont on peut participer à des développements. Comment s’assurer qu’on ne va pas marcher sur les plate-bandes du développeur initial ? Je me rappelle que tu as fais un rollback d’un commit que j’avais fais sur Agenda, car ce n’était pas « dans la philosophie du plugin » – ce type de situation, ainsi que les trop vagues consignes des fichiers (jamais lus ?) expliquant comment contribue.

Le manque de méthodologie, de structure, ça fait qu’un développeur d’une contrib qui se trouve devant un contributeur qui casse (temporairement) son travail n’a aucune option pour lui donner une « seconde voie » et généralement il y a clash (ou emmerde s’il laisse faire)

Deployer une usine à gaz au pretexte que peut etre un jour un gars va avoir envie de reporter un correctif pour une vieille version me parait assez peu écologique…

Ce n’est qu’un des arguments. Ce n’est pas une usine à gaz, juste des outils pour inciter d’avantage de personnes à « se lâcher » sans qu’ils ne craignent de se faire mal voir ou de gèner.

Et ce n’est qu’une proposition qui peut-être se réduira au début à affiner la page de Trac sur l’utilisation de SVN, rien de plus…

  • Je pense là surtout au « pauv’ gars » qui est devenu webmestre d’un SPIP d’une assoc’, installé il y a quelques mois par un autre développeur pas forcément très doué non plus (qu’il soit pro ou pas). On lui demande de rajouter « une super fonctionalité qu’ils ont lu sur contrib » (genre, au pif, un antispam, un formulaire, etc…). Il y en a plein qui n’oserons pas se risquer dans une mise à jour de leur site en prod, juste pour installer un plugin qui existe pour leur version mais n’est accessible que par SVN pour une version même pas forcément très identifiée…

Tu as un exemple concrêt de cas qui pose problème ?

J’ai 2 cas précis :

  • un développeur professionnel avec qui j’ai eu l’occasion de travailler. Il a utilisé SPIP de façon très occasionnelle et qui a dû customiser de vieux SPIP (jusqu’à des 1.8 !). Bien sûr il n’a aucune envie de mettre à jour les versions des sites sous SPIP car il n’est pas payé pour cela – ce sont des micro-budgets ! Il lui est impossible de savoir quelle version des plugins installer et ne voit aucun maintient de compatibilité sur pas mal d’entre eux qui sont passés en 2.0 ( à tord, peut-être) ==> ça le décourage de proposer d’autres SPIP et du coup il préfère d’autres CMS dont les contribs sont mieux structurées.
  • un « papy » à qui on a confié le site Internet d’une asso. Le site était sous SPIP et avais des plugins buggués. Il a voulu mettre à jour sous 1.9.2 (à l’époque) : ça a tout planté. La mise à jour des plugins n’a rien arrangé (à partir des zip). Du coup il a trouvé que SPIP c’est de la merde, a réussi (avec de l’aide externe) à revenir en arrière et ne s’occupe plus du site actuellement.

Je parlais de cas concrets de plugin pour lesquels les mises à jour n’etaient pas disponibles en zip mais en SVN.
Je veux bien comprendre les cas que tu cites, mais je ne vois pas ce que ça changerait d’avoir un SVN organisé au cordeau. Ca ne donnera pas plus de version de plugin pour SPIP 2.0.

Les problèmes que tu évoques sont par ailleurs d’une autre nature et liée à l’api non figée de SPIP. C’est de ce coté qu’il faut qu’on travaille.

En particulier, je pense plutôt qu’il faudrait s’orienter vers un unique zip (avec un seul plugin.xml dedans) pour toutes les versions de SPIP à partir de la 2.0. L’archive pourra contenir plusieurs sous rep éventuels, dont seuls seront activés ceux necessaire à chaque version. Ca ferait plus de code à charger mais ça simpliferait beaucoup la vie des utilisateurs.

Bref, je comprend le but que tu poursuis, et je le partage.
Mais je ne partage pas ta solution, qui amène surtout de la lourdeur pour les dev, et peu d’avantage concret pour les utilisateurs au final.

Cédric