Farm est un outil libre et open source disponible sur GitHub sous la licence MIT. Le référentiel GitHub du projet indique : « Farm est un outil de build de sites Web extrêmement rapide et compatible avec Vite, écrit en Rust. Il est conçu pour être rapide, puissant et cohérent, et vise à fournir la meilleure expérience pour le développement Web, soit le véritable outil de construction de la prochaine génération ». À la question de savoir pourquoi avoir conçu Farm alors que des outils comme Vite et Webpack existent déjà, l'équipe a répondu que son nouvel outil vient corriger la lenteur et plusieurs des lacunes de ses prédécesseurs.
« Au fur et à mesure que les projets Web prennent de l'ampleur, les performances de compilation ont été leur principal goulot d'étranglement. Pour un grand projet, la compilation avec Webpack peut prendre 10 minutes ou plus et une mise à jour HMR peut coûter des dizaines de minutes, voire plus, ce qui réduit fortement l'efficacité du développement. C'est alors que sont apparus des outils comme Vite. Il utilise ESM en natif et est unbundled pour les fichiers sources en mode dev, préconstruit les dépendances en utilisant esbuild, ce qui rend le lancement du serveur dev et le HMR très rapide », a-t-elle déclaré. Elle a aussi ajouté :
- le grand nombre de demandes de modules : pour un grand projet, il peut y avoir des milliers de modules qui doivent être chargés. L'utilisation du système de modules natif pour charger des milliers de modules peut bloquer le navigateur, voire le faire planter ;
- incohérence entre le développement et la production : les modules natifs ne peuvent pas être utilisés en production dans la plupart des cas, pour des raisons de compatibilité et de nombre de requêtes. Les outils non regroupés choisissent donc de regrouper les modules en production. Cela entraîne des incohérences, et lorsqu'il y a des bogues en production causés par cette incohérence, c'est très difficile à déboguer et très pénible. Vite utilise esbuild en développement et utilise rollup en production, ce qui aggrave l'incohérence ;
- fractionnement de morceaux inflexible : la configuration du découpage en morceaux n'est pas assez flexible ;
- Vite est si rapide en développement grâce à esbuild, qui est écrit en go. Go tire parti de la plateforme native et est beaucoup plus rapide que JS ;
Le développeur principal du projet a écrit : « je pense donc que nous avons juste besoin d'un outil de construction Web rapide, puissant, cohérent, qui peut résoudre les problèmes ci-dessus et rapidement, alors j'ai conçu et implémenté Farm ». Le premier commit de Github date d'il y a deux ans, mais la version stable 1.0 a été publiée il y a quelques semaines maintenant. En plus de Rust, l'équipe a utilisé un benchmark de Turborepo qui consiste à rendre 1000 composants React. Farm était plus rapide dans différents scénarios, tels que le démarrage à froid, le démarrage à chaud, le HMR, le temps de construction, et bien d'autres.
L'équipe mentionne dans la documentation de Farm que leur nouvel outil de construction Web est non seulement compatible avec l'écosystème Vite et les plug-ins, mais il dispose également d'autres fonctionnalités. Elle a cité notamment les fonctionnalités telles que :
- extrêmement rapide : écrit en Rust, Farm permet de démarrer un projet React/Vue en quelques millisecondes et effectuer une mise à jour HMR en moins de 20 ms pour la plupart des situations ;
- construction incrémentale : support du cache persistant, cache au niveau du module activé par défaut, tout module ne sera pas compilé deux fois jusqu'à ce qu'il soit modifié ;
- entièrement enfichable et compatible avec Vite : tout à l'intérieur de Farm est alimenté par des plug-ins, supporte les plug-ins Vite dès le départ. Il supporte les plug-ins de compilation de Farm (à la fois les plug-ins Rust et JavaScript, et les plug-ins SWC), les plug-ins d'exécution de Farm et le plug-in de serveur de Farm ;
- puissant : compile JS/TS/JSX/TSX, CSS, modules CSS, HTML et actifs statiques. Il supporte les plug-ins de compilation officiels pour les frameworks/outils populaires comme React, Vue, SolidJs, Sass, Less, Postcss et ainsi de suite ;
- compilation paresseuse : les ressources importées dynamiquement ne sont compilées que lorsqu'elles sont demandées, ce qui accélère la compilation pour les projets de grande envergure. Il suffit d'écrire une importation dynamique et le module importé ne sera pas compilé lorsqu'il sera exécuté ;
- regroupement partiel : regroupez automatiquement votre projet en quelques paquets raisonnables, ce qui accélère le chargement des ressources sans perdre la granularité de la mise en cache ;
- cohérence : ce que vous voyez en développement sera le même que ce que vous obtiendrez en production ;
- compatibilité : Farm prend en charge les navigateurs anciens (ES5) et modernes.
L'équipe a déclaré qu'elle continuera à améliorer l'outil à l'avenir. Elle vise notamment à construire plus de frameworks de haut niveau, comme le framework SSR. Elle prévoit en outre d'étendre l'écosystème des plug-ins Rust, utiliser Rust pour implémenter ou reconstruire des outils communs existants, et fournir des performances encore plus élevées. Bien que Farm ait suscité l'intérêt de certains dans la communauté, certains affirment avoir un sentiment mitigé à l'égard de l'outil. Selon ce dernier groupe, Vite est déjà assez rapide pour la plupart des cas d'utilisation et Farm n'améliore les performances que marginalement.
L'un d'entre eux a écrit : « j'ai des sentiments mitigés à propos de ce projet. Il semble que l'auteur ait d'abord cherché à réécrire Vite en Rust et qu'il ait ensuite trouvé des justifications pour le faire. D'après mon expérience, Vite est suffisamment rapide pour la plupart des besoins. Adopter un nouveau projet potentiellement instable pour une amélioration marginale des performances ne semble pas justifiable ». D'autres développeurs sont préoccupés par le pays d'origine du projet. Farm serait l'œuvre d'une entreprise appelée Farm Inc. et semble apparemment basée en Chine.
« Question sérieuse : quelqu'un ici travaille-t-il pour une grande entreprise qui utilise un logiciel chinois comme celui-ci en production ? Est-ce que vos équipes de sécurité donnent leur accord ? Quel est le risque de télécharger ce qui est censé être un binaire de sortie de GitHub, où le binaire de sortie inclut quelque chose d'infâme qui ne se trouve pas dans la base de code ouverte, qui vole le code source de votre entreprise lorsque vous l'utilisez pour compiler ? Dans le climat géopolitique actuel, comment peut-on faire confiance à des projets non occidentaux ? », s'interroge un développeur préoccupé par les logiciels chinois.
Un autre a souligné : « leur base de code est aussi bizarrement alambiquée, avec beaucoup de crates et de fichiers qui ne font que se substituer à d'autres. J'ai lu et écrit beaucoup de codes en Rust, et je n'ai jamais vu ce style. Ce n’est peut-être rien, mais c'est bizarre ». De son côté, le référentiel GitHub de Farm indique que le projet a implémenté toutes les fonctionnalités d'un outil de construction Web, y compris l'optimisation de la production comme le découpage en arbre et la minification. Il est stable depuis la version 1.0. « Nous avons déjà migré des projets d'entreprise vers Farm, et cela fonctionne très bien », a-t-elle ajouté.
Source : Farm (1, 2)
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous de l'outil de build Web Farm et de ses caractéristiques ?
Outre sa rapidité présumée, en quoi Farm est-il meilleur que Webpack et Vite selon vous ?
Que pensez-vous des préoccupations des développeurs à l'égard du pays de provenance du projet Farm ?
Les développeurs peuvent-ils utiliser sans crainte les projets non occidentaux dans le contexte géopolitique actuel ?
Voir aussi
La fondation Rust annonce la création d'un nouveau Consortium Rust pour les systèmes critiques afin de soutenir l'utilisation responsable de Rust dans la sécurité des logiciels critiques
Le C++ devient plus populaire que le C sur l'indice Tiobe et prend la deuxième place au mois de juin, malgré l'avertissement de la Maison Blanche qui invite les développeurs à abandonner C/C++ pour Rust
Les bots représentent 42 % du trafic Web mondial en 2024 et les deux tiers sont malveillants, ils mènent des actions de Web scraping qui ont un impact majeur sur le e-commerce, selon une étude d'Akamai