Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Améliore template de pull request #962

Merged
merged 14 commits into from
Apr 16, 2018
Merged

Améliore template de pull request #962

merged 14 commits into from
Apr 16, 2018

Conversation

bonjourmauko
Copy link
Member

@bonjourmauko bonjourmauko commented Apr 5, 2018

  • Changement mineur.
  • Zones impactées : .github/PULL_REQUEST_TEMPLATE.md.
  • Détails :
    • Amélioration du template de ce message-ci.
    • Ajout d'une liste de casses à cocher avec de bonnes conseils pour rédiger une belle pull request.

Ces changements :

  • Modifient des éléments non fonctionnels de ce dépôt (par exemple modification du README).

@@ -11,7 +11,17 @@ Merci de contribuer à OpenFisca ! Effacez cette ligne ainsi que, pour chaque li

Ces changements _(effacez les lignes ne correspondant pas à votre cas)_ :

- Impactent l'API publique d'OpenFisca France (par exemple renommage ou suppression de variables).
- Breaking-change de l'API publique d'OpenFisca France (par exemple renommage ou suppression de variables).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L'utilisation de termes anglais est dommage.

Que penses-tu de :

Impactent (sans rétro-compatibilité) l'API publique…

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui, n'oublions pas que le template sert principalement à aider des contributeurs qui sont novices dans le maintien de librairie open source à qualifier la nature de leurs changement.

Evitons le jargon

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai du mal à comprendre en quoi ajouter ce détail va aider des utilisateurs novices à n'effacer la ligne que dans le cas où c'est pertinent, même en français. Je préfère avoir un faux positif de non-rétro-compatibilité et le corriger à la revue que laisser passer un breaking change.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merci pour les retours, ce n'était pas un sujet de périmètre mais de vocabulaire, le mot « impactent » étant un peu difficile à saisir. D'autres options :

  • Modifient
  • Introduisent un changement à

Copy link
Member

@benjello benjello left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as @guillett


Tips avant de demander une review :

- [ ] J'ai fait un rebase à partir de [`master`](https://git-scm.com/docs/git-rebase)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne suis pas sûr que ça vaille le coup d'imposer ça aux contributeurs.

D'une part, c'est une manipulation qui n'est pas triviale pour ceux qui débutent avec git.
D'autre part, de toute façon, entre le moment où la revue est demandée et celui où elle la PR est approuvée, il est très probable qu'une autre branche ait été mergée, et donc qu'un rebase soit à nouveau nécessaire.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui d'accord avec toi, mais je voudrais comme même donner un « tip », plutôt que de l'imposer. Peut-être cela serait mieux de dire « faire un rebase régulièrement » ou « faîtes de pull requests petites ».

D'une part, c'est une manipulation qui n'est pas triviale pour ceux qui débutent avec git.

Cela c'est un problème plus général : pour quelqu'un qui corrige un typo dans la doc, et qui créé une pull request à partir d'un fork, et que sa branch devienne outdated, comment pourrait-on faire pour que cela soit simple de pouvoir merger sans devoir faire un rebase ?

Copy link
Member

@fpagnoux fpagnoux Apr 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comment pourrait-on faire pour que cela soit simple de pouvoir merger sans devoir faire un rebase

Sans faire de rebase c'est un no-go pour moi, ça veut dire remplacer par des merge upstream et ça devient vite très sale. Après, ça pourrait être plus simple de rebaser via l'UI de Github 😞 : isaacs/github#88.

Peut-être cela serait mieux de dire « faire un rebase régulièrement »

Régulièrement je ne sais pas, on ne veut pas non plus encourager des rebases en milieu de revue. Donc a priori on rebase seulement à deux moments : à l'ouverture avant la demande de review, et après l'approbation.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ça pourrait être plus simple de rebaser via l'UI de Github

Attention, l'implémentation du rebase de l'UI de GitHub est un rebase + fast-forward, là où la politique qu'on a mise en place est un rebase + merge --no-ff.
En termes de lisibilité de l'historique, je trouve ça très différent. À noter également que dans 90% des cas ce sera impossible à faire puisqu'il y aura un conflit sur le change log et sur le numéro de version.


- [ ] J'ai fait un rebase à partir de [`master`](https://git-scm.com/docs/git-rebase)
- [ ] J'ai mis à jour le [`CHANGELOG.md`](https://github.com/openfisca/openfisca-france/blob/master/CONTRIBUTING.md#format-du-changelog)
- [ ] J'ai mis à jour les références législatives (si cela s'applique)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dans quel cas cela s'applique ?

