Ce qui suit n'est que mon modeste point de vue : je ne suis ni contributeur au code, ni expert en gestion de projet.
Bonjour à tous,
Ce sujet a soulevé un certain nombre de problèmes qu'il est nécessaire, je pense, de régler dans les plus brefs délais. J'ouvre donc le débat pour déterminer ce qu'il ne va pas actuellement dans la gestion du projet et comment on pourrait y remédier. Ce message se veut une amélioration de celui-ci.
Il m'est avis que le souci majeur est le manque d'organisation.
Premièrement, il y en a dans tous les sens : dans la Dev Zone, dans le forum des bugs et des suggestions, sur IRC, sur Github… Certains problèmes sont répertoriés sur l'un et pas sur l'autre, certains débats ont lieu sur l'autre et pas sur l'un… Se mettre à la page et, encore pire, intégrer l'équipe de développement devient laborieux (sans compter les points considérés dans le sujet mentionné ci-dessus). Il faudrait centraliser ou alors synchroniser.
Mais ce bazar ne sort pas de nulle part. Pour moi, il est dû à un manque de suivi des activités et à l’absence d'attribution de rôles clairs. Des issues sont ouvertes à tout va, certaines ZEPs sont commencées par certaines personnes… En fin de compte, j'ai l'impression que chacun ignore qui fait quoi, quand, avec qui… Et si on ignore cela, comment peut-on se décider à intégrer une équipe de résolution d'issue ? Certes, il est laborieux d'établir un planning rigoureux pour les problèmes mineurs, mais il faudrait au moins le faire pour les ZEPs.
Tout cela a un impact non négligeable sur le flot de nouveaux contributeurs. Aujourd'hui, il me semble qu'on a atteint un point auquel seuls ceux réguliers peuvent comprendre le code, sa structure et l'organisation globale, uniquement du fait de leur habitude. Vous imaginez le mec qui connait pas Github ? Avant même d'être confronté au calvaire de l'installation, il est découragé par le manque de clarté : « mais… je fais quoi moi ? Où ? Comment ? Avec qui ? On m'avait pourtant dit que tout le monde était le bienvenu… l'accueil s'il vous plait ? ». Je suis tout à fait conscient que l'équipe est ouverte, qu'une personne se portera volontaire pour répondre aux questions… Mais autant le faire systématiquement, non ? En écrivant, bien visiblement, tout ce qu'un contributeur potentiel devrait savoir pour devenir autonome.
C'est pourquoi je suggère de faire une pause dans la course aux nouvelles features et de pallier aux manques actuels. Plusieurs suggestions :
- Une documentation claire et complète :
Première chose, expliquer l'installation du site de sorte que ce soit simple à effectuer (cf : le sujet mentionné plus haut) : les contributeurs au code sont bénévoles et ne souhaitent pas nécessairement faire cent mille réglages avant de pouvoir apporter leur pierre à l'édifice.
Éclaircir la structure globale du projet, l'agencement des dossiers et des fichiers. Bien que les noms soient explicites, il faudrait pouvoir atteindre la partie du code ciblée quasiment sans chercher. Autrement dit, donner une vision globale du code (peut-être que des connaissances en Django sont requises).
Expliciter les concepts. Un tutoriel, comment c'est représenté ? L'éditeur markdown, il repose sur quoi ? Etc.
- Un code propre :
Une fois qu'on a déniché le fichier auquel on souhaite apporter des modifications, on aimerait bien comprendre le code rapidement. Pour cela, il faut qu'on ait des repères, ce qui n'est possible qu'avec un code uniforme. D'où : un code en anglais (par exemple, mais ça me semble nécessaire) et respectant des conventions (PEP8 obligatoire). En outre, les commentaires sont indispensables : ils permettent d'éclairer les passages obscurs et un peu techniques mais aussi de se déplacer rapidement parmi les fonctions.
Une PR ne devrait pas être mergée si elle ne respecte pas ces critères (et/ou d'autres).
- Une organisation solide :
Comme précisé, je ne suis pas un expert en la matière, ce sujet en témoigne. La meilleure façon de faire, me semble-t-il, c'est de tout planifier (ou presque) : faire comme pour les ZEPs, mais dans tout le projet.
En premier lieu, on constate le problème, le besoin, le truc à faire. Souvent, ça passe par les forums « Dev Zone » et « Bugs et suggestions ». On le définit clairement. Puis on décide de la méthode pour le résoudre et on explicite cette méthode : on dit ce qu'on va faire avant de le faire. Ce que m'a conseillé GuilOooo dans le sujet ci-dessus fonctionne très bien : on fait comme si on devait expliquer à un autre comment il doit s'y prendre, histoire que ça ne soit plus qu'une question de dactylographie après ça (et une connaissance du langage). C'est long, c'est laborieux, mais ça permet deux choses très importantes : vérifier qu'on a bien compris, que tout est clair et en garder une trace, de sorte que tout le monde puisse le faire à notre place. Une fois cela effectué, il faut dresser une équipe pour répondre au besoin et organiser le travail (ça dépend du nombre de personnes, de leurs compétences…). La prochaine étape, c'est notifier les autres de l'avancement. Effectivement, maintenant qu'ils savent quoi faire, comment le faire précisément, il faut qu'ils sachent où ceux qui s'en chargent en sont, ce qui leur permettra de facilement intégrer l'équipe, de juger du travail accompli… bref, de participer même s'ils ne sont pas « dedans » (ce qui fait que l'équipe originelle n'a pas d'importance). Enfin, une fois le travail effectué, il faut vérifier que ce qui a été fait est correct : c'est la QA.
Vous remarquerez que j'ai employé le pronom « on » au début du paragraphe et que ce n'est pas très explicite. En fait peu importe, et c'est justement l'intérêt d'une telle démarche : tout le monde peut participer et, ici, « pouvoir » ne signifie pas « en avoir l'autorisation » mais bien « en avoir la possibilité ».
Suite au message de Kje juste en dessous, je précise que « tout le monde » désigne les personnes ayant les connaissances techniques requises. L'objectif n'est pas de former ma grand-mère pour qu'elle puisse participer au développement, mais de permettre à ceux ayant déjà utilisé les technologies employées par le projet de s'intégrer facilement.
Ne vous méprenez pas non plus sur l'expression « techniquement capables ». Inutile d'être un expert en git, Python, Django… pour participer. Seulement, ce n'est, je pense, pas le rôle des contributeurs habitués de former les nouveaux aux technologies usitées.
Au plaisir. =)