Présentation
Après 7 ans de production, Scarf a décidé d'abandonner Haskell. Cette décision a été difficile à prendre, car l'équipe de Scarf a toujours été une grande fan de Haskell. Cependant, les coûts liés à l'utilisation de Haskell, tels que les temps de compilation et les frictions dans l'écosystème, sont devenus trop importants.
Contexte technique
Scarf a utilisé Haskell pour son backend, avec des bibliothèques comme Servant et Beam sur PostgreSQL. Le système a fonctionné correctement pendant des années, mais les temps de compilation et les frictions dans l'écosystème ont fini par devenir un problème. L'utilisation de caches, de Nix et d'autres outils a aidé, mais n'a pas suffi à résoudre le problème.
Les modèles de langage (LLM) ont changé les choses. Ils sont maintenant capables de générer du code de qualité, ce qui a modifié les compromis entre les différents langages de programmation. Le coût de la vérification de types est devenu plus important, car les LLM peuvent générer du code qui fonctionne en quelques minutes, mais les temps de compilation de Haskell sont trop longs.
Fonctionnement et migration
Scarf a décidé de migrer vers Python pour les nouveaux développements. Ils ont déployé un serveur Python aux côtés du serveur Haskell et ont commencé à déplacer les fonctionnalités vers Python. Cette approche a permis de minimiser les risques et de profiter des avantages de Python.
La migration a été facilitée par les LLM, qui ont pu générer du code de qualité pour les nouvelles fonctionnalités. Les tests ont également été générés automatiquement, ce qui a permis de réduire les temps de développement et d'améliorer la productivité.
Implications et limites
La migration de Scarf vers Python n'a pas été sans conséquences. La productivité a augmenté, mais il est difficile de mesurer exactement l'impact. Les métriques traditionnelles, telles que le nombre de lignes de code ou le nombre de commits, ne sont plus pertinentes. Cependant, la capacité à livrer des fonctionnalités de qualité avec une supervision minimale est devenue une réalité.
Les LLM ont changé la donne. Ils sont capables de générer du code de qualité, ce qui a modifié les compromis entre les différents langages de programmation.