2Close
ZephOn the 2015-11-23 at 11:04am
Je viens de tomber au pif sur un article de blog sur un mec qui explique pourquoi il faudrait arrêter d'utiliser Grunt, Gulp et cie. Pour info il s'agit de (cet article mais pas besoin de le lire, mon post ne porte pas directement là-dessus. Si vous ne connaissez pas Grunt et Gulp le reste de mon message risque d'être peu clair, donc je me risque à une définition minimaliste :

Grunt, Gulp et quelques dizaines d'autres outils équivalents (oui, réellement) permettent d’exécuter des tâches programmatiquement à l'aide de règles définies dans un fichier de configuration. Derrière cette définition très abstraite (qui est plus ou moins celle donnée sur leurs sites officiels, quand même) ils sont en pratique utilisés comme outils de build pour effectuer toutes les tâches de compilation/génération/traitement nécessaire entre l'écriture du code source d'un site web jusqu'à son déploiement. Comme tous ces outils tournent sous Node.js, ils sont codés en JavaScript et leurs fichiers de configuration sont tout naturellement des fichiers JSON.

Ceci étant dit revenons à l'article, ou plus précisément aux premiers commentaires. Grosso modo l'auteur de l'article présente certains défauts de ces outils et explique qu'il serait possible de s'en passer. Je trouve personnellement qu'il passe à côté de leurs défauts majeurs mais peu importe, voilà à l'heure actuelle le commentaire présenté en premier :
User 1
:You should try out this sweet tool called "make"
Je suis on-ne-peut plus d'accord, considérant que make est bien plus mature que Grunt & co, qu'il ne souffre d'aucuns de leurs bugs de jeunesse et surtout qu'il est conçu en tout premier lieu pour gérer les dépendances entre fichiers, chose qui permet d'éviter de recompiler la moitié de son projet à chaque fois qu'on touche un fichier et que ni Grunt ni aucun autre à ma connaissance n'est capable de faire correctement. Bref, le débat me semble mériter d'être ouvert, si ce n'est que les deux réponses qui suivent sont celles-ci :
User 2
:make sucks, the syntax is the most cryptic POS I've ever encoutered. One thing that these new generation of build tools do well, is to make it EASY TO UNDERSTAND what is actually happening, without using yet-another-cryptic DSL. Grunt uses JSON, gulp uses JavaScript. Make does NOT offer that, so, sorry, the rest of us have moved past generation 0 build tools.
User 3
:Make is too hard. Let's write a new build system.
Je mets de côté le ton hargneux du premier message qui le rend désagréable avant même de s'intéresser au contenu. Ces messieurs me semblent dire la même chose que je résume de cette façon : make est trop complexe à cause de sa syntaxe. Grunt & co utilisent du JSON plutôt qu'un "DSL" (sic) spécifique et sont donc beaucoup plus faciles à appréhender pour quelqu'un qui est habitué au développement web.

Il aurait été difficile de condenser davantage de choses avec lesquelles je suis en désaccord. Effectivement, Grunt utilise de fichiers de configuration en JSON. Cependant il ne s'agit que de syntaxe et le fait que ce soit du JSON, du YML ou du XML me semble importer bien peu quand on voit la complexité de ces fameux fichiers de configuration (il y a plein d'exemples dans l'article). Est-ce que cet utilisateur s'imagine vraiment qu'un développeur, sous prétexte qu'il connait JSON, va pouvoir deviner quoi écrire dans un fichier de plusieurs centaines de lignes et dans lequel la moindre propriété mal orthographiée va être récompensée par un message d'erreur obscur ? J'ai l'impression que le langage (ou le "DSL" pour faire moderne) à maitriser ici est quelque chose qui dépasse largement un simple problème de syntaxe, et que le choix de JSON est en réalité complètement anecdotique. Décrire des enchainements de tâches et de dépendances *est* quelque chose de complexe, et la syntaxe qu'on choisit d'utiliser n'y change strictement rien à mon sens. Pointer du doigt la syntaxe du fichier de configuration revient pour moi à passer complètement à côté du problème.

À la limite cet argument pourrait être acceptable s'il ne s'agissait pas du seul et unique qu'ils avancent pour mettre leurs outils en avant. Sérieusement, le seul problème avec make est que sa syntaxe n'est pas du JSON ? Au point d'en arriver à une conclusion aussi radicale que "let's write a new build system" ? Je commence à comprendre pourquoi l'écosystème front-end est aussi bordélique si des arguments aussi faibles justifient la réécriture en 30 exemplaires de choses aussi complexes qu'un outil de build. Ce qui m'inquiète encore davantage, c'est que j'aurais une confiance très modérée dans un outil écrit par quelqu'un qui décide de créer un nouveau projet juste parce que la syntaxe du précédent ne lui plait pas.

Quoiqu'il en soit, si j'extrapole cette façon de travailler, ça me semble être une explication assez plausible au bordel innommable qu'est devenu le développement web en quelques années. Je ne prétends absolument pas m'y connaître, mon seul projet web étant yAronet je n'ai qu'une vision extrêmement limitée, mais quand même : quel capharnaüm ! Pour répondre au moindre besoin le plus trivial il existe 3843 bibliothèques toutes plus buggées les unes que les autres, chacune embarquant son lot de 937 dépendances incompatibles.

Bref, j'ai du mal à voir comment tout ça va pouvoir évoluer, mais ça me semble extraordinairement mal parti. Vous qui avez une expérience plus vaste dans ce domaine, qu'en pensez-vous ?