Introduction
Les projets open source sont souvent confrontés à des retards importants dans l'examen et la mise en œuvre des demandes de tirage (PR). Un exemple concret est le projet Jellyfin, où une demande de tirage a attendu plus d'un an avant d'être examinée. Ce phénomène n'est pas unique à Jellyfin, car de nombreux projets open source populaires rencontrent les mêmes difficultés.
Contexte Technique
Les mécanismes de traitement des demandes de tirage dans les projets open source sont souvent basés sur des principes de développement de produits et de théorie des files d'attente. Selon le livre « The Principles of Product Development Flow » de Donald Reinertsen, lorsque les ressources sont proches de 100 % d'utilisation, les files d'attente augmentent de manière exponentielle, et non linéaire. Cela signifie que même de petites augmentations de la charge de travail peuvent entraîner des retards importants.
Le projet Jellyfin a environ 200 demandes de tirage ouvertes et fusionne environ 20 à 35 demandes de code réelles par mois. Cependant, les fonctionnalités ne représentent que 21 % des demandes de tirage fusionnées, les corrections de bogues étant prioritaires. Le mainteneur du projet a indiqué que chaque seconde non consacrée à l'examen des demandes de tirage aggrave la situation.
Analyse et Implications
L'analyse des données montre que les demandes de tirage plus importantes prennent plus de temps à examiner, ce qui entraîne une accumulation de demandes de tirage. Les contributeurs qui voient cette accumulation peuvent décider de regrouper plus de changements dans une seule demande de tirage, ce qui augmente la taille des demandes de tirage et ralentit les examens. Ce phénomène est appelé « Batch Size Death Spiral ».
Les retards dans l'examen des demandes de tirage peuvent entraîner des coûts importants, notamment la perte de contexte et la nécessité de réexaminer les changements. Une étude a montré que les contributeurs abandonnent souvent leurs demandes de tirage en raison des obstacles rencontrés et des hurdles imposés par les mainteneurs pendant l'examen.
Perspective
Pour améliorer la situation, il est possible de mettre en place des limites de taille pour les demandes de tirage, de prioriser les demandes de tirage en fonction de leur valeur et de limiter le nombre de demandes de tirage en cours d'examen. Il est également important de protéger le temps des mainteneurs en automatisant les tâches répétitives et en filtrant les demandes de tirage de mauvaise qualité. Enfin, il est essentiel de communiquer clairement avec les contributeurs et de leur fournir des retours rapides et réguliers sur l'état de leurs demandes de tirage.