Copy link
Member

@guillett guillett Apr 5, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est peut-être :

J'ai documenté ma contribution avec des références législatives.

Copy link
Member

@MattiSG MattiSG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai l'impression que l'accélération des revues est surtout nécessaire pour les contributeurs novices, mais que les formulations de ce changeset ne les visent pas spécifiquement.

@@ -1,4 +1,4 @@
Merci de contribuer à OpenFisca ! Effacez cette ligne ainsi que, pour chaque ligne ci-dessous, les cas ne concernant pas votre contribution :)
Merci de contribuer à OpenFisca ! **Effacez cette ligne ainsi que, pour chaque ligne ci-dessous, les cas ne concernant pas votre contribution** :)
Copy link
Member

@MattiSG MattiSG Apr 5, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le Markdown n'est de toute façon pas rendu en aperçu dans le template, les astérisques ne permettront donc pas de faire apparaître cette phrase en gras.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

De toute façon, il y a déjà du markdown dans la ligne 12 :

(effacez les lignes ne correspondant pas à votre cas)

@@ -11,7 +11,17 @@ Merci de contribuer à OpenFisca ! Effacez cette ligne ainsi que, pour chaque li

Ces changements _(effacez les lignes ne correspondant pas à votre cas)_ :

- Impactent l'API publique d'OpenFisca France (par exemple renommage ou suppression de variables).
- Breaking-change de l'API publique d'OpenFisca France (par exemple renommage ou suppression de variables).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai du mal à comprendre en quoi ajouter ce détail va aider des utilisateurs novices à n'effacer la ligne que dans le cas où c'est pertinent, même en français. Je préfère avoir un faux positif de non-rétro-compatibilité et le corriger à la revue que laisser passer un breaking change.


- - - -

Tips avant de demander une review :
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trop d'anglais, et la notion même de "demande de review" n'est pas forcément évidente pour un premier contributeur : garder la confusion Pull Request / Peer Review me semble simple. Si la personne est déjà en train d'ouvrir une PR, je ne crois pas qu'on doive lui suggérer que demander une review est un processus indépendant.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En plus, il me semble qu'il faut être membre de l'organisation pour pouvoir demander une revue. Donc on peut s'attendre à ce qu'une minorité non-négligeable de contributeurs ne puisse pas le faire.

Tips avant de demander une review :

- [ ] J'ai fait un rebase à partir de [`master`](https://git-scm.com/docs/git-rebase)
- [ ] J'ai mis à jour le [`CHANGELOG.md`](https://github.com/openfisca/openfisca-france/blob/master/CONTRIBUTING.md#format-du-changelog)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La CI le dira déjà.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui mais c'est un goulet d'étranglement aujourd'hui, car prend beaucoup de temps. L'idée c'est de le prendre en compte à l'avance.

- [ ] J'ai fait un rebase à partir de [`master`](https://git-scm.com/docs/git-rebase)
- [ ] J'ai mis à jour le [`CHANGELOG.md`](https://github.com/openfisca/openfisca-france/blob/master/CONTRIBUTING.md#format-du-changelog)
- [ ] J'ai mis à jour les références législatives (si cela s'applique)
- [ ] J'ai crée / modifié les tests qui correspondent au changements (si cela s'applique)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Limitons le nombre de points de décision : je ne suis pas sûr que "si cela s'applique" aide beaucoup.

- [ ] J'ai mis à jour le [`CHANGELOG.md`](https://github.com/openfisca/openfisca-france/blob/master/CONTRIBUTING.md#format-du-changelog)
- [ ] J'ai mis à jour les références législatives (si cela s'applique)
- [ ] J'ai crée / modifié les tests qui correspondent au changements (si cela s'applique)
- [ ] J'ai augmenté le numéro de version dans [`setup.py`](https://github.com/openfisca/openfisca-france/blob/master/setup.py)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok pour essayer si vous pensez que c'est un point de frustration récurrent, mais je suis dubitatif sur l'effet. SemVer n'est pas évident à comprendre, surtout pour des novices, et la probabilité que le numéro de version doive être à nouveau incrémenté lors du merge en raison d'autres merges ayant eu lieu en parallèle est élevée.

L'objectif en demandant de choisir entre Évolution du système socio-fiscal. | Amélioration technique. | Correction d'un crash. | Changement mineur. consistait à aider les mainteneurs à incrémenter le numéro de version correctement. En faisant des retours sur le sujet à chaque fois que ça n'est pas fait, on peut petit à petit faire monter en compétence les contributeurs.

