22 points par xguru 2024-10-28 | 10 commentaires | Partager sur WhatsApp

Visualisation et explication des dernières tendances dans les domaines des techniques/outils/plateformes/langages et frameworks de développement selon quatre étapes : Hold/Assess/Trial/Adopt

Anti-patterns de l’assistance au code

  • Sans surprise, cette édition du Radar est largement dominée par les discussions sur l’IA générative et les LLM couramment utilisés par les développeurs
  • Les patterns mènent inévitablement à des anti-patterns, c’est-à-dire des situations contextualisées que les développeurs doivent éviter
  • Dans l’espace de l’IA en surchauffe, certains anti-patterns commencent à apparaître :
    • l’idée erronée qu’un humain avec une IA comme partenaire peut remplacer entièrement le pair programming
    • une dépendance excessive aux suggestions d’assistance au code
    • des problèmes de qualité dans le code généré
    • une croissance plus rapide du codebase
  • L’IA a tendance à résoudre les problèmes de manière brutale plutôt qu’en utilisant des abstractions
    • Exemple : utiliser des dizaines de conditions au lieu du design pattern Strategy
  • Les problèmes de qualité du code, en particulier, soulignent un domaine où développeurs et architectes doivent rester constamment vigilants pour ne pas tomber dans du code « qui fonctionne mais qui est horrible »
  • Les membres de l’équipe doivent donc se concentrer encore davantage sur de bonnes pratiques d’ingénierie, comme les tests unitaires, les fonctions d’aptitude architecturale et d’autres techniques éprouvées de gouvernance et de validation
    • afin de vérifier que l’IA aide réellement les efforts au lieu de chiffrer le codebase en complexité

Rust is anything but rusty - Rust ne rouille pas

  • Rust devient progressivement le langage privilégié pour la programmation système
  • À chaque session Radar, Rust revient régulièrement dans les conversations
  • De nombreux outils discutés sont écrits en Rust
  • Rust est le langage de choix lorsqu’il s’agit de remplacer d’anciens utilitaires système ou de réécrire une partie d’un écosystème pour améliorer les performances
  • Le qualificatif le plus fréquent appliqué aux outils basés sur Rust semble être « incroyablement rapide »
  • Par exemple, dans l’écosystème Python, plusieurs outils ont des alternatives basées sur Rust pour offrir des performances nettement meilleures
  • Les concepteurs du langage et la communauté ont réussi à créer un écosystème apprécié de SDK de base, de bibliothèques et d’outils de développement, offrant une excellente vitesse d’exécution avec moins d’écueils que de nombreux langages précédents
  • Beaucoup de membres de l’équipe sont fans de Rust, et la plupart des développeurs qui l’utilisent semblent l’apprécier énormément

L’essor progressif de WASM

  • WASM (WebAssembly) est un format d’instructions binaire pour une machine virtuelle à pile
  • Cela peut sembler trop ésotérique et trop bas niveau pour la plupart des préoccupations des développeurs, mais on en perçoit l’intérêt : la capacité d’exécuter des applications complexes dans la sandbox du navigateur
  • WASM peut s’exécuter dans les machines virtuelles JavaScript existantes, ce qui permet aux développeurs d’intégrer dans le navigateur des applications qui n’étaient auparavant réalisables qu’avec des frameworks ou extensions natifs
  • Les quatre principaux navigateurs (Chrome, Firefox, Safari, Edge) prennent désormais en charge WASM 1.0, ouvrant des possibilités intéressantes pour un développement sophistiqué, portable et cross-platform
  • Nous suivons ce standard avec beaucoup d’intérêt depuis plusieurs années, et nous sommes heureux de le voir commencer à démontrer ses capacités comme cible de déploiement légitime

L’explosion cambrienne des outils d’IA générative

  • Au vu de la trajectoire présentée dans les derniers numéros du Radar, nous nous attendions à ce que l’IA générative occupe une place importante dans nos discussions
  • Malgré cela, nous avons encore été surpris par l’explosion de l’écosystème technologique autour des modèles de langage :
    • guardrails, évaluation, outils de construction d’agents, frameworks pour les sorties structurées, bases de données vectorielles, services cloud et outils d’observabilité
  • Cette croissance rapide et variée est, à bien des égards, tout à fait compréhensible
  • L’expérience initiale, c’est-à-dire la simplicité consistant à fournir un prompt en langage naturel à un modèle de langage, a conduit à de l’ingénierie produit logicielle
  • Cela n’atteint peut-être pas les rêves et les affirmations exagérées nés après l’envoi du premier prompt à ChatGPT, mais nous constatons chez de nombreux clients des usages avisés et productifs de l’IA générative, et tous ces outils, plateformes et frameworks jouent un rôle important pour amener des solutions basées sur les LLM en production
  • Comme dans le cas de l’explosion de l’écosystème JavaScript vers 2015, cette croissance chaotique devrait se poursuivre pendant un certain temps

[Techniques]

Adopt

  • 1% canary

    • utiliser le déploiement canary pour encourager les premiers retours sur une nouvelle version logicielle et réduire les risques
    • technique consistant à déployer une nouvelle fonctionnalité auprès de 1 % des utilisateurs afin que l’équipe puisse recueillir du feedback, observer l’impact et réagir si nécessaire
    • important pour les déploiements à grande échelle comme les applications mobiles, les appareils d’edge computing ou les software-defined vehicles
  • Component testing

    • l’automatisation des tests est une pierre angulaire d’un développement logiciel efficace
    • focalisation sur les tests frontend pour garantir stabilité et rapidité
    • utilisation de jsdom pour les tests de composants exécutés en mémoire
    • utilisation d’outils de navigateur pour les tests end-to-end
  • Continuous deployment

    • adopter la pratique du déploiement continu partout où c’est possible
    • déployer automatiquement en production toute modification ayant passé les tests automatisés
    • permet des boucles de feedback rapides et une livraison rapide de valeur aux clients
    • se référer à l’ouvrage de Valentina Servile, "Continuous Deployment", qui propose une feuille de route pour atteindre la maturité nécessaire
  • Retrieval-augmented generation (RAG)

    • pattern privilégié pour améliorer la qualité des réponses des grands modèles de langage
    • utilisé avec succès dans des projets comme la plateforme Jugalbandi AI
    • stocker dans une base de données des informations issues de documents pertinents et fiables
    • rechercher et enrichir le prompt avec les documents pertinents afin de fournir un contexte riche
    • produit une meilleure qualité de sortie et réduit fortement les hallucinations

Trial

  • Domain storytelling

    • le Domain-Driven Design (DDD) est devenu la base de notre approche du développement logiciel
    • pour beaucoup d’équipes, il est difficile de démarrer avec le DDD
    • le domain storytelling constitue une alternative ou un complément au développement initial du modèle de domaine
    • il clarifie la compréhension partagée en schématisant la description des activités par les experts métier
  • Fine-tuning embedding models

    • lors de la création d’applications LLM basées sur la retrieval-augmented generation, la qualité des embeddings a un impact direct sur la recherche et les réponses
    • il est possible d’améliorer la précision et la pertinence des embeddings pour une tâche ou un domaine spécifique
    • notre équipe a réalisé du fine-tuning d’embeddings lorsqu’une extraction d’information précise était importante dans des applications LLM spécialisées par domaine
    • il faut prendre en compte les avantages et les inconvénients de cette approche
  • Function calling with LLMs

    • capacité pour un LLM de déterminer et d’appeler la fonction appropriée à partir d’une requête donnée et de documents associés
    • cela étend les capacités des LLM au-delà de la simple génération de texte
    • via le déclenchement de fonctions ou d’API, un LLM peut accomplir des tâches qui dépassaient auparavant son périmètre fonctionnel autonome
    • un LLM peut ainsi se connecter à des systèmes internes, à des bases de données ou même effectuer des recherches sur Internet via un navigateur
    • pattern abstrait à comprendre dans le contexte de la retrieval-augmented generation et des architectures agentiques
  • LLM as a judge

    • on construit des systèmes capables de fournir des réponses à partir de grands jeux de données, mais il reste difficile de suivre la manière dont ils parviennent à ces réponses
    • utilisation d’un LLM pour évaluer les réponses d’un autre système, qui peut lui aussi être basé sur un LLM
    • utilisé pour évaluer la pertinence des résultats de recherche d’un catalogue produit et l’orientation donnée à l’utilisateur par un chatbot basé sur un LLM
    • nécessite une configuration et un calibrage soigneux du système évaluateur
    • peut conduire à des gains d’efficacité et à une réduction des coûts
  • Passkeys

    • menés par l’alliance FIDO et soutenus par Apple, Google et Microsoft, ils se rapprochent d’un usage grand public
    • lors de la configuration d’une nouvelle connexion, une paire de clés est générée : le site web reçoit la clé publique, l’utilisateur conserve la clé privée
    • la connexion est traitée à l’aide de la cryptographie asymétrique
    • preuve de possession de la clé privée, stockée sur l’appareil de l’utilisateur et non transmise au site web
    • l’accès aux passkeys est protégé par biométrie ou par PIN
    • pour les utilisateurs multiplateformes, il est possible de stocker des passkeys sur un autre appareil que celui requis pour générer la clé ou se connecter, via CTAP
  • Small language models

    • Les grands modèles de langage (LLM) sont utiles, mais leur taille peut poser problème
      • Ils nécessitent beaucoup de ressources de calcul pour répondre aux prompts, ce qui les rend lents et coûteux
      • Comme les modèles sont propriétaires et volumineux, ils doivent être hébergés sur le cloud d’un tiers, ce qui pose problème pour les données sensibles
      • Dans la plupart des cas, l’entraînement du modèle est excessivement coûteux
    • Le pattern RAG peut résoudre le besoin d’entraînement et de fine-tuning du modèle de base, mais les problèmes de coût et de confidentialité persistent
    • L’intérêt pour les petits modèles de langage (SLM) augmente
      • Ils ont moins de poids et une précision moindre (généralement entre 3,5 et 10 milliards de paramètres)
      • Correctement configurés dans le bon contexte, ils peuvent égaler, voire dépasser, les performances des LLM
      • Leur taille permet de les exécuter sur des appareils edge
      • C’est un domaine qui évolue rapidement, avec par exemple Gemini Nano de Google et la série Phi-3 de Microsoft
  • Synthetic data for testing and training models

    • Cela consiste à générer des données artificielles capables d’imiter des scénarios réels sans dépendre de sources de données sensibles ou à accès restreint
    • Les données synthétiques pour les jeux de données structurés ont été largement explorées
    • La réutilisation des données synthétiques pour les données non structurées augmente
    • En particulier pour les entreprises confrontées à un manque de données de domaine annotées pour l’entraînement ou le fine-tuning de LLM
    • Des outils comme Bonito et AgentInstruct de Microsoft permettent de générer des données synthétiques d’ajustement par instruction à partir de sources brutes telles que des documents texte et des fichiers de code
    • Cela accélère l’entraînement des modèles tout en réduisant les coûts et la dépendance à la curation manuelle des données
    • La génération de données synthétiques constitue aussi un cas d’usage important pour résoudre les problèmes de données déséquilibrées ou rares
      • C’est fréquent dans des tâches comme la détection de fraude ou la segmentation client
    • Des techniques comme SMOTE équilibrent les jeux de données en créant artificiellement des instances de classes minoritaires
    • Dans des secteurs comme la finance, les GAN servent à simuler des transactions rares afin de rendre les modèles plus robustes face aux cas limites et d’améliorer les performances globales
  • Using GenAI to understand legacy codebases

    • L’IA générative (GenAI) et les grands modèles de langage (LLM) aident les développeurs à écrire et à comprendre le code
    • Ils sont particulièrement utiles pour les codebases legacy peu documentées, obsolètes ou trompeuses
    • Les techniques et produits qui utilisent GenAI pour comprendre les codebases legacy progressent encore
    • Ils ont notamment été utilisés avec succès pour accompagner les travaux de rétro-ingénierie dans la modernisation des mainframes
    • Une approche de retrieval-augmented generation (RAG), dans laquelle la recherche d’information s’effectue à partir d’un graphe de connaissances sur la codebase, est prometteuse
    • Le graphe de connaissances peut préserver des informations structurelles sur la codebase au-delà de ce que les LLM peuvent déduire du code texte
    • C’est particulièrement utile pour les codebases legacy peu explicites et peu cohérentes
    • Il existe aussi des possibilités d’enrichir davantage le graphe avec de la documentation existante ou générée par l’IA, des dépendances externes, des connaissances métier, etc., afin de faciliter le travail de l’IA

