[spip-dev] Approche technique de questions humaines (ou est-ce le contraire ?)

Yop,

(je démarre un fil parce que c'est pas une réponse à un message en
particulier, et aussi je voudrais sortir du mode "match" avec 2 camps)

En lisant le débat qui échaude en ce moment la liste, je vois plusieurs
choses se passer, qui ne sont en fait pas très graves et qui sont même
très courantes :
- un dev a l'idée d'une solution à un problème existant, il veut la
  tester
- un autre dev (ou plusieurs) pense que ce n'est pas une bonne approche
- la partie compliquée : le test est pris comme un truc imposé dans le
  code, non discuté, etc.

Mais en fait : avoir une idée dans son coin, être persuadé qu'elle est
bonne, et vouloir la voir en œuvre pour se rendre compte, ce n'est pas
si grave et on devrait pouvoir le faire. Ce n'est pas contraire au
développement collaboratif, même. Tant que c'est vu, dit, et pris comme
juste un test.

Et d'un autre côté : être sûr d'avance que ça ne marchera pas, ce n'est
pas plus fiable qu'être sûr d'avance que si. D'ailleurs, des fois tout
le monde pense que ça va marcher, et après quelques semaines de test on
se rend compte qu'en fait non.

Par contre, que ce qui est une idée arrive direct dans la branche
principale, fût-elle de "dev", c'est déjà trop définitif, car il n'y en
a qu'une, et c'est en réalité la gestation de la future release. Si en
plus de ça le "test" n'est pas présenté comme tel mais comme solution
vouée à rester, c'est la panique : cette fois ça va trop vite.

C'est là que je me dis que c'est peut-être SVN qui pose des
limitations. Du coup, ben forcément je vais reparler de git, parce que
c'est la seule autre alternative que je connaisse. Git permet de créer
des branches en un quart de seconde, de les fusionner aussi simplement,
de les supprimer, etc. à volonté. Une légende dit que dans SVN aussi,
mais tout le monde sait que c'est faux.

Je veux tester une idée, je crée une branche. On finit par se dire que
c'est nul, on efface la branche. Si inversement elle finit par faire
consensus, on fusionne. En attendant, ça se développe tranquillement,
commit par commit. Et surtout : avec git je peux faire mes commits en
*local* donc sans susciter des froncements de sourcil. À la fin de
l'après-midi je me rends compte que c'est pas si chouette, j'efface, ni
vu ni connu. Si inversement je me rends compte que je voudrais montrer
aux gens, je push ma *branche* de test d'un coup avec tous ses commits,
et j'attends les retours, mais au moins ces retours se feront sans
stress parce que tout le monde voit que c'est dans une branche de test
(la branche "master" restant inchangée), avec toute l'humilité et
l'incertitude que ça comporte.

Mine de rien, c'est exactement l'utilisation qui est faite de certains
plugins (par exemple pour le bandeau) : une fonctionnalité est testée
parce que tout le monde a conscience qu'il serait trop abstrait d'en
parler à l'avance dans le vide et que le voir en vrai serait plus
parlant, et quand/si ça semble être une amélioration, ça passe dans le
core. Sauf que créer un plugin, dans la démarche c'est quand même pas
aussi léger que créer une branche de test pour proposer une
fonctionnalité.

Du coup je pose vraiment la question de l'outil. Là je dis git parce
que je connais pas Mercurial, Darcs et consorts, mais de façon
générale je crois vraiment que des commits locaux + des branches faciles
feraient un bien fou au processus de développement de SPIP.

Z'en dites ?

Yop,

(Là il y avait plein plein de texte)

Z’en dites ?

Trop long … je lis pas … parce que ça amènera certainement des réponses tout aussi longues (ceci n’engage que moi)

Fais un article de blog?

kent1

Merci de cette intervention Davux, et plutôt d'accord.
Maintenant il y a une question de temps que ça prend:
serais-tu dispo pour le faire ?

Committo,Ergo:Sum

S'lt

Bon je me permets de réagir sur ce point qu'est l'outil de collaboration. :slight_smile:

L'outil ne résoudra jamais un problème de méthode de travail. Et là je
crois qu'on aborde bien un problème de méthodologie et non de comment
utiliser un outil.

Qu'on se le dise, git me semble une bonne idée, mais ce n'est pas en
l'amenant maintenant qu'on résoudra le problème sous jacent. On ne
rajoutera me semble t il qu'un problème de plus. Il faut le faire si
on a le temps et la disposition à accompagner un changement, être
accompagné et non être forcer à subir un changement.

Creer des branches à la volée ou merger des développements faits en
parallèl si on on n'a pas une minimum de méthodes/ de vision seront
tout aussi difficile avec git ou svn ou autre VCS.