@MattiSG
Copy link
Member

MattiSG commented Apr 9, 2018 via email

@MattiSG
Copy link
Member

MattiSG commented Apr 9, 2018 via email

@fpagnoux
Copy link
Member

fpagnoux commented Apr 10, 2018

Enfin, si l'un des problèmes non explicités est les conflits rencontrés par les mainteneurs au rebase, il existe des solutions techniques pour limiter ces effets que je serai heureux de présenter si besoin.

Ça m'intéresse !

Quelques conseils à prendre en compte :

- Documenter ma contribution avec des références législatives.
- Mettre à jour ou ajouter les tests qui correspondent à ma contribution.
Copy link
Member

@fpagnoux fpagnoux Apr 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

les des tests ?


Quelques conseils à prendre en compte :

- Documenter ma contribution avec des références législatives.
Copy link
Member

@fpagnoux fpagnoux Apr 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je trouve que l'infinitif + première personne du singulier (documenter ma contribution) passe mal après l'impératif (effacez les lignes).

Je n'ai rien à proposer tout de suite, désolé, mais il doit être possible de trouver une formulation plus cohérente.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'aime bien le format cases à cocher, par exemple pour brew.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dans ce cas là, il faudrait poser plutôt des questions... Voici quelques questions à prendre en compte ... Cela ne marche pas très bien...

@fpagnoux
Copy link
Member

Je suis plutôt en phase sur le fond avec la version actuelle des tips, merci pour les adaptations 🙂.

@MattiSG
Copy link
Member

MattiSG commented Apr 10, 2018

Ça m'intéresse !

Pour détecter les problèmes au plus tôt, git-octopus permet de détecter en continu le premier commit qui introduit un conflit avec une autre branche. Cela donne à la fois un nudge pour faire des PR courtes et un feedback précoce sur les conflits futurs.

@bonjourmauko
Copy link
Member Author

A. Externaliser le rebase sur les contributeurs.

Il y a deux cas ici :

  • les contributeurs qui ne font pas partie des contributeurs Github : dans ce cas, une pull request devra toujours faire l'objet d'un ou de plusieurs rebase, plus ou moins compliqués, qui ne pourront de toute façon pas être faits par les maintainers. Exemple simple et compliqué. C'est ici où je crois qu'il faut faire évoluer le workflow.

  • les contributeurs qui font partie des contributeurs, comme ici. Dans ce deuxième cas, je ne vois pas d'autre moyen que la pédagogie, et c'est là où je trouve que

C. Augmenter progressivement le nombre de contraintes appliquées aux contributeurs, en créant l'équivalent d'un « budget de relecture » que les mainteneurs passent à examiner des contributions.

c'est intéressant.

D. Abandonner la lisibilité de l'historique et basculer vers un système de merge autorisant le merge upstream.

Aujourd'hui Github propose d'intégrer des changements upstream on utilisant trois stratégies différentes : rebase, squash et merge. Peut-être qu'il faudrait y jeter un oeil. Cela dit, c'en est une solution conditionnée à la taille des PR IMHO, car les gros PRs seront toujours impossibles de rebaser automatiquement.

J'ai enlevé le « tip » pour faire rebase, car en réfléchissant c'est un art difficile et difficile à bien maîtriser. Vous m'avez convaincu que c'est un no-go de l'externaliser (au moins pour les arrivant·e·s).

Enfin, si l'un des problèmes non explicités est les conflits rencontrés par les mainteneurs au rebase, il existe des solutions techniques pour limiter ces effets que je serai heureux de présenter si besoin.

😃 Tell me more!

Pour détecter les problèmes au plus tôt, git-octopus permet de détecter en continu le premier commit qui introduit un conflit avec une autre branche. Cela donne à la fois un nudge pour faire des PR courtes et un feedback précoce sur les conflits futurs