Assess

  • AI team assistants

    • Les outils d’assistance au code par IA sont surtout évoqués dans le contexte du soutien et de l’amélioration du travail des contributeurs individuels
    • Mais la livraison logicielle a toujours été et restera un travail d’équipe, il faut donc chercher comment créer des assistants IA d’équipe qui aident à produire des équipes 10x plutôt que des ingénieurs 10x
    • Les évolutions récentes du marché des outils nous rapprochent un peu plus de cet objectif
      • Unblocked est une plateforme qui unifie toutes les sources de connaissances d’une équipe et les intègre intelligemment dans les outils des membres de l’équipe
      • Rovo d’Atlassian introduit l’IA dans l’une des plateformes de collaboration d’équipe les plus utilisées afin d’offrir de nouveaux modes de recherche et d’accès aux documents
    • Nous explorons directement le potentiel de l’IA pour l’amplification des connaissances et le soutien aux pratiques d’équipe
      • Nous proposons en open source l’assistant d’équipe Haiven et avons commencé à apprendre comment fournir un support IA pour des tâches non liées au code, comme l’analyse des exigences
  • Dynamic few-shot prompting

    • Technique consistant à inclure dynamiquement dans le prompt des exemples spécifiques pour guider la réponse du modèle sur la base du few-shot prompting
    • En ajustant le nombre et la pertinence de ces exemples, on optimise la longueur de contexte et sa pertinence, ce qui améliore l’efficacité et les performances du modèle
    • Des bibliothèques comme scikit-llm mettent en œuvre cette technique en utilisant une recherche des plus proches voisins pour récupérer les exemples les plus pertinents correspondant à la requête utilisateur
    • Cela permet de mieux exploiter la fenêtre de contexte limitée du modèle et de réduire la consommation de tokens
    • Le générateur SQL open source vanna utilise le dynamic few-shot prompting pour améliorer la précision des réponses
  • GraphQL for data products

    • Technique qui consiste à utiliser GraphQL comme port de sortie des data products afin que les clients puissent les consommer
    • Utilisation de GraphQL pour créer une couche d’API unifiée qui abstrait la complexité des données sous-jacentes et offre aux clients une interface plus cohérente et plus facile à gérer
    • Lorsqu’on utilise GraphQL pour des data products, les consommateurs peuvent découvrir facilement les formats et relations des données via le schéma GraphQL et utiliser des outils clients familiers
    • Nos équipes explorent cette technique pour des cas d’usage spécifiques liés à l’exploration et à la découverte d’insights big data avec l’aide des LLM
      • Les LLM construisent des requêtes GraphQL à partir des prompts utilisateurs et d’un schéma GraphQL fourni comme référence
  • LLM-powered autonomous agents

    • Avec l’émergence de frameworks comme Autogen et CrewAI, on évolue au-delà des systèmes à agent unique et des systèmes multi-agents statiques
    • Il s’agit d’une technique qui décompose des activités complexes en plusieurs tâches plus petites et les exécute en attribuant à chaque agent un rôle spécifique
    • Les développeurs peuvent utiliser des outils préconfigurés pour accomplir les tâches, et les agents peuvent dialoguer entre eux et orchestrer le flux
    • La technologie en est encore à un stade précoce, et nos équipes ont rencontré des problèmes tels que des agents piégés dans des boucles continues ou des comportements incontrôlés
    • Des bibliothèques comme LangGraph offrent un contrôle accru sur les interactions entre agents grâce à la possibilité de définir le flux sous forme de graphe
    • Nous recommandons de mettre en place des mécanismes de sécurité en cas de défaillance, notamment des timeouts et une supervision humaine
  • Observability 2.0

    • Passage d’outils de monitoring traditionnels et hétérogènes à une approche unifiée exploitant des données d’événements structurées et à forte cardinalité dans un datastore unique
    • Capture d’événements riches et bruts avec des métadonnées détaillées afin de fournir une source unique de vérité pour une analyse complète
    • Le stockage des événements sous leur forme brute simplifie la corrélation, prend en charge les analyses en temps réel et forensiques, et permet des insights plus profonds sur des systèmes complexes et distribués
    • Cela offre un monitoring haute résolution et des capacités d’investigation dynamiques
    • L’approche donne la priorité à la capture de données à forte cardinalité et haute dimension pour permettre une inspection détaillée sans goulot d’étranglement en matière de performances
    • Le datastore unifié réduit la complexité, fournit une vue cohérente du comportement du système et aligne davantage les pratiques d’observability sur le cycle de vie du développement logiciel
  • On-device LLM inference

    • Il est désormais possible d’exécuter de grands modèles de langage (LLM) dans les navigateurs web et sur des appareils edge tels que les smartphones et les laptops
    • Cela permet de traiter en toute sécurité des données sensibles sans transfert vers le cloud, d’obtenir une latence très faible pour des tâches comme l’edge computing et le traitement d’images/vidéos en temps réel, de réduire les coûts grâce au calcul local, et d’offrir des fonctionnalités même quand la connexion Internet est instable ou indisponible
    • C’est un domaine très actif en recherche et développement, et nous avions déjà mis en avant MLX, un framework open source pour le machine learning efficace sur Apple silicon
    • De nouveaux outils comme Transformers.js et Chatty apparaissent
      • Transformers.js permet d’exécuter des transformers dans le navigateur à l’aide d’ONNX Runtime (avec prise en charge des modèles convertis depuis PyTorch, TensorFlow et JAX)
      • Chatty s’appuie sur WebGPU pour exécuter des LLM dans le navigateur de manière native et privée, offrant ainsi une expérience IA riche en fonctionnalités
  • Sortie structurée des LLM

    • Désigne la pratique consistant à contraindre les réponses d’un modèle de langage à un schéma défini
    • Peut être obtenue en demandant à un modèle généraliste de répondre dans un format spécifique, ou en affinant le modèle pour une sortie « par défaut » comme le JSON
    • OpenAI prend désormais en charge les sorties structurées, ce qui permet aux développeurs de contraindre les réponses du modèle en fournissant un schéma JSON, des objets pydantic ou Zod
    • Particulièrement utile lorsque la précision et le respect du format sont importants, notamment pour l’appel de fonctions, les interactions API et les intégrations externes
    • Améliore non seulement la manière d’interfacer avec le code, mais prend aussi en charge un large éventail de cas d’usage, comme la génération de balisage pour le rendu de graphiques
    • Aide également à réduire le risque d’hallucinations dans les sorties du modèle

Hold

  • Complaisance vis-à-vis du code généré par l’IA

    • Les assistants de codage IA comme GitHub Copilot et Tabnine sont extrêmement populaires
    • Selon l’enquête développeurs 2024 de StackOverflow, « 72 % de l’ensemble des répondants se disent favorables ou très favorables aux outils d’IA pour le développement »
    • Nous en reconnaissons aussi les avantages, mais restons vigilants quant à leur impact à moyen et long terme sur la qualité du code et invitons les développeurs à se méfier de toute complaisance envers le code généré par l’IA
    • Après quelques expériences positives, il devient facile de relâcher sa vigilance lors de l’examen des suggestions de l’IA
    • Une étude de GitClear montre une tendance à des bases de code qui grossissent plus vite, ce qui, selon nous, correspond à des pull requests plus volumineuses
    • Cette étude de GitHub s’interroge sur le fait de savoir si l’augmentation de 15 % du taux de fusion des pull requests est réellement une bonne chose, ou si les gens font trop confiance aux résultats de l’IA et fusionnent plus vite des pull requests plus grosses
    • Nous utilisons toujours les conseils de base pour « bien démarrer » que nous donnions déjà il y a un an, et il faut se méfier du biais d’automatisation, du biais des coûts irrécupérables, de l’ancrage et de la fatigue de relecture
    • Il est également recommandé de développer un bon cadre mental pour savoir où et quand les programmeurs devraient utiliser l’IA, et ne pas lui faire confiance
  • Environnements de tests d’intégration à l’échelle de l’entreprise

    • Une pratique courante et gaspilleuse qui ralentit tout
    • Ils finissent souvent par devenir des ressources précieuses, difficiles à reproduire et qui créent des goulets d’étranglement dans le développement
    • Ils donnent un faux sentiment de sécurité en raison des incohérences de données inévitables entre les environnements et de la surcharge de configuration
    • Les objections habituelles aux alternatives (environnements éphémères ou plusieurs environnements de test on-premise) concernent ironiquement le coût
    • Mais elles ne tiennent pas compte du coût des retards causés par les environnements de test d’intégration à l’échelle de l’entreprise
      • Ces retards surviennent lorsque les équipes de développement attendent qu’une autre équipe ait terminé ou qu’une nouvelle version d’un système dépendant soit déployée
    • À la place, les équipes devraient utiliser des environnements éphémères et des stubs plutôt que de vraies répliques, afin de créer et supprimer à faible coût des jeux de tests dont elles sont propriétaires
    • D’autres techniques soutenant cette alternative mettent l’accent sur les tests de contrat, la séparation entre déploiement et release, le temps moyen de rétablissement et les tests en production
  • Interdictions des LLM

    • Plutôt que d’imposer une interdiction générale des LLM au travail, il faut se concentrer sur la fourniture d’un accès à un ensemble d’outils d’IA approuvés
    • Les interdictions ne font que pousser les employés à chercher des solutions de contournement non approuvées et potentiellement peu sûres
    • Comme aux débuts de l’ordinateur personnel, les gens utilisent pour travailler les outils qu’ils jugent efficaces, quels que soient les obstacles
    • Sans alternative sûre et validée, les entreprises s’exposent à ce que les employés utilisent des LLM non approuvés, avec des risques pour la propriété intellectuelle, des fuites de données et des responsabilités juridiques
    • À l’inverse, fournir des LLM ou des outils d’IA sûrs et approuvés par l’entreprise permet de garantir à la fois sécurité et productivité
    • Avec une approche bien encadrée, l’organisation peut gérer les enjeux de confidentialité des données, de sécurité, de conformité et de coûts, tout en donnant aux employés accès aux capacités offertes par les LLM
    • Dans le meilleur des cas, un accès bien géré aux outils d’IA peut accélérer l’apprentissage organisationnel sur les meilleures façons d’utiliser l’IA au travail
  • Remplacer le pair programming par l’IA

    • Quand on parle d’assistants de codage, le sujet du pair programming finit inévitablement par arriver
    • Notre métier entretient avec le pair programming une relation d’amour-haine
      • Certains ne jurent que par lui, d’autres ne le supportent pas
    • Les assistants de codage soulèvent désormais la question de savoir si, au lieu de travailler en binôme avec un autre humain, on peut le faire avec une IA et obtenir le même résultat pour l’équipe
    • GitHub Copilot se présente même comme « votre programmeur en binôme IA »
    • Nous pensons que les assistants de codage peuvent apporter certains des bénéfices du pair programming, mais nous ne recommandons pas de remplacer entièrement le pair programming par l’IA
    • Considérer un assistant de codage comme un pair programmer revient à ignorer l’un des principaux bénéfices du pairing : faire progresser l’équipe, et pas seulement les contributeurs individuels
    • Les assistants de codage peuvent aider à débloquer des situations, à apprendre de nouvelles technologies, à faciliter l’onboarding ou à exécuter plus rapidement des tâches tactiques afin de se concentrer sur la conception stratégique
    • En revanche, ils n’apportent pas les bénéfices de collaboration d’équipe, comme limiter le travail en cours, réduire les handoffs et les réapprentissages, permettre l’intégration continue ou améliorer la propriété collective du code

[Platforms]

Adopt : aucun

Trial

  • Databricks Unity Catalog

    • Une solution de gouvernance des données pour les actifs d’un Lakehouse, tels que les fichiers, les tables et les modèles de ML
    • Une solution open source managée qui peut être utilisée pour gérer et interroger des données stockées à l’extérieur ou administrées par Databricks
    • Son avantage est d’unifier la gouvernance, la gestion du metastore et la découverte de données, réduisant ainsi le besoin de gérer plusieurs outils
    • L’absence de reprise automatique après sinistre dans la version managée par Databricks de Unity Catalog a été identifiée comme un inconvénient
      • Les équipes ont dû configurer elles-mêmes les fonctions de sauvegarde et de restauration
    • Bien qu’il s’agisse d’une solution centralisée, il est possible de déléguer les autorisations afin que chaque équipe puisse gérer ses propres actifs
  • FastChat

    • Une plateforme ouverte pour l’entraînement, le serving et l’évaluation de grands modèles de langage
    • Permet d’héberger de manière cohérente plusieurs modèles (Llama 3.1, Mistral 7B, Llama-SQL, etc.) au format API OpenAI
    • Utilise une architecture contrôleur-workers pour héberger différents modèles sur plusieurs workers
    • Prend en charge divers types de workers, notamment vLLM, LiteLLM et MLX
    • Il est possible de créer et de faire évoluer différents types de workers FastChat selon les cas d’usage
      • Les suggestions de code dans l’IDE du développeur nécessitent une faible latence et sont donc étendues sur plusieurs workers
      • Le Text-to-SQL a une demande plus faible, ce qui rend plusieurs workers inutiles
    • Peut être utilisé pour des tests A/B
      • Permet d’identifier les valeurs optimales en configurant différentes valeurs d’hyperparamètres sur un même modèle
      • Permet de valider une migration sans interruption lors d’un changement de modèle dans un service en production
  • GCP Vertex AI Agent Builder

    • Une plateforme flexible permettant de créer des agents IA avec une approche en langage naturel ou orientée code
    • S’intègre de façon fluide aux données d’entreprise via des connecteurs tiers
    • Fournit tous les outils nécessaires pour construire, prototyper et déployer des agents IA
    • Permet aux développeurs de prototyper rapidement des agents avec une configuration minimale et de traiter des tâches de données complexes
    • Utile pour construire des bases de connaissances ou des systèmes d’assistance automatisés gérant efficacement des données structurées et non structurées
  • Langfuse

    • Un outil d’observabilité, de monitoring et d’évaluation pour les applications basées sur les LLM
    • Ses fonctions de tracing, d’analyse et d’évaluation permettent d’analyser les performances et la précision des complétions
    • Permet des améliorations fondées sur les données en gérant les coûts et la latence, tout en comprenant les schémas d’usage en production
    • Exploite des données d’instrumentation offrant une traçabilité complète des flux requête-réponse et des étapes intermédiaires
    • Peut être utilisé avec le RAG et des agents autonomes basés sur des LLM
    • L’analyse des traces de conversations mal notées permet d’identifier les points de l’architecture à améliorer
  • Qdrant

    • Un moteur open source de recherche par similarité vectorielle et une base de données écrits en Rust
    • Prend en charge divers modèles d’embeddings vectoriels denses pour le texte et le multimodal
    • Des embeddings open source comme MiniLM-v6 et BGE peuvent être exploités dans plusieurs bases de connaissances produit
    • Utilisé comme vector store d’entreprise prenant en charge le multitenant
    • Les embeddings vectoriels sont stockés dans des collections distinctes afin d’isoler la base de connaissances de chaque produit
    • Les politiques d’accès des utilisateurs sont gérées au niveau de la couche applicative
  • Vespa

    • Il s’agit d’un moteur de recherche open source et d’une plateforme de traitement du big data
    • Il convient aux applications nécessitant une faible latence et un débit élevé
    • Il permet de mettre en œuvre une recherche hybride utilisant plusieurs technologies de recherche
    • Il prend en charge le filtrage et le tri efficaces de divers types de métadonnées
    • Il permet de mettre en œuvre un classement à plusieurs niveaux
    • Il peut indexer plusieurs vecteurs par document sans redondance
    • Il permet de rechercher des données simultanément dans plusieurs champs indexés

Assess

  • Azure AI Search

    • Il s’agit d’un service de recherche cloud pour le traitement de données structurées et non structurées destiné à des applications telles que les bases de connaissances
    • Il prend en charge différents types de recherche, notamment par mots-clés, vectorielle et hybride
    • Il peut automatiquement ingérer des formats de données non structurées courants comme PDF, DOC et PPT afin de générer un contenu interrogeable
    • Intégré à d’autres services Azure comme Azure OpenAI, il permet de créer des applications avec un minimum d’intégration manuelle
    • Il convient aux projets hébergés dans un environnement Azure et offre des performances stables
    • Il permet de définir des étapes spécifiques de traitement des données via des compétences personnalisées
  • Databricks Delta Live Tables

    • Il s’agit d’un framework déclaratif pour construire des pipelines de traitement de données fiables, maintenables et testables
    • Il définit les transformations de données de manière déclarative et gère automatiquement l’infrastructure sous-jacente ainsi que les flux de données
    • Il fournit de solides fonctions de monitoring et représente visuellement le DAG de l’ensemble du pipeline de données
    • Il est utile pour le suivi de la lignée des données et des dépendances
    • Son intégration profonde dans l’écosystème Databricks peut imposer des limites à la personnalisation de l’interface
  • Elastisys Compliant Kubernetes

    • Il s’agit d’une distribution Kubernetes spécialisée pour des secteurs fortement réglementés comme la santé, la finance et l’administration publique
    • Elle fournit des processus de sécurité automatisés
    • Elle prend en charge les déploiements multicloud et on-premise
    • Elle est construite sur une architecture de sécurité zero trust
    • La conformité à des réglementations comme le GDPR et le HIPAA, ainsi qu’à des contrôles comme ISO27001, y est intégrée
  • FoundationDB

    • Il s’agit d’une base de données multimodèle acquise par Apple en 2015 puis passée en open source en 2018
    • Son cœur est un stockage clé-valeur distribué offrant des transactions strictement sérialisables
    • Des améliorations majeures ont été apportées, notamment une distribution intelligente des données pour éviter les hotspots d’écriture et un nouveau moteur de stockage
    • Son architecture dégroupée permet de faire évoluer indépendamment différentes parties du cluster
    • Malgré l’étendue de ses fonctionnalités, l’exploitation de clusters de grande taille reste aisée
  • Golem

    • Il s’agit d’une plateforme de calcul distribué qui utilise une architecture explicite de machine à états pour un calcul résilient
    • Elle convient aux workflows de sagas de microservices de longue durée ou à l’orchestration d’agents IA
    • Les composants WebAssembly peuvent être écrits dans n’importe quel langage pris en charge
    • Elle est déterministe et offre des temps de démarrage rapides
  • Iggy

    • Il s’agit d’une plateforme persistante de streaming de messages écrite en Rust
    • Elle prend en charge plusieurs flux, topics et partitions
    • Elle fournit notamment la livraison au plus une fois, l’expiration des messages et la prise en charge de TLS pour les protocoles QUIC/TCP/HTTP
    • Elle atteint un débit élevé en lecture et en écriture sur un seul serveur
    • Le clustering et la prise en charge de io_uring étant prévus, elle pourrait devenir une alternative à Kafka
  • Iroh

    • Il s’agit d’un système distribué de stockage de fichiers et de diffusion de contenu qui fait évoluer IPFS
    • Il n’impose aucune limite de taille maximale des blocs et fournit un mécanisme de synchronisation des données via une réconciliation d’ensembles basée sur des plages
    • La prise en charge du navigateur via WASM figure sur la feuille de route
    • Des services cloud sont disponibles via iroh.network
    • Il propose des SDK dans plusieurs langages et se montre plus convivial qu’IPFS
  • Large vision model (LVM) platforms

    • Il s’agit de plateformes de grands modèles de vision capables de segmenter, synthétiser, reconstruire et analyser des flux vidéo et des images
    • Elles peuvent être utilisées en combinaison avec des modèles de diffusion ou des CNN standard
    • Leur adoption en environnement de production soulève plusieurs défis
      • collecte des données d’entraînement, segmentation et étiquetage des objets, ajustement fin des modèles, etc.
    • Des outils comme V7, Nvidia Deepstream SDK et Roboflow apparaissent pour répondre à ces défis
    • Deepstream et Roboflow fournissent à la fois une GUI et des API intégrées pour la gestion des flux vidéo
  • OpenBCI Galea

    • Il s’agit d’une plateforme technologique non invasive pour les interfaces cerveau-machine (BCI)
    • Elle utilise des signaux électrophysiologiques comme l’EEG pour offrir une alternative moins risquée que les implants cérébraux
    • C’est le produit le plus récent d’OpenBCI, combinant les fonctions d’un casque VR et une BCI
    • Elle fournit des flux de données physiologiques synchronisés dans le temps, des capteurs de position spatiale et du suivi du regard
    • Les données des capteurs peuvent être utilisées dans Unity ou Unreal
    • Proposée comme plateforme open source, elle soutient l’innovation des chercheurs
  • PGLite

    • Il s’agit d’un build WASM de la base de données PostgreSQL
    • Il peut s’exécuter directement dans un navigateur web sans machine virtuelle Linux
    • Il permet de créer des bases de données temporaires en mémoire ou d’assurer une persistance sur disque via indexedDB
    • Avec Electric, il permet de construire des applications local-first réactives basées sur PostgreSQL
  • SpinKube

    • Il s’agit d’un runtime serverless open source pour WebAssembly sur Kubernetes
    • Grâce au temps de démarrage en millisecondes de WebAssembly, il offre une solution serverless plus dynamique et flexible pour les workloads à la demande
    • Il simplifie le développement et le déploiement de workloads basés sur WebAssembly
  • Unblocked

    • Il s’agit d’un outil de recherche dans les actifs et artefacts du SDLC
    • Intégré aux outils ALM et de collaboration, il aide à comprendre la codebase et les ressources associées
    • Il fournit un contexte immédiat et pertinent sur le code, facilitant l’exploration et la compréhension de systèmes complexes
    • Il permet aux équipes d’ingénierie d’accéder en toute sécurité aux discussions, actifs et documents liés à leur travail
    • Il capture et partage les connaissances des membres d’équipe les plus expérimentés afin que tous puissent en bénéficier

Hold : aucun

[Tools]

Adopt

  • Bruno

    • Bruno est une alternative desktop open source à Postman et Insomnia pour les tests, le développement et le débogage d’API
    • Il vise, grâce à une conception simple et entièrement hors ligne, à offrir une excellente collaboration, ainsi qu’un haut niveau de confidentialité et de sécurité
    • Les collections sont écrites en Bru Lang, un langage de balisage en texte brut personnalisé, puis enregistrées directement dans le système de fichiers, où elles peuvent être partagées via Git ou l’outil de contrôle de version de votre choix pour collaborer
    • Il peut être utilisé comme application desktop et comme outil CLI, propose une extension officielle VS Code et prévoit un support supplémentaire pour d’autres IDE
    • Il est devenu le choix par défaut de plusieurs équipes Thoughtworks, mais il faut rester prudent car des requêtes en échec de manière inattendue ont été signalées lors du travail dans des environnements VPN et proxy
  • K9s

    • K9s a amélioré ses capacités de visualisation en intégrant des graphiques et des vues plus détaillés
    • Il représente désormais mieux les logs et les métriques, et affiche les ressources personnalisées (CRD) avec plus de souplesse
    • Les opérations sur les pods ont été étendues, l’intégration avec des outils de débogage (par exemple kubectl debug) a été renforcée et la prise en charge des environnements multiclusters a été améliorée
    • La prise en charge des CRD a été nettement améliorée, permettant désormais de mieux explorer et gérer ces ressources et de rendre l’interaction avec les ressources personnalisées plus fluide
    • Le panneau des raccourcis a lui aussi été amélioré, le rendant plus accessible aux développeurs moins familiers avec kubectl
    • Comme K9s était initialement surtout centré sur les équipes DevOps, il s’agit d’une amélioration importante
  • SOPS

    • SOPS est un éditeur de fichiers chiffrés qui prend en charge différents formats de fichiers chiffrés via KMS
    • En matière de gestion des secrets, notre recommandation a toujours été de les séparer du code source
    • Cependant, dans l’esprit de l’infrastructure as code, lorsqu’il faut choisir entre une automatisation complète et quelques étapes manuelles pour gérer, initialiser et faire tourner les secrets d’amorçage (avec des outils comme Vault), les équipes se retrouvent souvent face à un compromis
    • Par exemple, notre équipe utilise SOPS pour gérer les identifiants d’amorçage de l’infrastructure
    • Cependant, dans certaines situations, il est impossible de supprimer les secrets d’un dépôt de code legacy
    • Dans ces cas, nous utilisons SOPS pour chiffrer les secrets dans des fichiers texte
    • SOPS s’intègre à des magasins de clés gérés par le cloud comme les services de gestion de clés AWS et GCP (KMS) ou Azure Key Vault comme source de clés de chiffrement
    • Il fonctionne également en multiplateforme et prend en charge les clés PGP
    • Lorsque des secrets doivent être gérés dans un dépôt de code, plusieurs de nos équipes utilisent par défaut SOPS
  • Visual regression testing tools

    • Nous avions déjà mis en avant les outils de test de régression visuelle et avons observé l’évolution des algorithmes, passés de comparaisons brutes au niveau des pixels à des techniques sophistiquées de reconnaissance de motifs et de reconnaissance optique de caractères (OCR)
    • Les premiers outils de test de régression visuelle généraient beaucoup de faux positifs et n’étaient utiles qu’aux stades tardifs du développement, lorsque l’interface s’était stabilisée
    • BackstopJS évite ce problème en configurant des sélecteurs et des viewports pour exécuter avec précision des tests visuels sur des éléments spécifiques d’une page
    • Cependant, le machine learning a facilité une détection et une comparaison plus précises des éléments visuels, même lorsqu’ils ont été déplacés ou contiennent du contenu dynamique
    • Ces outils sont devenus de plus en plus utiles et sont bien placés pour tirer parti des derniers développements en IA et en machine learning
    • Plusieurs outils commerciaux, comme Applitools et Percy, affirment désormais utiliser l’IA dans les tests de régression visuelle
    • L’une de nos équipes utilise largement Applitools Eyes et se déclare satisfaite des résultats
    • Les tests de régression visuelle ne peuvent pas remplacer des tests fonctionnels end-to-end bien écrits, mais constituent un ajout précieux à la boîte à outils de test
    • Nous les adoptons car ils sont devenus une option par défaut sûre comme composant d’une stratégie complète de tests UI
  • Wiz

    • Wiz s’est imposé comme la plateforme de sécurité cloud de choix sur de nombreux projets
    • Nos équipes apprécient sa capacité à inspecter en continu les changements afin de détecter les risques et les menaces plus rapidement que des outils comparables
    • Wiz peut détecter et signaler les mauvaises configurations, les vulnérabilités et les secrets exposés, à la fois dans les artefacts non déployés en environnement live (images de conteneurs, infrastructure as code) et dans les workloads live (conteneurs, VM et services cloud)
    • Nous apprécions également ses solides capacités de reporting, utiles aussi bien pour les équipes de développement que pour le management
    • Cette analyse aide à comprendre comment une vulnérabilité peut affecter un service donné, afin de pouvoir résoudre le problème dans son contexte

Trial

  • AWS Control Tower

    • AWS Control Tower reste le meilleur choix pour gérer des comptes AWS dans un environnement multi-équipes
    • Il fournit un mécanisme pratique pour préconfigurer des contrôles de sécurité et de conformité qui seront appliqués automatiquement à toute nouvelle landing zone
    • Il s’agit d’un exemple de « conformité au moment du changement », où les contrôles sont appliqués et vérifiés à chaque création d’une nouvelle infrastructure, évitant ainsi des contrôles de conformité manuels ultérieurs
    • AWS Control Tower Account Factory for Terraform (AFT) a continué d’évoluer depuis le précédent volume et est désormais disponible dans davantage de régions AWS
    • AFT permet de provisionner des comptes Control Tower via un pipeline d’infrastructure as code
    • Nous apprécions le fait qu’AFT puisse être personnalisé pour envoyer des webhooks ou exécuter des actions spécifiques afin de s’intégrer de manière sécurisée et fiable à des outils externes comme GitHub Actions
    • Nos équipes ont obtenu d’excellents résultats en utilisant AWS Control Tower pour gérer leurs comptes, mais nous espérons qu’AWS acceptera les contributions de la communauté au projet lorsque des améliorations seront possibles
  • CCMenu

    • Pour les équipes qui pratiquent l’intégration continue, il est important de connaître l’état du build central depuis le système d’intégration continue (CI)
    • Avant la pandémie, les dashboards affichés sur de grands écrans TV dans les team rooms fournissaient cette information d’un simple coup d’œil
    • Avec la persistance du travail à distance, une solution fonctionnant sur les postes de travail individuels des développeurs est devenue nécessaire
    • Sur Mac, ce besoin est couvert par une petite application appelée CCMenu, écrite par un Thoughtworker
    • Initialement partie intégrante de CruiseControl, cette application fonctionne avec tout serveur capable de fournir des informations au format cctray, y compris Jenkins et TeamCity
    • Une réécriture récente a ajouté la prise en charge de GitHub Actions et ouvre la voie à une intégration plus poussée avec davantage de serveurs CI et de modes d’authentification
  • ClickHouse

    • ClickHouse est une base de données open source en colonnes de type online analytical processing (OLAP) pour l’analytique en temps réel
    • Lancé en 2009 comme projet expérimental, il est arrivé à maturité en tant que base de données analytique performante et extensible de façon linéaire
    • Grâce à un moteur de traitement des requêtes efficace et à des capacités de compression des données, il est bien adapté à l’exécution de requêtes interactives sans pré-agrégation
    • ClickHouse est un bon choix pour stocker les données OpenTelemetry
    • Son intégration avec Jaeger permet de stocker de grands volumes de données de traçage et de les analyser efficacement
  • Devbox

    • Malgré les progrès des outils de développement, maintenir un environnement de développement local cohérent reste un défi pour de nombreuses équipes
    • L’onboarding de nouveaux ingénieurs exige souvent d’exécuter des commandes ou des scripts personnalisés susceptibles d’échouer de manière imprévisible selon les systèmes, ce qui peut entraîner des incohérences
    • Pour résoudre ce problème, nos équipes s’appuient de plus en plus sur Devbox
    • Devbox est un outil en ligne de commande qui fournit une interface accessible pour créer des environnements de développement local reproductibles et spécifiques à un projet en s’appuyant sur le gestionnaire de paquets Nix, sans utiliser de machine virtuelle ni de conteneur
    • Une fois configuré pour une base de code, une seule commande CLI (devbox shell) suffit pour reproduire l’environnement défini sur un nouvel appareil, ce qui simplifie grandement le workflow d’onboarding
    • Devbox prend en charge les shell hooks, les scripts personnalisés et la génération de devcontainer.json pour s’intégrer à VSCode
  • Difftastic

    • Difftastic est un outil qui met en évidence les différences entre des fichiers de code d’une manière sensible à la syntaxe
    • Cela diffère fortement des outils de comparaison de texte comme la commande Unix diff
    • Par exemple, Difftastic ignore les retours à la ligne insérés pour découper de longues instructions dans des langages délimités par des points-virgules comme Java ou TypeScript
    • L’outil met en évidence uniquement les changements qui affectent la syntaxe du programme
    • Pour cela, il analyse d’abord les fichiers en arbres syntaxiques abstraits, puis utilise l’algorithme de Dijkstra pour calculer la distance entre les arbres
    • Nous avons constaté que Difftastic est particulièrement utile pour comprendre les changements lors de la revue de grandes bases de code
    • Difftastic peut être utilisé avec tout langage de programmation pour lequel un parseur est disponible, et prend en charge par défaut plus de 50 langages de programmation ainsi que des formats de texte structurés comme CSS et HTML
    • Ce n’est pas un nouvel outil, mais nous pensons qu’il mérite d’être signalé à l’ère des assistants de codage basés sur les LLM, où la revue avec intervention humaine devient de plus en plus importante
  • LinearB

    • LinearB, une plateforme d’intelligence en ingénierie logicielle, fournit aux responsables engineering des insights fondés sur les données pour soutenir l’amélioration continue
    • Elle aligne des domaines clés comme le benchmarking, l’automatisation des workflows et les investissements ciblés pour améliorer l’expérience développeur et la productivité
    • L’expérience avec LinearB souligne sa capacité à favoriser une culture d’amélioration et d’efficacité au sein des équipes engineering
    • Notre équipe a utilisé la plateforme pour suivre des métriques clés d’ingénierie, identifier les domaines nécessitant des améliorations et mettre en œuvre des actions fondées sur des preuves
    • Ces capacités correspondent bien à la proposition de valeur centrale de LinearB : benchmarking, automatisation de la collecte de métriques et activation de l’amélioration pilotée par les données
    • LinearB s’intègre avec le code source, le cycle de vie applicatif, les outils de CI/CD et de communication, et fournit des insights quantitatifs complets sur l’expérience développeur, la productivité et la performance des équipes à l’aide de métriques d’ingénierie préconfigurées et personnalisées
    • En tant que promoteurs de DORA, nous apprécions que LinearB mette l’accent sur ces métriques spécifiques et améliore la capacité à mesurer les aspects clés de la performance de livraison logicielle, essentiels pour gagner en efficacité
    • Historiquement, les équipes ont eu du mal à collecter les métriques spécifiques à DORA, s’appuyant souvent sur des tableaux de bord personnalisés complexes ou des processus manuels
    • LinearB continue d’offrir une solution attrayante en automatisant le suivi de ces métriques et en fournissant des données en temps réel qui soutiennent une prise de décision proactive sur l’expérience développeur, la productivité et la prévisibilité
  • pgvector

    • pgvector est une extension open source de recherche de similarité vectorielle pour PostgreSQL, qui permet de stocker des vecteurs aux côtés de données structurées dans une base de données unique et bien établie
    • Même s’il lui manque certaines fonctions avancées des bases de données vectorielles spécialisées, il bénéficie de la conformité ACID, de la restauration à un instant donné et d’autres capacités robustes de PostgreSQL
    • Avec la hausse des applications fondées sur l’IA générative, nous constatons une augmentation des cas d’usage nécessitant de stocker des vecteurs d’embedding et de les interroger efficacement pour des recherches de similarité, un besoin auquel pgvector répond efficacement
    • Compte tenu de l’augmentation de l’usage de pgvector en production, en particulier chez les équipes utilisant déjà des fournisseurs cloud proposant PostgreSQL managé, ainsi que de sa capacité démontrée à répondre aux besoins courants de recherche vectorielle sans nécessiter de stockage vectoriel séparé, nous avons confiance dans son potentiel
    • Notre équipe l’a utilisé avec succès dans des projets comparant des données structurées et non structurées, ce qui montre son potentiel d’adoption plus large
    • C’est pourquoi nous faisons passer pgvector au stade Trial
  • Snapcraft build tool

    • Snapcraft est un outil open source en ligne de commande pour construire et packager des applications autonomes appelées snaps sur Ubuntu, d’autres distributions Linux et macOS
    • Les snaps peuvent être déployés et maintenus facilement sur différentes plateformes matérielles, y compris des ordinateurs Linux, des environnements virtuels et des systèmes informatiques embarqués dans les véhicules
    • Snapcraft propose un app store public pour publier des snaps, mais notre équipe utilise l’outil de build pour packager des systèmes de conduite autonome sous forme de snaps sans les publier dans l’app store public
    • Cela permet de construire, tester et déboguer localement des systèmes logiciels embarqués tout en les publiant dans un dépôt d’artefacts interne
  • Spinnaker

    • Spinnaker est une plateforme open source de livraison continue créée par Netflix
    • Elle implémente comme fonctionnalités de premier plan la gestion des clusters et le déploiement d’images baked dans le cloud
    • Nous apprécions l’approche opinionated de Spinnaker pour déployer des microservices
    • Nous avions précédemment souligné qu’il n’était pas possible de configurer les pipelines as code, mais l’ajout de la CLI spin a résolu ce problème
    • Nous ne recommandons pas Spinnaker pour des scénarios de CD simples, mais dans des contextes complexes il est devenu l’outil de référence de nombreux utilisateurs, avec des pipelines de déploiement tout aussi complexes
  • TypeScript OpenAPI

    • TypeScript OpenAPI (ou tsoa) est une alternative à Swagger pour générer une spécification OpenAPI à partir du code
    • L’approche est code-first, en utilisant les contrôleurs et modèles TypeScript comme source unique de vérité, et s’appuie sur des annotations ou décorateurs TypeScript au lieu d’exiger des fichiers et une configuration plus complexes lors de l’utilisation d’outils OpenAPI en TypeScript
    • Il génère les spécifications d’API 2.0 et 3.0, et peut générer des routes pour Express, Hapi et Koa
    • Si vous écrivez des API en TypeScript, ce projet mérite votre attention
  • Unleash

    • Utiliser des feature toggles aussi simples que possible reste l’approche que nous recommandons, mais l’augmentation de la taille des équipes et l’accélération du développement rendent la gestion artisanale des toggles plus complexe
    • Unleash est une option largement utilisée par nos équipes pour gérer cette complexité et rendre possible le CI/CD
    • Il peut être utilisé comme service ou être auto-hébergé
    • Il fournit des SDK dans plusieurs langages ainsi qu’une interface utilisateur familière pour l’expérience développeur et l’administration
    • Il n’existe pas encore de support officiel pour la spécification OpenFeature, mais on peut trouver des providers maintenus par la communauté pour Go et Java
    • Unleash peut être utilisé non seulement pour de simples feature toggles, mais aussi pour la segmentation et les déploiements progressifs, ce qui en fait une bonne option pour la gestion des fonctionnalités à grande échelle

Assess

  • Astronomer Cosmos

    • Astronomer Cosmos est un plugin Airflow conçu pour fournir un support natif plus poussé aux workflows dbt Core dans Airflow
    • Une fois le plugin installé, DbtDag convertit les nœuds dbt en tâches/groupes de tâches Airflow lorsqu’il encapsule un workflow dbt, ce qui permet aux ingénieurs de visualiser directement dans l’interface Airflow le graphe de dépendances dbt et l’avancement de l’exécution
    • Il permet aussi d’utiliser des connexions Airflow à la place des profils dbt, ce qui réduit la dispersion de la configuration
    • Nous expérimentons cet outil pour son potentiel à rendre les tâches dbt plus fluides dans Airflow
  • ColPali

    • ColPali est un nouvel outil de recherche dans des documents PDF à l’aide d’un modèle vision-langage, qui répond à la difficulté de construire des applications robustes de retrieval-augmented generation (RAG) capables d’extraire des données de documents multimédias contenant des images, des diagrammes et des tableaux
    • Contrairement aux méthodes traditionnelles qui reposent sur des embeddings textuels ou des techniques de reconnaissance optique de caractères (OCR), ColPali traite des pages PDF complètes et exploite un transformeur visuel pour générer des embeddings prenant en compte à la fois le texte et le contenu visuel
    • Cette approche holistique permet non seulement une meilleure recherche, mais aussi de raisonner sur les raisons pour lesquelles certains documents sont retrouvés, ce qui améliore fortement les performances RAG sur des PDF riches en données
    • Nous avons testé ColPali avec plusieurs clients et obtenu des résultats prometteurs, mais la technologie en est encore à ses débuts
    • Il mérite d’être évalué, en particulier dans les organisations qui manipulent des données documentaires visuelles complexes
  • Cursor

    • La concurrence entre les outils de programmation assistée par IA continue de s’intensifier, et Cursor est celui qui se distingue le plus
    • Cursor est un éditeur de code AI-first conçu pour améliorer la productivité des développeurs en intégrant profondément l’IA dans le workflow de développement
    • Nous avions déjà mis Cursor en avant dans une précédente évaluation du Radar, mais il est clair que ses améliorations continues ont récemment produit un changement qualitatif
    • Dans notre utilisation, Cursor a montré de solides capacités de raisonnement contextuel à partir de bases de code existantes
    • Alors que d’autres outils de code IA comme GitHub Copilot ont tendance à générer des fragments de code et à collaborer sur ceux-ci, les opérations d’édition multilignes et multi-fichiers de Cursor le distinguent
    • Cursor est développé à partir d’un fork de VSCode et offre un mode d’interaction rapide et intuitif, en phase avec l’intuition des développeurs
    • Des actions puissantes peuvent être réalisées avec ctrl/cmd+K et ctrl/cmd+L
    • Cursor est en train de mener une nouvelle vague de concurrence parmi les outils de programmation IA en matière d’interaction développeur et de compréhension des bases de code
  • Data Mesh Manager

    • Data Mesh Manager fournit la couche de métadonnées d’une plateforme de data mesh classique
    • Il met particulièrement l’accent sur la définition des produits de données et les spécifications des contrats de données à l’aide de l’initiative OpenContract, et peut être intégré aux pipelines de build via le DataContract CLI associé
    • L’application fournit également un catalogue de données pour rechercher et explorer les produits de données et leurs métadonnées, et permet une gouvernance fédérée incluant la définition de métriques de qualité des données et la gestion des règles de qualité des données
    • C’est l’un des premiers outils natifs à apparaître dans cet espace, qui ne cherche pas à adapter des plateformes existantes au paradigme du data mesh
  • GitButler

    • L’interface en ligne de commande de Git est puissante et utile, mais elle est aussi tristement réputée pour sa complexité lorsqu’il s’agit de gérer plusieurs branches et d’y préparer des commits
    • GitButler est un client Git qui propose une interface graphique visant à simplifier ce processus
    • Il y parvient en suivant les modifications de fichiers non commit indépendamment de Git, puis en les préparant dans des branches virtuelles
    • On peut soutenir qu’il s’agit d’une solution à un problème qui ne devrait pas exister. Si l’on fait de petits changements fréquents et qu’on les pousse sur le trunk, plusieurs branches ne sont pas nécessaires
    • Cependant, lorsque le workflow inclut des pull requests, surtout avec de longs cycles de revue avant fusion des PR, la structure de branches peut devenir complexe
    • Pour y remédier, GitButler s’intègre à GitHub afin de regrouper sélectivement les changements en pull requests et de les publier directement depuis l’outil
    • GitButler constitue une nouvelle entrée dans la catégorie croissante des blips visant à gérer la complexité inhérente au processus de PR
  • JetBrains AI Assistant

    • JetBrains AI Assistant est un assistant de codage conçu pour s’intégrer de manière fluide à tous les IDE JetBrains afin d’aider à la complétion de code, à la génération de tests et au respect des guides de style
    • Construit sur des modèles comme OpenAI et Google Gemini, il se distingue par sa capacité à mémoriser le style de code pour les sessions futures, garantissant ainsi des sorties cohérentes
    • Nos développeurs ont trouvé la fonction de génération de tests particulièrement utile et ont noté sa capacité à gérer des sorties plus longues sans problème de stabilité
    • Cependant, contrairement à certains concurrents, JetBrains n’héberge pas ses propres modèles, ce qui peut ne pas convenir aux clients préoccupés par le traitement des données par des tiers
    • Malgré cela, son intégration aux IDE JetBrains en fait une option prometteuse pour les équipes qui explorent les assistants de codage alimentés par l’IA
  • Mise

    • Les développeurs qui travaillent dans des environnements polyglottes doivent souvent gérer plusieurs versions de différents langages et outils
    • mise vise à résoudre ce problème en proposant un outil unique pouvant remplacer nvm, pyenv, rbenv, rustup, etc., et peut aussi remplacer asdf
    • Mise est écrit en Rust pour accélérer les interactions avec le shell et, contrairement à asdf qui utilise des shims basés sur le shell, mise modifie à l’avance la variable d’environnement PATH pour que l’exécution des outils se fasse par appel direct
    • C’est l’une des raisons pour lesquelles mise est plus rapide qu’asdf
    • Pour les développeurs déjà familiers avec asdf, mise offre les mêmes capacités avec quelques différences majeures
    • Écrit en Rust, il est plus rapide et propose plusieurs fonctionnalités absentes d’asdf. Par exemple, il permet d’installer simultanément plusieurs versions d’un même outil et fournit des commandes plus tolérantes, y compris le fuzzy matching
    • Il fournit également un exécuteur de tâches intégré utile pour lancer des linters, des tests, des builders, des serveurs et d’autres tâches spécifiques au projet
    • Si vous en avez un peu assez de devoir utiliser plusieurs outils pour gérer votre environnement de développement et de la syntaxe parfois maladroite d’autres outils, mise vaut clairement le détour
  • Mockoon

    • Mockoon est un outil open source de mock d’API
    • Il propose une interface intuitive, des routes personnalisables et des réponses dynamiques, ainsi que des fonctions permettant d’automatiser la génération de jeux de données simulés
    • Mockoon est compatible avec OpenAPI et permet de créer divers scénarios pouvant être testés en local et intégrés aux pipelines de développement
    • Il est aussi possible d’intercepter les requêtes et de ne simuler que les appels définis dans Mockoon afin de créer un « mock partiel »
    • Le mock partiel permet de simuler des routes ou endpoints d’API spécifiques tout en transmettant les autres requêtes au serveur réel
    • Le mock partiel peut être utile dans certains scénarios, mais son usage excessif risque d’introduire une complexité inutile
    • En dehors de cela, Mockoon reste un outil utile pour mettre rapidement en place des API simulées, améliorer le workflow de développement et renforcer l’automatisation
  • Raycast

    • Raycast est un lanceur premium pour macOS qui permet de lancer rapidement des applications, exécuter des commandes, rechercher des fichiers et automatiser des tâches depuis le clavier
    • Notre équipe apprécie ses fonctionnalités intégrées pour les développeurs et sa facilité d’extension pour interagir avec des applications et services tiers comme VSCode, Slack, Jira et Google
    • Raycast est orienté productivité et constitue un outil utile pour celles et ceux qui veulent rationaliser leurs tâches quotidiennes en minimisant les changements de contexte
    • Les utilisateurs Pro peuvent accéder à Raycast AI, un assistant de recherche spécialisé alimenté par l’IA
  • ReadySet

    • ReadySet est un cache de requêtes pour MySQL et PostgreSQL
    • Contrairement aux solutions de cache traditionnelles qui reposent sur une invalidation manuelle, ReadySet exploite le flux de réplication de la base de données pour mettre à jour progressivement le cache
    • Grâce à la matérialisation partielle des vues, ReadySet atteint une latence de queue inférieure à celle des réplicas de lecture traditionnels
    • ReadySet est compatible au niveau du protocole avec MySQL et PostgreSQL, ce qui permet de le déployer devant la base de données afin d’étendre horizontalement les charges de lecture sans modification de l’application
  • Rspack

    • Beaucoup de nos équipes travaillant sur des frontends web sont passées de bundlers plus anciens comme Webpack à Vite
    • Un nouvel entrant dans ce domaine est Rspack, dont la version 1.0 a été publiée après 18 mois de développement
    • Il est conçu comme un remplaçant de Webpack et est compatible avec les plugins et loaders de l’écosystème Webpack
    • Cela peut lui donner un avantage sur Vite lors de la migration de configurations Webpack complexes
    • La principale raison pour laquelle nos équipes migrent vers des outils plus modernes comme Vite et Rspack est l’expérience développeur, en particulier la vitesse
    • Rien ne casse plus le flow de développement que de devoir attendre une à deux minutes avant d’obtenir un retour sur le dernier changement de code
    • Écrit en Rust, Rspack offre des performances bien supérieures à Webpack et, dans de nombreux cas, plus rapides encore que Vite
  • Semantic Router

    • Lors de la création d’applications basées sur des LLM, il est important de déterminer l’intention de l’utilisateur avant d’acheminer une requête vers un agent spécifique ou de déclencher un flux particulier
    • Semantic Router agit comme une couche de décision ultra-rapide pour les LLM et les agents, permettant d’acheminer les requêtes de manière efficace et fiable sur la base du sens sémantique
    • En utilisant des embeddings vectoriels pour inférer l’intention, Semantic Router réduit les appels LLM inutiles et propose une approche plus simple et plus économique pour comprendre l’intention
    • Son potentiel va au-delà de l’inférence d’intention et s’étend à un large éventail de tâches sémantiques en tant que composant polyvalent
    • Grâce à la vitesse et à la flexibilité qu’il offre, il s’impose comme un concurrent solide dans les environnements nécessitant des décisions rapides en temps réel sans le surcoût des LLM
  • Agents d’ingénierie logicielle

    • L’un des sujets les plus brûlants dans l’univers de la GenAI aujourd’hui est le concept d’agents d’ingénierie logicielle
    • Ces outils d’assistance au codage vont au-delà du simple fait d’aider les ingénieurs à écrire des fragments de code ici et là. Ils élargissent l’ampleur des problèmes qu’il est possible de résoudre et, idéalement, exécutent des tâches de manière autonome avec une intervention humaine minimale
    • L’idée est que ces outils puissent prendre des issues GitHub ou des tickets Jira, proposer un plan et des modifications de code, voire générer des pull requests qu’un humain pourra examiner
    • Il s’agit de l’étape logique suivante pour accroître l’impact de l’assistance IA au codage, mais l’objectif d’un agent généraliste capable de traiter l’éventail large de tâches de développement souvent mis en avant reste très ambitieux, et l’état actuel des outils ne le démontre pas encore clairement
    • Cependant, nous pensons que cela pourrait bientôt fonctionner pour des tâches simples à périmètre plus limité, afin de libérer du temps développeur pour des problèmes plus complexes
    • Parmi les outils dont une version bêta d’agent a été publiée figurent GitHub Copilot Workspace, qodo flow, l’agent Tabnine pour JIRA et Amazon Q Developer
    • Le benchmark SWE Bench répertorie davantage d’outils dans cet espace, mais il convient de considérer les benchmarks dans l’univers de l’IA avec un certain scepticisme
  • uv

    • Rust se prête bien à l’écriture d’outils en ligne de commande grâce à ses performances de démarrage rapides, et nous voyons certaines toolchains être réécrites en Rust
    • Dans un précédent Radar, nous avions mentionné Ruff, un linter Python écrit en Rust
    • Dans ce volume, nous avons évalué uv, un outil de gestion de paquets Python écrit en Rust
    • La proposition de valeur d’uv est d’être « extraordinairement rapide », et dans les benchmarks il surpasse largement les autres outils de gestion de paquets Python
    • Cependant, pendant l’évaluation du Radar, nous avons discuté de la question de savoir si optimiser un outil de build à l’échelle de la seconde relevait d’un gain marginal
    • Plus que la performance, ce qui compte pour un système de gestion de paquets, c’est l’écosystème, une communauté mature et un support à long terme
    • Cela dit, les retours des équipes projet ont montré que cette petite amélioration de performance peut grandement aider à améliorer la boucle de feedback et l’expérience développeur globale — nous avons tendance à rendre manuellement le caching CI/CD très complexe pour obtenir ce petit gain de performance ; uv simplifie la gestion des environnements Python
    • Compte tenu du fait qu’il reste encore beaucoup de marge d’amélioration pour la gestion des paquets et des env en développement Python, nous pensons qu’uv est une option qui mérite d’être évaluée
  • Warp

    • Warp est un terminal pour macOS et Linux
    • Il segmente la sortie des commandes en blocs afin d’en améliorer la lisibilité
    • Warp inclut des fonctionnalités basées sur l’IA comme les suggestions intelligentes de commandes et le traitement du langage naturel
    • Il inclut aussi une fonctionnalité de notebook permettant aux utilisateurs d’organiser commandes et sorties, et d’ajouter annotations et explications
    • Ces fonctionnalités peuvent être utilisées pour créer des fichiers README ou des supports d’onboarding, et pour présenter et gérer des workflows terminal de manière structurée et interactive
    • Warp s’intègre facilement avec Starship, un prompt cross-shell flexible, afin de personnaliser l’expérience terminal en récupérant des informations sur les processus en cours, les versions spécifiques des outils utilisés, les détails Git ou encore l’utilisateur Git actuel
  • Zed

    • Après l’arrêt du projet d’éditeur de texte Atom, ses créateurs ont développé un nouvel éditeur appelé Zed
    • Écrit en Rust et optimisé pour tirer parti du matériel moderne, Zed donne une impression de rapidité
    • Il dispose de toutes les fonctionnalités attendues d’un éditeur moderne, notamment la prise en charge de nombreux langages de programmation, un terminal intégré et l’édition multi-buffer
    • L’assistance IA au codage est disponible via l’intégration avec plusieurs fournisseurs de LLM
    • En tant qu’adeptes convaincus du pair programming, nous avons été séduits par les capacités de collaboration à distance intégrées à Zed
    • Les développeurs peuvent se trouver via leur identifiant GitHub, puis collaborer en temps réel dans le même espace de travail
    • Il est encore trop tôt pour juger si les équipes de développement peuvent et veulent se détacher de l’attrait de l’écosystème Visual Studio Code
    • Cependant, Zed est une alternative qui mérite d’être explorée

Hold

  • CocoaPods
    • CocoaPods est depuis longtemps un outil de gestion des dépendances très apprécié pour les projets Cocoa en Swift et Objective-C
    • Depuis plus de 10 ans, il joue un rôle important pour les développeurs iOS et macOS
    • L’équipe CocoaPods a désormais annoncé que le projet passait en mode maintenance et que le développement actif allait cesser
    • L’outil CocoaPods et les ressources associées resteront disponibles, mais aucun développement de nouvelles fonctionnalités ou amélioration n’est prévu
    • Il est recommandé aux développeurs de migrer vers Swift Package Manager
    • Swift Package Manager offre une intégration native avec Xcode et peut bénéficier du support à long terme d’Apple

[Language and Frameworks]

Adopt

  • dbt

    • continue d’être considéré comme une option solide et judicieuse pour implémenter les transformations de données dans les pipelines ELT
    • Nous apprécions le fait qu’il permette une rigueur d’ingénierie et des pratiques telles que la modularité, la testabilité et la réutilisabilité des transformations basées sur SQL
    • Il s’intègre bien avec de nombreux cloud data warehouses, lakehouses et bases de données comme Snowflake, BigQuery, Redshift, Databricks et Postgres, et bénéficie autour de lui d’un écosystème sain de packages communautaires
    • La prise en charge native récemment introduite des tests unitaires (dbt core 1.8+ et l’expérience dbt Cloud « versionless » introduite récemment) renforce encore sa place dans la toolbox
    • La nouvelle fonctionnalité de tests unitaires permet de définir facilement des données de test statiques, de fixer des attentes de sortie et de tester à la fois les modes incrémental et full refresh des pipelines, ce que les équipes apprécient beaucoup
    • Dans de nombreux cas, cela a permis d’abandonner des scripts maison tout en conservant le même niveau de qualité
  • Testcontainers

    • Testcontainers est perçu comme une option par défaut utile pour créer des environnements fiables d’exécution des tests
    • Il s’agit d’une bibliothèque disponible dans plusieurs langages qui dockerise des dépendances de test courantes, y compris différents types de bases de données, des technologies de files d’attente, des services cloud et des dépendances de tests UI comme les navigateurs web, tout en permettant d’exécuter des Dockerfiles personnalisés si nécessaire
    • Une version desktop a récemment été lancée pour offrir une gestion visuelle des sessions de test et des capacités de gestion de scénarios plus complexes, ce que les équipes jugent très utile

Trial

  • CAP

    • Une bibliothèque .NET qui implémente le pattern Outbox afin d’effectuer de façon atomique les mises à jour de base de données et la publication d’événements dans des systèmes de messagerie distribués
    • Elle résout le problème en enregistrant, dans la même transaction de base de données, l’intention de publier des événements
    • Elle prend en charge plusieurs bases de données et plateformes de messagerie, et s’avère utile en garantissant une livraison au moins une fois
  • CARLA

    • Un simulateur open source pour la recherche sur la conduite autonome, utilisé pour tester les systèmes de conduite autonome avant leur déploiement en production
    • Il permet de créer et de réutiliser de manière flexible des modèles 3D de véhicules, de terrains, d’humains, d’animaux, etc., afin de simuler divers scénarios
    • Les systèmes de conduite autonome doivent reconnaître ces objets dynamiques et prendre les mesures appropriées, comme freiner
    • Il est utilisé pour le développement et les tests continus des systèmes de conduite autonome
  • Databricks Asset Bundles

    • Les DABs, passés en GA en avril 2024, s’imposent comme un outil de packaging et de déploiement d’actifs Databricks qui favorise l’adoption de pratiques de software engineering dans les équipes data
    • Ils permettent de regrouper en bundle les workflows, la configuration des jobs et le code exécuté par ces jobs, puis de les déployer sur plusieurs environnements via des pipelines CI/CD
    • Ils prennent en charge des templates pour les types d’actifs courants ainsi que des templates personnalisés, ce qui permet de créer des templates de service sur mesure pour des projets de data engineering et de ML
    • Ils sont de plus en plus adoptés comme un élément clé des workflows d’ingénierie
    • Ils incluent la prise en charge des templates de notebooks et du déploiement en production, mais nous ne recommandons pas de mettre les notebooks en production
    • À la place, ils encouragent à écrire délibérément du code de production avec des pratiques d’ingénierie qui répondent aux exigences de maintenabilité, de résilience et de scalabilité
  • Instructor

    • Bibliothèque utile lorsqu’on demande à un LLM des réponses structurées (JSON, YAML, etc.), qu’on les analyse ensuite pour les utiliser dans une application
    • Les LLM étant non déterministes, ils peuvent ne pas toujours se comporter comme demandé
    • Elle permet de définir la structure de sortie attendue et de configurer des tentatives de relance si le LLM ne renvoie pas la structure demandée
    • Elle offre aussi la possibilité d’analyser des structures partielles dans un flux, ce qui permet de diffuser les résultats en streaming sans attendre la réponse complète
  • Kedro

    • Outil de MLOps nettement amélioré, qui conserve un fort accent sur la modularité et les bonnes pratiques d’ingénierie
    • Met l’accent sur la modularité, notamment avec l’introduction du package autonome kedro-datasets, qui sépare le code des données
    • Améliorations de la CLI, des modèles de projets de démarrage et des fonctions de télémétrie
    • Le lancement récent d’une extension VS Code améliore l’expérience développeur
  • LiteLLM

    • Bibliothèque s’intégrant de façon fluide aux API de nombreux fournisseurs de LLM, en standardisant les interactions via le format d’API OpenAI
    • Prend en charge un large éventail de fournisseurs et de modèles, avec une interface unifiée pour les complétions, les embeddings et la génération d’images
    • Simplifie l’intégration en transformant les entrées pour correspondre aux exigences spécifiques des endpoints de chaque fournisseur
    • Fournit un framework pour mettre en œuvre les fonctions opérationnelles nécessaires aux applications en production, comme le cache, la journalisation, la limitation de débit et la répartition de charge
    • Permet de remplacer facilement différents modèles, une capacité essentielle dans le contexte actuel d’évolution rapide des modèles
    • Il faut toutefois garder à l’esprit que, les réponses des modèles variant pour un même prompt, une méthode d’appel cohérente ne suffit pas forcément à optimiser les performances des complétions
    • Chaque modèle implémentant ses fonctions avancées à sa manière, une interface unique peut difficilement couvrir tous les besoins
  • LlamaIndex

    • Comprend un moteur permettant de concevoir des applications LLM spécialisées par domaine et basées sur le contexte, avec prise en charge de tâches comme l’ingestion de données, l’indexation vectorielle et les questions-réponses en langage naturel sur des documents
    • LlamaIndex permet d’automatiser l’ingestion de documents, d’indexer des embeddings de documents et de construire des pipelines RAG (Retrieval-Augmented Generation) qui interrogent ces embeddings à partir des entrées utilisateur
    • Avec LlamaHub, il est possible d’étendre ou de personnaliser des modules LlamaIndex, et de créer des applications LLM avec les fournisseurs de LLM, d’embeddings et de stockage vectoriel de son choix
  • LLM Guardrails

    • Ensemble de directives, de politiques ou de filtres visant à empêcher un LLM de générer des contenus nuisibles, trompeurs ou non pertinents
    • Peut aussi servir à protéger les applications LLM contre des utilisateurs malveillants cherchant à détourner le système via des techniques comme la manipulation des entrées
    • Joue le rôle de filet de sécurité en fixant des limites à la manière dont le modèle traite et génère du contenu
    • Des frameworks émergents dans ce domaine, comme NeMo Guardrails, Guardrails AI et Aporia Guardrails, sont utiles
    • Il est recommandé de mettre en place des guardrails sur toutes les applications LLM et d’améliorer en continu les règles et politiques
    • C’est essentiel pour construire des applications de chat LLM responsables et fiables
  • Medusa

    • La plupart des solutions e-commerce destinées à construire des sites marchands ont tendance à tomber dans le piège du 80/20
    • Medusa est une plateforme de commerce open source hautement personnalisable et bien équilibrée, qui permet aux développeurs de créer des expériences d’achat uniques et sur mesure
    • Construite sur Next.js et PostgreSQL, elle accélère le processus de développement grâce à une gamme complète de modules, allant du panier et de la gestion des commandes jusqu’à des fonctions avancées comme les modules de cartes-cadeaux et le calcul des taxes par région
    • Appliquée à plusieurs projets, elle a été jugée comme un framework de valeur
  • Pkl

    • Langage de configuration open source et ensemble d’outils initialement créés par Apple pour un usage interne
    • Sa fonction principale est un système de typage et de validation capable de détecter les erreurs de configuration avant le déploiement
    • Permet de réduire la duplication de code, par exemple dans les cas de surcharge selon l’environnement, et de valider les modifications de configuration avant leur mise en production
    • Offre une large intégration avec les IDE et les langages, y compris la génération de fichiers JSON, PLIST, YAML, .properties et la génération de code
  • ROS 2

    • Framework open source pour le développement de systèmes robotiques
    • Fournit des bibliothèques et des outils permettant une implémentation modulaire d’applications couvrant des fonctions comme la communication interprocessus, l’exécution multithread et la qualité de service
    • S’améliore par rapport aux versions précédentes avec de meilleures capacités temps réel, une modularité renforcée, un support élargi de diverses plateformes et des valeurs par défaut plus pertinentes
    • Pour les constructeurs qui développent des applications embarquées complexes et en constante évolution, comme les fonctions de conduite autonome, l’architecture à base de nœuds et le modèle de communication orienté topics sont particulièrement attractifs
    • Son usage augmente progressivement dans l’industrie automobile
  • seL4

    • Dans les scénarios SDV ou autres contextes critiques pour la sécurité, la fiabilité temps réel du système d’exploitation est essentielle
    • Comme de fortes barrières à l’entrée ont permis à un petit nombre d’entreprises de dominer ce domaine, des solutions open source comme seL4 ont une grande valeur
    • seL4 est un microkernel de système d’exploitation haute assurance et haute performance
    • Il utilise des méthodes de vérification formelle pour s’assurer que le comportement du système d’exploitation respecte les spécifications de façon « mathématique »
    • L’architecture en microkernel minimise les responsabilités du cœur du système afin de garantir sa stabilité
    • Des entreprises de véhicules électriques comme NIO collaborent avec l’écosystème seL4, et ce domaine pourrait encore progresser à l’avenir
  • SetFit

    • La plupart des outils actuels fondés sur l’IA sont génératifs, produisent du texte et des images, et utilisent GPT
    • Pour les tâches textuelles plus classiques, comme la classification de texte ou la détermination d’intention, les sentence transformers sont préférés
    • SetFit est un framework de fine-tuning pour sentence transformers
    • Il utilise l’apprentissage contrastif pour séparer différentes classes d’intention, atteignant souvent une séparation nette avec très peu d’exemples
    • Les sentence transformers peuvent aussi jouer un rôle dans les systèmes d’IA générative
    • Son utilisation avec SetFit pour la détection d’intention dans des systèmes de chatbot orientés client basés sur des LLM a été concluante, et un classifieur basé sur SetFit a été retenu pour un filtrage plus strict
  • vLLM

    • Moteur d’inférence pour LLM à haut débit et efficace en mémoire, pouvant être exécuté dans le cloud ou on-premise
    • Prend en charge de manière fluide plusieurs architectures de modèles ainsi que des modèles open source populaires
    • En déployant des workers vLLM conteneurisés sur des plateformes GPU comme NVIDIA DGX et Intel HPC, il est possible d’héberger des modèles tels que Llama 3.1 (8B et 70B), Mistral 7B et Llama-SQL pour l’assistance au code, la recherche de connaissances, les interactions en langage naturel avec des bases de données, etc.
    • Compatible avec le standard OpenAI SDK, ce qui favorise un serving de modèles cohérent
    • Le AI Model Catalog d’Azure améliore les performances de serving des modèles via des conteneurs d’inférence personnalisés et utilise vLLM comme moteur d’inférence par défaut grâce à son haut débit et à sa gestion mémoire efficace
    • Le framework vLLM est en train de s’imposer comme le choix par défaut pour le déploiement de grands modèles

Assess

  • Apache XTable™

    • Aucun vainqueur clair ne se dégage parmi les formats de table ouverts disponibles
    • Des outils comme Delta UniForm permettent l’interopérabilité entre ces formats
    • Apache XTable™ est un projet incubé par Apache qui favorise une interopérabilité bidirectionnelle complète entre Hudi, Delta et Iceberg
    • En raison des différences fonctionnelles entre ces formats, dépendre fortement à long terme d’une interopérabilité totale pourrait contraindre les équipes à n’utiliser que les fonctionnalités du « plus petit dénominateur commun »
  • dbldatagen

    • La préparation de données de test pour le data engineering représente un défi important
    • Transférer des données de la production vers un environnement de test peut être risqué, si bien que les équipes s’appuient souvent sur des données fictives ou synthétiques
    • dbldatagen (Databricks Labs Data Generator) est une bibliothèque Python qui génère des données synthétiques dans les environnements Databricks pour les tests, le benchmarking, les démonstrations, etc.
    • dbldatagen peut générer des milliards de lignes en quelques minutes et produire des données synthétiques à grande échelle pour divers scénarios, notamment plusieurs tables, la capture de données de changement et les opérations de fusion/jointure
  • DeepEval

    • DeepEval est un framework d’évaluation open source en Python destiné à évaluer les performances des LLM
    • Il peut être utilisé pour évaluer des applications RAG (retrieval-augmented generation) et d’autres types d’applications construites avec des frameworks populaires comme LlamaIndex ou LangChain, ainsi que pour établir des références et des benchmarks afin de comparer différents modèles selon les besoins
    • DeepEval fournit des métriques et des fonctionnalités complètes pour évaluer les performances des LLM, notamment la détection des hallucinations, la pertinence des réponses et l’optimisation des hyperparamètres
    • Il propose une intégration avec pytest, permettant d’intégrer facilement des suites de tests dans un pipeline de CI (continuous integration) avec des assertions
  • DSPy

    • Aujourd’hui, la plupart des applications basées sur des modèles de langage reposent sur des modèles de prompt ajustés manuellement pour des tâches spécifiques
    • DSPy est un framework pour développer ce type d’applications et adopte une approche différente qui élimine l’ingénierie directe des prompts
    • À la place, il introduit des abstractions de haut niveau liées au flux du programme (via des modules pouvant être empilés les uns sur les autres), aux métriques à optimiser et aux données à entraîner ou à tester
    • Il optimise ensuite les prompts ou les poids du modèle de langage sous-jacent en fonction des métriques définies
    • La base de code obtenue ressemble fortement à l’entraînement de réseaux neuronaux avec PyTorch
  • Flutter for Web

    • Flutter est connu pour son support cross-platform des applications iOS et Android
    • Il s’étend désormais à davantage de plateformes
    • Il est possible de créer des applications pour iOS, Android et le navigateur à partir de la même base de code
    • Toutes les applications web ne se prêtent pas à Flutter, mais il est particulièrement adapté aux progressive web apps, aux single-page apps et aux cas de conversion d’applications mobiles Flutter existantes vers le web
    • Flutter prenait déjà en charge WebAssembly (WASM) comme cible de compilation sur le canal expérimental, ce qui signifiait un développement actif avec des bugs et des problèmes de performance potentiels
    • Les versions récentes l’ont stabilisé
    • Les performances des applications web Flutter compilées vers une cible WASM sont nettement supérieures à celles de la cible de compilation JavaScript
    • Des performances proches du natif sur différentes plateformes font aussi partie des raisons pour lesquelles de nombreux développeurs ont choisi Flutter au départ
  • kotaemon

    • kotaemon est un ensemble d’outils et un framework open source basés sur le RAG pour créer des applications de Q&R sur des documents de base de connaissances
    • Il peut comprendre plusieurs types de documents, dont les formats PDF et DOC, et fournit une interface web basée sur Gradio permettant aux utilisateurs d’organiser leur base de connaissances et d’interagir avec elle via une interface de chat
    • Il dispose d’un pipeline RAG intégré avec vector store et peut être étendu via un SDK
    • Il permet aussi de citer les documents source dans les réponses, avec un aperçu inline sur le web et un score de pertinence
    • Pour ceux qui recherchent une application de Q&R documentaire basée sur le RAG, ce framework personnalisable constitue un très bon point de départ
  • Lenis

    • Lenis est une bibliothèque de smooth scrolling légère mais puissante, conçue pour les navigateurs modernes
    • Elle permet des expériences de défilement fluide comme la synchronisation du scroll avec WebGL et les effets de parallaxe, ce qui la rend idéale pour les équipes qui construisent des pages avec des interactions de scroll souples et fluides
    • Les développeurs ont constaté que Lenis est simple et facile à utiliser, et qu’elle propose une approche rationalisée pour créer un défilement fluide
    • Toutefois, la bibliothèque peut poser des problèmes d’accessibilité, en particulier les interactions de défilement vertical et horizontal qui peuvent perturber les utilisateurs en situation de handicap
    • Bien que visuellement attrayante, elle nécessite une mise en œuvre soignée pour préserver l’accessibilité
  • LLMLingua

    • LLMLingua améliore l’efficacité des LLM en compressant les prompts grâce à un petit modèle de langage qui supprime les tokens non essentiels, afin de minimiser la perte de performance
    • Cette approche permet aux LLM de traiter plus efficacement des prompts plus longs tout en conservant les capacités de raisonnement et d’apprentissage en contexte, répondant ainsi à des enjeux comme le coût, la latence d’inférence et le traitement du contexte
    • Compatible avec différents LLM sans entraînement supplémentaire et prenant en charge des frameworks comme LLamaIndex, LLMLingua convient bien à l’optimisation des performances d’inférence des LLM
  • Microsoft Autogen

    • Microsoft Autogen est un framework open source qui simplifie la création et l’orchestration d’agents IA, en permettant la collaboration multi-agents pour résoudre des tâches complexes
    • Il prend en charge à la fois des workflows autonomes et des workflows human-in-the-loop, et offre une compatibilité avec divers LLM et outils pour les interactions entre agents
    • Une équipe a utilisé Autogen chez un client pour créer une plateforme basée sur l’IA dans laquelle chaque agent représentait une compétence spécifique, comme la génération de code, la revue de code ou le résumé de documents
    • En définissant le modèle et le workflow appropriés via le framework, l’équipe peut créer de nouveaux agents de manière fluide et cohérente
    • En s’appuyant sur LlamaIndex pour orchestrer les workflows, les agents peuvent gérer efficacement des tâches comme la recherche de produits et les suggestions de code
    • Autogen a montré un fort potentiel, notamment en environnement de production, mais des inquiétudes subsistent quant à la scalabilité et à la gestion de la complexité à mesure que davantage d’agents sont ajoutés
    • Une évaluation supplémentaire est nécessaire pour juger de sa viabilité à long terme dans l’extension de systèmes basés sur des agents
  • Pingora

    • Pingora est un framework Rust destiné à créer des services réseau rapides, fiables et programmables
    • Développé à l’origine par Cloudflare pour remédier aux limites de Nginx, Pingora montre déjà un grand potentiel, avec de nouveaux proxies comme River construits sur cette base
    • La plupart des gens ne font pas face à une échelle comparable à celle de Cloudflare, mais rencontrent des scénarios où un routage flexible au niveau de la couche applicative est essentiel pour les services réseau
    • Grâce à l’architecture de Pingora, il est possible d’exploiter toute la puissance de Rust dans ces situations sans sacrifier la sécurité ni les performances
  • Ragas

    • Ragas est un framework conçu pour évaluer les performances des pipelines de retrieval-augmented generation (RAG), en relevant le défi d’évaluer à la fois les composants de recherche et de génération
    • Il fournit des métriques structurées telles que la fidélité, la pertinence des réponses et l’utilisation du contexte pour aider à évaluer l’efficacité des systèmes basés sur le RAG
    • Les développeurs l’ont trouvé utile pour exécuter régulièrement des évaluations afin d’affiner des paramètres comme le top-k des résultats de recherche et les modèles d’embedding
    • Certaines équipes ont intégré Ragas dans des pipelines exécutés quotidiennement, à chaque modification des modèles ou des modèles de prompt
    • Bien que les métriques fournissent des insights solides, des inquiétudes existent quant au fait que le framework puisse ne pas capturer toutes les nuances ni les interactions complexes des pipelines RAG sophistiqués, et il est recommandé d’envisager des frameworks d’évaluation complémentaires
    • Malgré cela, Ragas se distingue par sa capacité à simplifier l’évaluation du RAG en environnement de production et à fournir des améliorations guidées par les données
  • Score

    • De nombreuses organisations qui mettent en place leur propre plateforme de développement interne ont tendance à créer leur propre système d’orchestration de plateforme afin d’appliquer des standards organisationnels entre les développeurs et les équipes d’hébergement de la plateforme
    • Cependant, les fonctionnalités fondamentales d’une plateforme de déploiement « paved road » pour héberger des workloads conteneurisés de manière sûre, cohérente et conforme sont similaires d’une organisation à l’autre
    • Ne serait-il pas utile de disposer d’un langage commun pour exprimer ces exigences ?
    • Score montre un potentiel pour devenir un standard dans ce domaine
    • Il s’agit d’un langage déclaratif au format YAML qui décrit comment déployer des workloads conteneurisés, ainsi que les services et paramètres spécifiques nécessaires à leur exécution
    • Score a été initialement développé comme langage de configuration pour le produit Platform Orchestrator de Humanitec, mais il s’agit désormais d’un projet open source placé sous la gouvernance de la CNCF (Cloud Native Computing Foundation)
    • Avec le soutien de la CNCF, Score pourrait être adopté plus largement au-delà du produit de Humanitec
    • Il est publié avec deux implémentations de référence : Kubernetes et Docker Compose
    • L’extensibilité de Score devrait encourager des contributions de la communauté pour d’autres plateformes
    • Score présente des similitudes avec la spécification Open Application Model (OAM) pour Kubevela, mais il est davantage axé sur le déploiement de workloads conteneurisés que sur l’ensemble de l’application
    • Il existe aussi un léger chevauchement avec SST, mais SST s’intéresse davantage au déploiement direct sur l’infrastructure cloud qu’aux plateformes d’ingénierie interne
    • Nous le suivons avec intérêt à mesure qu’il évolue
  • shadcn

    • shadcn remet en question le concept traditionnel de bibliothèque de composants en proposant des composants réutilisables pouvant être copiés-collés
    • Cette approche donne aux équipes une propriété et un contrôle complets, ce qui facilite la personnalisation et l’extension, un domaine où des bibliothèques plus classiques et généralistes comme MUI et Chakra UI montrent souvent leurs limites
    • Construit avec Radix UI et Tailwind CSS, shadcn s’intègre de façon fluide à toute application basée sur React, ce qui en fait un bon choix pour les projets qui privilégient le contrôle et l’extensibilité
    • Il inclut une CLI qui prend en charge le processus de copie-collage des composants dans le projet
    • Comme il réduit aussi les dépendances cachées et évite les implémentations trop étroitement couplées, shadcn attire l’attention comme alternative séduisante pour les équipes qui recherchent une approche plus pragmatique et adaptable du développement frontend
  • Slint

    • Slint est un framework GUI déclaratif pour créer des interfaces utilisateur natives pour des applications Rust, C++ ou JavaScript
    • C’est un framework UI multiplateforme doté de fonctionnalités importantes comme la prévisualisation en direct, la conception d’interfaces réactives, l’intégration à VS Code et une expérience utilisateur native, mais nous voulons surtout souligner son utilité pour les systèmes embarqués
    • Les équipes qui développent des applications embarquées ont traditionnellement eu peu d’options pour le développement d’UI, chacune avec ses propres avantages et inconvénients
    • Slint utilise un langage de balisage facile à utiliser, proche du HTML, et compile directement en code machine, offrant un excellent équilibre entre expérience développeur et performances
    • Il affiche également une faible empreinte en ressources à l’exécution, un point essentiel pour les systèmes embarqués
    • En résumé, nous apprécions Slint parce qu’il apporte à l’écosystème embarqué des pratiques éprouvées du développement web et mobile
  • SST

    • SST est un framework destiné à déployer des applications dans un environnement cloud avec tous les services nécessaires à leur fonctionnement
    • SST n’est pas un simple outil d’IaC, mais un framework doté d’une API TypeScript pour définir l’environnement applicatif, d’un service qui déploie l’application lorsqu’il est déclenché par un Git push, ainsi que d’une console GUI permettant de gérer l’application résultante et d’appeler les fonctions d’administration de SST
    • À l’origine, SST reposait sur AWS Cloud Formation et CDK, mais les versions récentes sont implémentées au-dessus de Terraform et Pulumi, ce qui le rend en théorie indépendant du cloud
    • SST prend en charge nativement le déploiement de plusieurs frameworks web standard, dont Next.js et Remix, mais aussi les applications d’API headless
    • SST semble appartenir à sa propre catégorie
    • Il présente des similitudes avec des outils d’orchestration de plateforme comme Kubevela, mais propose aussi des fonctions pratiques pour les développeurs, comme un mode live qui proxifie les appels AWS Lambda vers des fonctions exécutées sur la machine locale du développeur
    • Pour l’instant, SST reste encore un sujet de curiosité, mais c’est un projet et une catégorie d’outils à surveiller à mesure qu’il évolue

Hold : aucun

10 commentaires

 
kane44 2024-11-05

Merci. C'est intéressant.

 
dastjead 2024-11-04

Vous avez dû fournir beaucoup d’efforts... merci beaucoup !

 
roxie 2024-10-31

Pour revenir sur Lenis, la bibliothèque de défilement évoquée au passage... les animations de scroll fluides, comme sur le site d’Apple, me paraissent personnellement assez inconfortables.

Quand j’essaie de naviguer avec la molette de la souris, j’ai l’impression que l’animation se coupe sans arrêt, et quand j’utilise la flèche bas pour me déplacer, ça va beaucoup trop vite pour lire le contenu confortablement.

Au final, sous Windows, la seule façon de vraiment « profiter » de ce genre de site, c’est de cliquer sur la molette puis de faire défiler très lentement avec un tout petit mouvement. Mais je ne suis pas sûr que ça en vaille la peine. En un mot, je ne sais pas si c’est vraiment une bonne technique.

 
roxie 2024-10-31

Databricks revient à une fréquence presque effrayante.

 
halfenif 2024-10-29

J'ai abandonné en lisant. T_T

 
savvykang 2024-10-29

J’ai rassemblé les produits/services déjà publiés sur GeekNews.

Platforms - Assess

Platforms - Trial

Language and Frameworks - Adopt

Language and Frameworks - Assess

Language and Frameworks - Trial

Tools - Adopt

Tools - Assess

Tools - Trial

 
wwhite103 2024-10-29

Merci. C'est intéressant~

 
nottiger 2024-10-29

Je l’ai bien lu. Merci.

 
bbulbum 2024-10-29

J’ai pris beaucoup de plaisir à le lire. Merci.