blog.leny.me

Open-Source : contribution & appréhension…

J’ai toujours été un grand fan de l’open-source, de l’idée de partager du code, rendre service à d’autres personnes, éviter des soucis qu’on a déjà eu, rendre la pareille

…mais jusqu’il y a peu, si je partageais de temps à autres des outils maisons, je ne contribuais jamais à des projets, et ce pour une raison complètement idiote : l’appréhension.
Le côté “ouais mais j’vais sûrement faire de la merde”, ou “je vais rajouter plus de crasses que ce que j’en aurais enlevé”…

…le fait est que c’est juste une fausse pudeur, vu qu’à l’heure actuelle, la plupart des outils open-source hostés sur Github sont abondamment testés unitairements - à ce propos, je dois reconnaître que j’ai encore beaucoup de chemin à parcourir en la matière, et me forcer à vraiment, vraiment systématiquement tout tester.

Bref, ces projets étant abondamment testés, il est très facile de constater qu’on est sur la bonne voie (ou pas) avant d’effectivement soumettre ses modifications.

Quant à la question de la qualité du code, c’est là toute la magie de la chose aussi : outre les conventions souvent bien documentées, il y aura toujours un contributeur pour vous indiquer si quelque chose ne va pas, et c’est un très bonne façon de se confronter à d’autres développeurs, d’autres méthodes de travail et d’autres visions.


Du coup, tout dernièrement, alors que je testais la possibilité de passer de Grunt à Gulp (on en reparlera), j’ai été confronté à un bug assez incompréhensible dans le plugin gulp-coffee : en passant par le plugin, le coffeescript compilé était complètement incorrect et malformé (les variables n’étaient plus déclarées, certains espacements retirés, bref, des erreurs qui faisaient planter jshint), là où le plugin de compilation coffeescript de grunt ne recontrait aucun problème.

Assez embêté, j’ai trouvé une vague issue sur github qui déclarait le même genre de problèmes que les miens, mais sans plus de détails, et un message laconique d’un des créateurs du projet qui déclarait noter le souci mais ne pas pouvoir y regarder avant quelques temps, étant débordé de son côté.
Le message datant de 20 jours plus tôt, c’était effectivement un souci qui n’allait pas être résolu de sitôt.
J’ai donc pris mon courage à deux mains, ai fait un fork du projet, et ai découvert un code propre, testé et documenté.

Les tests unitaires étant assez simplistes et ne couvrant pas mon problème, j’en ai donc rajouté quelques uns, avant de me rendre compte que dans le cadre des tests unitaires, tout se passait bien, et mes soucis n’apparaissaient pas (damnit) !

Puisque l’outil en question un plugin pour un outil plus général (gulpjs), le problème venait de plus haut.
Après quelques tests, j’ai découvert que les options passées par l’utilisateur (moi) au plugin étaient au passage polluées par gulp et c’était ce qui générait l’erreur.
Un peu de monkey-patching et tout était réglé, en analysant les options données pour ne garder que celles qui sont attendues par le compiler coffeescript.
Une pull request plus tard, et le sentiment du devoir accompli, le plugin corrigé a été poussé en ligne sur npm par son créateur, et j’ai pu continuer à travailler.

Et j’ai fait ma B.A. :)

leny

Il n'y a pas de module de commentaires sur ce blog, principalement pour éviter à devoir gérer avec les spams, la pub, les insultes, ...

Toutefois, si vous avez quelque chose à dire/corriger/modifier, ou simplement exprimer votre opinion sur un post, n'hésitez pas à me contacter sur Twitter (@leny_be).