C'est intéressant, mais je ne sais pas à quel point c'est trop intégré avec git-flow (je ne suis pas hyper à l'aise avec les workflows « normatifs »).

De toutes les manières, tant le « budget de relecture » comme git-octopus vont dans le sens des nudges pour augmenter progressivement le nombre de contraintes appliquées aux contributeurs.

Une dernière idée serait de favoriser le partage du work-in-progress, pour faire un accompagnement plus dans la durée et pas seulement à la fin, mais cela ne s'appliquerait qu'aux contributeurs qui font déjà partie de la communauté.

@MattiSG
Copy link
Member

MattiSG commented Apr 10, 2018

je ne sais pas à quel point c'est trop intégré avec git-flow

Ça ne l'est pas : tu donnes N branches, octopus fait les merge avec différentes stratégies et fait un diagnostic en cas de conflit. L'exemple donné est avec features/*, mais tu peux utiliser n'importe quel nom de branche.

Github propose d'intégrer des changements upstream on utilisant trois stratégies différentes : rebase, squash et merge

Attention, le rebase proposé n'est pas forcément celui auquel vous pensez, et je crois que de toute façon l'UI ne fonctionnera pas pour l'intégration finale car il y aura toujours un conflit sur changelog et setup.py, cf. #962 (comment).

@fpagnoux
Copy link
Member

fpagnoux commented Apr 10, 2018

Sur openfisca/openfisca-doc#108, et en général les contributeurs externes à l'orga github, je ne sais pas si le seul problème est le rebase.

J'ai l'impression que les tests Circle ne sont pas déclenchés, et que c'est aussi ça qui bloque le merge.

qui ne pourront de toute façon pas être faits par les maintainers

Il est toujours possible de faire une copie de la branche sur le repo upstream, et de la rebaser (quitte à ouvrir une nouvelle PR qui remplace celle du contributeur). Ce n'est pas parfait, et je suis preneur si on trouve mieux, mais ça me paraît plus réaliste que d'expliquer à distance à un nouveau contributeur comment faire un rebase à la sauce openfisca :)

EDIT: Plus simple, il est possible d'éditer la branche (y compris force-push) du repo d'un contributeur externe s'il existe une pull request ouverte depuis cette branche sur un de nos repos. La seule chose à faire pour pouvoir rebaser est donc de récupérer sa branche, en ajoutant temporairement son remote sur notre version locale du dépôt. Je viens de le faire pour openfisca/openfisca-doc#108, ça m'a pris 2 minutes:

git remote add pa git@github.com:pachevalier/openfisca-doc.git
git fetch --all
git checkout patch-1
git rebase origin/master
git push --force

@fpagnoux
Copy link
Member

Il y a un point de config Circle à changer, je m'en occupe:

image

@fpagnoux
Copy link
Member

fpagnoux commented Apr 10, 2018

Sur #881, je ne sais pas si on a eu des contacts via d'autres medias que Github avec le contributeur, mais je ne suis pas sûr que le rebase soit la plus grosse difficulté, relativement à:

  • Trier les changements légitimes dans un gros change set qui est loin d'être prêt à merger
  • Répondre en un temps raisonnable à la PR, qui a l'air un peu triste depuis fin janvier
  • Prendre en charge le contributeur en amont pour lui donner quelques conseils (difficile si le 1er contact est l'ouverture de PR, mais ce n'est pas toujours le cas)

@bonjourmauko
Copy link
Member Author

@fpagnoux

Sur #881, je ne sais pas si on a eu des contacts via d'autres medias que Github avec le contributeur, mais je ne suis pas sûr que le rebase soit la plus grosse difficulté

Oui contact IRL pendant la démo, où il nous a montré sont travail et nous l'avons invité à créer la pull request.

Trier les changements légitimes dans un gros change set qui est loin d'être prêt à merger

👍

Répondre en un temps raisonnable à la PR, qui a l'air un peu triste depuis fin janvier

👍

Prendre en charge le contributeur en amont pour lui donner quelques conseils (difficile si le 1er contact est l'ouverture de PR, mais ce n'est pas toujours le cas)

Oui. Dans ce cas, le gros du travail avait déjà été fait.

@bonjourmauko
Copy link
Member Author

J'ai pris en compte toutes vos remarques, merci de m'indiquer s'il reste pour vous de choses à améliorer avant que ce soit bon pour merger @MattiSG @fpagnoux @benjello @guillett

Copy link
Member

@fpagnoux fpagnoux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mergeable pour moi (je me suis permis 2 micro-corrections)

Quelques conseils à prendre en compte :

- [ ] Jetez un coup d'œil au [guide de contribution](CONTRIBUTING.md).
- [ ] Regardez s'il n'y a pas une [proposition introduisant ces mêmes changements](https://github.com/openfisca/openfisca-france/pulls).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je crois pas que le problème se soit jamais posé jusqu'à aujourd'hui

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cela c'est fléché collaboration avec la MSA poke @guillett

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants