Technique

La gestion des requêtes d’extraction chez Elastic

Chez Elastic, il n’y a qu’un seul mot d’ordre : la collaboration.

Pour développer de nouveaux produits et de nouvelles fonctionnalités, nos ingénieurs travaillent H24 (on peut le dire, puisque notre entreprise est implantée dans de nombreux pays). La somme de travail est colossale, et nous devons prêter attention aux moindres détails. Mais, même si nous faisons preuve du plus grand soin, nous ne sommes pas parfaits. Notre projet open source est complexe, et nous comptons sur la communauté pour nous aider à l’améliorer.

Dans l’article Solving the Small but Important Issues with Fix-It Fridays (Résoudre les problèmes légers mais importants lors des vendredis de la résolution), nous expliquons en quoi les contributions de notre communauté sont la clé de notre succès dans le développement de produits. Le grand avantage des projets open source comme le nôtre, c’est que nous pouvons compter sur une vaste communauté de développeurs qui traquent les bugs sans relâche pour les éliminer.

Vous êtes nouveau dans la communauté ? Vous souhaitez soumettre votre première requête d’extraction ? Vous avez des questions sur le processus ? Vous êtes au bon endroit ! Dans cet article, nous allons vous expliquer comment les requêtes d’extraction fonctionnent pour Elastic, ce qu’il se passe lorsque nous en recevons une et comment éviter les erreurs fréquentes qui risquent de nuire à votre contribution.

Première question : comment soumettre une requête d’extraction ?

Avant de soumettre une requête d’extraction, vous devez créer un fork dans un référentiel GITHUB et effectuer un changement de code. En général, cela se fait avec votre compte GitHub, qui crée une copie du référentiel source pour vous. Tous nos projets résident dans leur propre référentiel GitHub. Pour obtenir une liste complète de ces référentiels, rendez-vous sur la page dédiée à Elastic sur le site web de GitHub. 

Une fois le fork créé et le code changé, vous devrez indiquer si vous souhaitez créer une requête d’extraction pour faire remonter les changements suggérés à l’embranchement principal du référentiel du produit. Prenons l’exemple du référentiel Elasticsearch ci-dessous. (Dans un souci de simplicité, tous les exemples illustrés dans cet article viendront du référentiel Elasticsearch.)

Lorsque vous cliquez sur « New Pull Request » (Nouvelle requête d’extraction), notre modèle de requête d’extraction s’affiche.

Ce modèle vous donne des indications qui permettront à votre requête d’extraction d’être recevable pour un premier examen. Attention : lisez bien les instructions étant donné que chaque produit dispose de son propre ensemble de critères et de documents.

Lors de la soumission, veillez à ne pas commettre ces erreurs fréquentes :

  • Soumission de doublons : vérifiez tout d’abord s’il existe ou non une requête d’extraction concernant le bug que vous essayez de résoudre. Les doublons sont généralement rejetés.
  • Aucun test inclus : une requête d’extraction comprenant un changement de code doit inclure un test qui illustre le comportement du nouveau code. Dans l’idéal, ce test doit reproduire le problème que la requête d’extraction cherche à résoudre : échec en l’absence de code et réussite si le code est appliqué.
  • Embranchement principal uniquement : vérifiez que les requêtes d’extraction qui changent le code soient appliquées à l’embranchement principal du référentiel approprié.

Lorsque toutes les exigences indiquées dans le modèle sont satisfaites, cliquez sur « Create Pull Requests » (Créer des requêtes d’extraction). Désormais, la balle est dans votre camp.

Tri et balisage

Pour commencer, vous devez vérifier que la requête d’extraction se présente en bonne et due forme (comme mentionné ci-dessus). Si c’est le cas, définissez une balise pour qu’elle soit transférée à l’équipe appropriée afin d’être examinée. Exemples de balises : >bug, >feature, etc. Dès qu’une balise est définie pour la requête, cette dernière est attribuée à l’équipe appropriée. À ce stade, c’est l’équipe en charge du domaine concerné qui s’occupe de la requête.

Début du processus

Une fois la balise définie, la requête est prise en charge par l’un de nos développeurs. Nous essayons de vous répondre aussi vite que possible. Toutefois, traiter la requête de façon appropriée peut prendre du temps, et le moins qu’on puisse dire, c’est que nous ne chômons pas vu le nombre et la complexité des requêtes que nous recevons chaque jour. Merci de votre patience ! 

Soumission de changements concernant la documentation

Remarque : Nous recevons également un certain nombre de requêtes d’extraction qui modifient ou demandent à modifier nos documents. Le traitement de ces requêtes est bien plus simple que celles concernant un changement de code. Il suffit de cliquer sur « Edit » (Modifier) sur la page des documents Elastic, apporter les changements, puis soumettre la requête. Pas besoin de créer de fork dans un projet, ni de faire de test. Pour ce type de requête, nous définissons la balise « >doc » et traitons la requête aussi vite que possible.

Bien souvent, le travail ne s’arrête pas là.

En général, une requête d’extraction doit être adaptée avant qu’elle ne puisse être fusionnée. C’est là qu’elle ouvre la voie à la collaboration : des discussions ont lieu, des changements sont proposés et d’autres engagements sont pris.

Lors de l’examen, nous effectuons des tests sur la requête. Les résultats de ces tests sont consultables sur GitHub. Dans certains cas, le test peut échouer après que les changements ont été appliqués à la requête d’extraction, même si les tests inclus dans la requête fonctionnaient. Cela ne signe pas pour autant la fin des tests. Nous vous aiderons à corriger le code proposé afin que tous les tests réussissent.

Le style du code, ainsi que les conventions de code et de dénomination, sont également des éléments que nous étudions à ce stade. Les utilisateurs qui soumettent des requêtes d’extraction peuvent s’attendre à ce que leur code subisse au moins une révision supplémentaire. Un code n’est jamais parfait (pas même le nôtre !), ni prêt à être fusionné en l’état lorsqu’il est soumis. Il y aura donc un grand travail de collaboration pour l’améliorer.

Sous combien de temps une requête d’extraction est-elle validée ?

Il n’y a pas de règles, tout dépend de la requête. Une ligne de code simple peut être traitée en deux temps trois mouvements, mais les changements de code complexes feront l’objet de plusieurs révisions. Si vous trouvez qu’il n’y a aucune évolution dans le traitement de votre requête depuis quelque temps, n’hésitez pas à envoyer une requête ping pour rappeler que votre requête est toujours d’actualité.

Validation du code

Lorsque tout est OK, les réviseurs ajoutent un commentaire avec l’approbation (p. ex. « OK pour moi » ou quelque chose dans le style). Une fois la requête d’extraction acceptée, un développeur Elastic la fusionne dans l’embranchement principal, puis répercute le changement dans les embranchements de développement selon les besoins.

En gros, voilà comment ça fonctionne. Évidemment, les requêtes d’extraction ne sont pas toutes les mêmes. Le processus peut être simple ou complexe. Et pour bien connaître le processus, il n’y a qu’une seule chose à faire : se retrousser les manches !

Prêt à soumettre votre première requête ? Jetez un œil aux référentiels d’Elastic disponibles sur GitHub, familiarisez-vous avec les instructions, et lancez-vous ! Si vous avez d’autres questions sur le processus, consultez sur nos forums de discussion, créez un sujet, et nous y répondrons avec plaisir.