Le problème dans un premier temps est d'avoir des définitions de
travail communes. Elles semblent être là mais mais des points de
divergences semblent se cristalliser.

Développer une fonctionnalité à tester dans une branche dite stable ou
voué à l'être ?
Quel consensus doit on attendre avant de pousser un dev à tel endroit
(branches) ?
Un plugin sur la zone pour ne pas se froisser ?
....

Km

12/06/10, cam.lafit@azerttyu.net:

L'outil ne résoudra jamais un problème de méthode de travail. Et là je
crois qu'on aborde bien un problème de méthodologie et non de comment
utiliser un outil.

Complètement d'accord : un bon outil n'est pas suffisant pour résoudre
un problème de méthodologie.
Par contre il est au moins nécessaire : si on a de bonnes intentions
mais que l'outil les rend difficilement applicables (par exemple amener
les changements majeurs par des branches de test, chose un peu lourde
en svn), on finit par ne pas les mettre en pratique, ou plus rarement.

Un plugin sur la zone pour ne pas se froisser ?

C'est une méthode possible, à l'exemple de Bonux qui sert de "branche de
test" polyvalente, Bandeau, et sûrement d'autres. Mais du coup est-ce
que cette utilisation d'un plugin sur la zone n'est finalement pas le
rôle d'une branche de test ? Dans ce cas, ça serait un palliatif pour un
besoin que ne fournit pas aisément l'outil actuel (svn), d'où la
question de peut-être à terme penser à un autre outil. C'est l'hypothèse
abordée dans mon premier mail, mais peut-être que je me trompe.

12/06/10, Ergo:sum:

Merci de cette intervention Davux, et plutôt d'accord.
Maintenant il y a une question de temps que ça prend:
serais-tu dispo pour le faire ?

Oulah, on n'en est pas là (ou suis-je trop frileux ?).

Changer à terme de système de révision est un mouvement délicat qui
devrait se faire seulement si un certain nombre de conditions étaient
remplies :
1. le plus important : un besoin ressenti et exprimé par tout le monde
   (ce qui est loin d'être le cas)
2. une palette d'outils équivalente pour continuer à travailler avec le
   nouveau système. Ça inclut les programmes pour committer, etc., mais
   également toute l'armada d'outils annexes (empaqueteur...). Bref
   retomber sur nos pieds, pour que le changement ne se traduise pas
   par une perte de capacités.
3. la mise au point d'une stratégie de transition si possible douce.
   Pour la zone ça serait de se dire par exemple qu'on met les nouveaux
   plugins sur la nouvelle plateforme (c'est juste un exemple inventé
   pour l'occasion, pas une proposition sérieuse).

Bref, pour moi c'est clair qu'on n'y est pas, ne serait-ce que pour le
premier point. Je propose simplement une réflexion sur l'outil (tout en
gardant en tête comme le rappelle Km que ça ne fait pas tout).

Je me permet d'intervenir tardivement sur ce fil car c'est un peu un thème qui me tient à coeur - d'aucun dirons que je radote :p.
Je ne crois pas du tout qu'un outil, aussi puissant soit-il règle à lui seul des problématiques de travail en commun.
Nous avons trop souvent, à mon avis, des réponses techniques à des problèmes qui n'en sont pas.

Le développement collaboratif AMHA doit d'avoir commencer par une réflexion partagée, avant tout.
Savoir tous où nous voulons aller me parait essentiel. Après le comment, je suis persuadé que l'on arrivera à un consensus rapidement.
Mais tant que les visions ne seront pas partagées, le collaboratif restera l'affaire de certains et aussi l'affaire d'outils nous permettant chacun de développer dans notre coin sur la même base.

Au delà du fait que changer d'outil ne résoudra pas les problèmes d'organisation, je suis plutôt d'accord que Git (ou autre système non centralisé) serait préférable.

SPIP est bien passé de FTP à CVS puis de CVS à Subversion, suivre le sens de l'histoire ne devrait pas faire plus peur que ça... :wink:

En plus, si c'est Git qui est retenu, ne serait-il pas intéressant de migrer vers un service comme Github, d'une part pour réduire les besoins de configuration spécifique à maintenir, et d'autre part profiter des facilités offertes par le service ?

(comme on a changé un peu de sujet, j'en change dans le mail)

14/06/10, Nicolas:

Au delà du fait que changer d'outil ne résoudra pas les problèmes
d'organisation, je suis plutôt d'accord que Git (ou autre système non
centralisé) serait préférable.

SPIP est bien passé de FTP à CVS puis de CVS à Subversion, suivre le
sens de l'histoire ne devrait pas faire plus peur que ça... :wink:

Ah oui tu es effectivement beaucoup moins frileux que moi, pour le
coup :slight_smile: À mon avis on en est pas encore du tout là ; dans la suite
je réponds juste sur le fond.

En plus, si c'est Git qui est retenu, ne serait-il pas intéressant de
migrer vers un service comme Github, d'une part pour réduire les
besoins de configuration spécifique à maintenir, et d'autre part
profiter des facilités offertes par le service ?

(Pour ceux qui ne connaissent pas, dans github et gitorious, les patches
se font par le biais de clonages de la branche master (opération rapide)
et de demande de merge quand le contributeur estime que c'est viable.
Si le patch est accepté, c'est mergé et le commit est donc au nom du
contributeur, avec la vraie date.)

*Migrer* vers github, bof, pour éviter justement la centralisation (le
fameux effet minitel qu'on évoque parfois). Par contre, on peut très
bien avoir *un* clone du dépôt sur github (et autres), et le merger
dans celui qui serait "chez SPIP" lorsque celui de github a reçu des
contributions. C'est comme cela que fonctionnent un bon nombre de
projets qui utilisent ce genre de services (d'autres fournissent juste
une vue en lecture).

Enfin bref, il y a tout un tas de réflexions et de perspectives
excellentes, mais je crois qu'on n'en est vraiment pas là. (Enfin si tu
dis que SPIP a déjà fait ça deux fois sans bobo, ça fait réfléchir.)

La différence fondamentale est que ces changements ftp->cvs->svn ne concernait que le core SPIP en lui même et un nombre très réduit de contributeurs du coup (moins de 5).
Depuis la zone a été crée et elle fédère plein de contributeurs plus ou moins expérimentés, qui se sont mis à SVN avec plus ou moins de facilité.
L'enjeu est de ne pas les perdre, justement, ce qui est plus compliqué qu'à l'époque des autres switch.

Cédric

En plus, si c'est Git qui est retenu, ne serait-il pas intéressant de
migrer vers un service comme Github, d'une part pour réduire les
besoins de configuration spécifique à maintenir, et d'autre part
profiter des facilités offertes par le service ?

(Pour ceux qui ne connaissent pas, dans github et gitorious, les patches
se font par le biais de clonages de la branche master (opération rapide)
et de demande de merge quand le contributeur estime que c'est viable.
Si le patch est accepté, c'est mergé et le commit est donc au nom du
contributeur, avec la vraie date.)

*Migrer* vers github, bof, pour éviter justement la centralisation (le
fameux effet minitel qu'on évoque parfois). Par contre, on peut très
bien avoir *un* clone du dépôt sur github (et autres), et le merger
dans celui qui serait "chez SPIP" lorsque celui de github a reçu des
contributions. C'est comme cela que fonctionnent un bon nombre de
projets qui utilisent ce genre de services (d'autres fournissent juste
une vue en lecture).

C'est une idée encore meilleure que ce que je proposais, oui.

Enfin bref, il y a tout un tas de réflexions et de perspectives
excellentes, mais je crois qu'on n'en est vraiment pas là. (Enfin si tu
dis que SPIP a déjà fait ça deux fois sans bobo, ça fait réfléchir.)

C'est juste une réflexion à lancer, je ne dis pas qu'il faut le faire tout de suite.

-Nicolas

C'est l'avantage de Github sur d'autres serveurs Git, certaines commandes svn sont compatibles...

-Nicolas

Pour ceux qui ne connaissent pas :
http://github.com/blog/626-announcing-svn-support

-Nicolas

Pour ceux qui ne connaissent pas :
Announcing SVN Support - The GitHub Blog

et depuis peu en écriture (mais pas encore fiable) :

du coup ça paraît être une bonne voie de migration possible.
On commence quand ? et par quoi ?

-- Fil

Pour ceux qui ne connaissent pas :
Announcing SVN Support - The GitHub Blog

et depuis peu en écriture (mais pas encore fiable) :
Subversion Write Support - The GitHub Blog

Au dela de la fiabilité, il y a surtout un problème de fonctionnalités incomplètes, dont l'impossibilité de checkouter un dossier (un plugin par exemple) plutôt que le repository complet (toute la zone), ce qui paraît très limitant...

du coup ça paraît être une bonne voie de migration possible.
On commence quand ? et par quoi ?

-- Fil

-Nicolas

14/06/10, Nicolas:

Au dela de la fiabilité, il y a surtout un problème de
fonctionnalités incomplètes, dont l'impossibilité de checkouter un
dossier (un plugin par exemple) plutôt que le repository complet
(toute la zone), ce qui paraît très limitant...

On est pas obligés de se dire que le dépôt c'est toute la zone. Je sais
pas comment fonctionne github, mais par exemple dans gitorious il y a
une notion de projets et de plusieurs dépôts par projet. Donc le projet
serait SPIP-Zone, et il y aurait un dépôt par plugin. Ça me semblerait
un peu plus censé, en empêchant juste les commits sur plusieurs plugins
en même temps, mais l'un dans l'autre ça me semble quand même plus
sensé.

Ah oui, pas bête du tout !!!

Sur Github, ce serait un compte "SPIP zone", et autant de projets que de plugins par exemple.

Ou alors, tout simplement, le plugin est un projet de son créateur, mais on risque de perdre certains plugins quand le créateur s'en va, si ça n'a pas été forké au préalable..

-Nicolas

et depuis peu en écriture (mais pas encore fiable) :
Subversion Write Support - The GitHub Blog

Au dela de la fiabilité, il y a surtout un problème de fonctionnalités incomplètes, dont l'impossibilité de checkouter un dossier (un plugin par exemple) plutôt que le repository complet (toute la zone), ce qui paraît très limitant...

Si l'idée est de ne perdre personne lors de la migration, il faut que
celui qui n'a pas le temps de se former à git continue à utiliser SVN,
mais ce n'est pas très grave si c'est un peu dégradé.

D'autre part, il me semble que "toute la zone" ne serait pas un
repository unique, mais deviendrait bien "250 projets distincts" ?

Enfin pour essayer, j'ai mis les crayons sur mon compte
http://github.com/Fil/tests ; il m'indique "révision: 60", mais je
n'ai pas encore réussi à y commiter...

-- Fil

et depuis peu en écriture (mais pas encore fiable) :
Subversion Write Support - The GitHub Blog

Au dela de la fiabilité, il y a surtout un problème de fonctionnalités incomplètes, dont l'impossibilité de checkouter un dossier (un plugin par exemple) plutôt que le repository complet (toute la zone), ce qui paraît très limitant...

Si l'idée est de ne perdre personne lors de la migration, il faut que
celui qui n'a pas le temps de se former à git continue à utiliser SVN,
mais ce n'est pas très grave si c'est un peu dégradé.

OK

D'autre part, il me semble que "toute la zone" ne serait pas un
repository unique, mais deviendrait bien "250 projets distincts" ?

Mais du coup, des projets créés avec un compte "SPIP Zone", ou avec le compte de chaque créateur de plugin/squelette/outil/etc. ?

Enfin pour essayer, j'ai mis les crayons sur mon compte
http://github.com/Fil/tests ; il m'indique "révision: 60", mais je
n'ai pas encore réussi à y commiter...

Quel outil utilises-tu ?

-Nicolas

14/06/10, Fil:

Si l'idée est de ne perdre personne lors de la migration, il faut que
celui qui n'a pas le temps de se former à git continue à utiliser SVN,
mais ce n'est pas très grave si c'est un peu dégradé.

Ok du coup on pourrait se dire par exemple que le dépôt officiel est
sur Gitorious pour avoir cette notion d'équipe et tout, mais que les
gens sous svn peuvent committer vers github, et que quelques personnes
se chargent de merger régulièrement vers gitorious. Faudrait quand
même faire une simulation mais ça me semble jouable.

L'avantage que je vois à Gitorious, outre cette notion d'équipe et de
dépôts multiples pour un projet, c'est que le logiciel Gitorious existe
aussi en version téléchargeable. Ça fait que le jour où on veut être
autonomes sur notre hébergement, on peut se mettre une instance de
Gitorious, et on aura une interface qu'on connaît déjà.

D'autre part, il me semble que "toute la zone" ne serait pas un
repository unique, mais deviendrait bien "250 projets distincts" ?

Sur github y'a pas de notion de projets, juste de dépôts. Du coup ça
serait 250 dépôts d'un même utilisateur "spip-zone", le problème étant
que pour autoriser tout le monde à collaborer aux 250 projets, ça va
être trop chiant. Mais de toute façon tout le monde ne bosse pas sur 50
plugins différents, du coup si on se dit qu'on gère ça juste pour les
gens sous SVN et que tranquillou on essaie de se mettre à utiliser du
Git en natif, ça devrait le faire.

Enfin pour essayer, j'ai mis les crayons sur mon compte
http://github.com/Fil/tests ; il m'indique "révision: 60", mais je
n'ai pas encore réussi à y commiter...

Je crois que quand tu importes ton dépôt svn:// il te demande un nom et
adresse mail d'auteur Git pour chaque auteur de commit svn, qu'il faut
mettre sous la forme : John Wayne <john@wayne.com>.