Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Volume 31 | October 2024

Languages & Frameworks

  • Languages & Frameworks

    Adopt Trial Assess Hold Adopt Trial Assess Hold
  • New
  • Moved in/out
  • No change

Languages & Frameworks

Adopt ?

  • 75. dbt

    We continue to see dbt as a strong, sensible option for implementing data transformations in ELT pipelines. We like that it lends itself to engineering rigor and enables practices like modularity, testability and reusability of SQL-based transformations. dbt integrates well with many cloud data warehouses, lakehouses and databases — including Snowflake, BigQuery, Redshift, Databricks and Postgres — and has a healthy ecosystem of community packages surrounding it. The native support it recently introduced (in dbt core 1.8+ and the recently introduced dbt Cloud "versionless" experience) for unit testing further strengthens its position in our toolbox. Our teams appreciate that the new unit testing feature allows them to easily define static test data, set up output expectations and test both incremental and full-refresh modes of their pipelines. In many cases, this has allowed them to retire homegrown scripts while maintaining the same level of quality.

  • 76. Testcontainers

    In our experience, Testcontainers are a useful default option for creating a reliable environment for running tests. It's a library, ported to multiple languages, that Dockerizes common test dependencies — including various types of databases, queuing technologies, cloud services and UI testing dependencies like web browsers — with the ability to run custom Dockerfiles when needed. Recently, a desktop version was released that allows for the visual management of test sessions and the ability to manage more complex scenarios which our teams have found very useful.

Trial ?

  • 77. CAP

    CAP is a .NET library that implements the Outbox pattern. When working with distributed messaging systems like RabbitMQ or Kafka, we frequently face the challenge of ensuring that database updates and event publications are performed atomically. CAP addresses this challenge by recording the intent to publish the event in the same database transaction that caused the event. We find CAP to be quite useful as it supports several databases and messaging platforms while guaranteeing at-least-once delivery.

  • 78. CARLA

    CARLA is an open-source simulator for autonomous driving research used to test autonomous driving systems before production deployment. It offers flexibility in creating and reusing 3D models of vehicles, terrain, humans, animals and more, making it possible to simulate scenarios like a pedestrian stepping onto the street or encountering an oncoming vehicle at a specific speed. The autonomous driving system under test must recognize these dynamic actors and take appropriate action — such as braking. Our teams use CARLA for the ongoing development and testing of autonomous driving systems.

  • 79. Databricks Asset Bundles

    Databricks Asset Bundles (DABs), which reached general availability in April 2024, is becoming the go-to tool for packaging and deploying Databricks assets that facilitates the adoption of software engineering practices in our data teams. DABs supports packaging the configuration of workflows and tasks, as well as the code to be executed in those tasks, as a bundle that can be deployed to multiple environments through CI/CD pipelines. It comes with templates for common types of assets and supports custom templates, which allows for the creation of tailored service templates for data engineering and ML projects. Our teams have increasingly adopted it as a key part of their engineering workflows. Even though DABs includes templates for notebooks and supports deploying them to production, we don't recommend productionizing notebooks and instead encourage intentionally writing production code with the engineering practices that support the maintainability, resiliency and scalability needs of such workloads.

  • 80. Instructor

    When we use large language model (LLM) chatbots as end users, they usually come back to us with an unstructured natural language answer. When building GenAI applications that are more than chatbots, it can be useful to ask the LLM for a structured answer in JSON, YAML or other formats, and then parse and use that response in the application. However, as LLMs are nondeterministic, they might not always do what we ask them to do. Instructor is a library that can be used to help us request structured output from LLMs. You can define the intended output structure and configure retries if the LLM doesn't return the structure you asked for. As the best end user experience for working with LLMs is often to stream the results to them instead of waiting for the full response, Instructor also takes care of parsing partial structures from a stream.

  • 81. Kedro

    Kedro has significantly improved as a tool for MLOps and has maintained its focus on modularity and engineering practices, which we liked from the start. One step that highlights its modularity is the introduction of the standalone kedro-datasets package, which decouples code from data. Kedro has added enhancements in its CLI, starter project templates and telemetry capabilities. Additionally, the recent release of a VS Code extension is a good boost to the developer experience.

  • 82. LiteLLM

    LiteLLM is a library for seamless integration with various large language model (LLM) providers' APIs that standardizes interactions through an OpenAI API format. It supports an extensive array of providers and models and offers a unified interface for completion, embedding and image generation. LiteLLM simplifies integration by translating inputs to match each provider's specific endpoint requirements. It also provides a framework needed to implement many of the operational features needed in a production application such as caching, logging, rate limiting and load balancing. This ensures uniform operation across different LLMs. Our teams are using LiteLLM to make it easier to swap various models in and out — a necessary feature in today's landscape where models are evolving quickly. It's crucial to acknowledge when doing this that model responses to identical prompts vary, indicating that a consistent invocation method alone may not fully optimize completion performance. Also, each model implements add-on features uniquely and a single interface may not suffice for all. For example, one of our teams had difficulty taking advantage of function calling in an AWS Bedrock model while proxying through LiteLLM.

  • 83. LlamaIndex

    LLamaIndex includes engines that enable you to design domain-specific, context-augmented LLM applications and support tasks like data ingestion, vector indexing and natural language question-answering on documents, to name a few. Our teams used LlamaIndex to build a retrieval-augmented generation (RAG) pipeline that automates document ingestion, indexes document embeddings and queries these embeddings based on user input. Using LlamaHub, you can extend or customize LlamaIndex modules to suit your needs and build, for example, LLM applications with your preferred LLMs, embeddings and vector store providers.

  • 84. LLM Guardrails

    LLM Guardrails is a set of guidelines, policies or filters designed to prevent large language models (LLMs) from generating harmful, misleading or irrelevant content. The guardrails can also be used to safeguard LLM applications from malicious users attempting to misuse the system with techniques like input manipulation. They act as a safety net by setting boundaries for the model to process and generate content. There are some emerging frameworks in this space like NeMo Guardrails, Guardrails AI and Aporia Guardrails our teams have been finding useful. We recommend every LLM application have guardrails in place and that its rules and policies be continuously improved. Guardrails are crucial for building responsible and trustworthy LLM chat apps.

  • 85. Medusa

    In our experience, most e-commerce solutions for building shopping websites usually fall into the 80/20 trap — we can easily build 80% of what we want but can't do anything about the remaining 20%. Medusa offers a good balance. It's a highly customizable open-source commerce platform that allows developers to create unique and tailored shopping experiences that can be self-hosted or run on Medusa’s platform. Built on Next.js and PostgreSQL, Medusa accelerates the development process with its comprehensive range of modules — from basic shopping cart and order management to advanced features like gift card modules and tax calculation for different regions. We've found Medusa to be a valuable framework and applied it to a few projects.

  • 86. Pkl

    Pkl is an open-source configuration language and tooling initially created for use internally at Apple. Its key feature is its type and validation system, allowing configuration errors to be caught prior to deployment. Pkl has enabled our teams to reduce code duplication (for cases such as environment overrides) and perform validation before configuration changes are applied to live environments. It generates JSON, PLIST, YAML and .properties files and has extensive IDE and language integration, including code generation.

  • 87. ROS 2

    ROS 2 is an open-source framework designed for the development of robotic systems. It provides a set of libraries and tools that enable the modular implementation of applications, covering functions like inter-process communication, multithreaded execution and quality of service. ROS 2 builds on its predecessor by providing improved real-time capabilities, better modularity, increased support for diverse platforms and sensible defaults. ROS 2 is gaining traction in the automotive industry; its node-based architecture and topic-based communication model are especially attractive for manufacturers with complex, evolving in-vehicle applications, such as autonomous driving functionality.

  • 88. seL4

    In software-defined vehicles (SDV) or other safety-critical scenarios, the real-time stability of the operating system is crucial. A few companies monopolize this field due to its high entry barriers, so open-source solutions like seL4 are precious. seL4 is a high-assurance, high-performance operating system microkernel. It uses formal verification methods to "mathematically" ensure the operating system's behavior complies with the specification. Its microkernel architecture also minimizes core responsibilities to ensure system stability. We've seen EV companies like NIO engage with the seL4 ecosystem, and there may be more development in this area in the future.

  • 89. SetFit

    Most of the current crop of AI-based tools are generative — they generate text and images and use generative pre-trained transformers (GPTs) to do so. For use cases that require working with existing text — to classify pieces of text or to determine intent — sentence transformers are the tool of choice. In this field, SetFit is a framework for fine-tuning sentence transformers. We like SetFit because it uses contrastive learning to separate different intent classes from each other, often achieving clear separation with a very small number of examples, even 25 or less. Sentence transformers can also play a role in a generative AI system. We've successfully used SetFit for intent detection in a customer-facing chatbot system that uses an LLM, and even though we're aware of OpenAI's moderation API, we chose a classifier based on SetFit to perform additional fine-tuning to achieve stricter filtering.

  • 90. vLLM

    vLLM is a high-throughput, memory-efficient inference engine for LLMs that can run in the cloud or on-premise. It seamlessly supports multiple model architectures and popular open-source models. Our teams deploy dockerized vLLM workers on GPU platforms like NVIDIA DGX and Intel HPC, hosting models such as Llama 3.1(8B and 70B), Mistral 7B and Llama-SQL for developer coding assistance, knowledge search and natural language database interactions. vLLM is compatible with the OpenAI SDK standard, facilitating consistent model serving. Azure's AI Model Catalog uses a custom inference container to enhance model serving performance, with vLLM as the default inference engine due to its high throughput and efficient memory management. The vLLM framework is emerging as a default for large-scale model deployments.

Assess ?

  • 91. Apache XTable™

    Entre los formatos de tabla abiertos disponibles que soportan lakehouses — como Apache Iceberg, Delta y Hudi — no ha surgido un claro ganador. En cambio, estamos viendo herramientas que permiten la interoperabilidad entre estos formatos. Por ejemplo, Delta UniForm soporta la interoperabilidad unidireccional al permitir que los clientes de Hudi y Iceberg lean tablas de Delta. Otro nuevo participante en este espacio es Apache XTable™, un proyecto incubadora de Apache que facilita la interoperabilidad omnidireccional entre Hudi, Delta y Iceberg. Al igual que UniForm, convierte los metadatos entre estos formatos sin duplicar los datos subyacentes. XTable podría ser útil para equipos que estén experimentando con diferentes formatos de tablas. Sin embargo, para un uso a largo plazo, dada la diferencia de las características entre estos formatos, depender en gran medida de la interoperabilidad omnidireccional podría hacer que los equipos solo puedan utilizar el “mínimo común denominador” de las funcionalidades.

  • 92. dbldatagen

    Preparar los datos de prueba para ingeniería de datos es un gran desafío. Transferir datos desde producción a ambientes de prueba puede ser riesgoso, por lo que los equipos a menudo optan por utilizar datos falsos o sintéticos en su lugar. En este Radar, exploramos enfoques novedosos como datos sintéticos para pruebas y entrenamiento de modelos. Sin embargo, en muchas ocasiones, la generación procedural de bajo costo es suficiente.

    dbldatagen (Generador de Datos de Databricks Labs) es una de esas herramientas; se trata de una biblioteca de Python para generar datos sintéticos dentro del entorno de Databricks, utilizada para pruebas, benchmarking, demos y muchos otros usos. dbldatagen puede generar datos sintéticos a gran escala, alcanzando hasta miles de millones de filas en cuestión de minutos, y soporta varios escenarios como múltiples tablas, change data capture y operaciones de merge/join. Maneja bien los tipos primitivos de Spark SQL, genera rangos y valores discretos, y aplica distribuciones específicas. Al crear datos sintéticos utilizando el ecosistema de Databricks, dbldatagen es una opción que vale la pena evaluar.

  • 93. DeepEval

    DeepEval Es un framework de evaluación de código abierto basado en Python, utilizado para evaluar el rendimiento de los LLM. Puedes usarlo para evaluar la generación aumentada por recuperación (RAG) y otros tipos de aplicaciones creadas con frameworks populares como LlamaIndex o LangChain. También sirve para establecer líneas base y benchmark al comparar diferentes modelos de acuerdo a tus necesidades. DeepEval proporciona un conjunto completo de métricas y funciones para evaluar el rendimiento de los LLM, incluida la detección de alucinaciones, la relevancia de las respuestas y la optimización de híper parámetros. Ofrece integración con pytest y, junto con sus aserciones, puedes fácilmente integrar el conjunto de pruebas en un pipeline de integración continua (CI). Si trabajas con LLM, considera probar DeepEval para mejorar tu proceso de pruebas y garantizar la fiabilidad de tus aplicaciones.

  • 94. DSPy

    La mayoría de las aplicaciones basadas en modelos de lenguaje hoy en día confían en plantillas de prompts ajustadas manualmente para tareas específicas. DSPy, un framework para desarrollar tales aplicaciones, toma un enfoque diferente que prescinde de la ingeniería de prompts directa. En su lugar, introduce abstracciones de más alto nivel orientadas en el flujo del programa (a través de módulos que se pueden poner en capas unos encima de otros), métricas que optimizar y datos con los que entrenar/probar. Entonces optimiza los prompts y/o pesos del modelo de lenguaje subyacente basándose en esas métricas que se han definido. El código resultante se parece mucho más al entrenamiento de redes neuronales con PyTorch. Encontramos que el enfoque que toma es estimulante por ser diferente y pensamos que vale la pena experimentar con él.

  • 95. Flutter para la Web

    Flutter es conocido por su soporte multiplataforma para aplicaciones iOS y Android. Ahora, se ha expandido a más plataformas. Ya hemos evaluado Flutter para la Web : nos permite crear aplicaciones para iOS, Android y el navegador a partir de la misma base de código. No todas las aplicaciones web tienen sentido en Flutter, pero creemos que Flutter es especialmente adecuado para casos como aplicaciones web progresivas, aplicaciones de una sola página y la conversión de aplicaciones móviles Flutter existentes a la web. Flutter ya admitía WebAssembly (WASM) como target de compilación en su canal experimental, lo que significa que estaba en desarrollo activo con posibles errores y problemas de rendimiento. Las versiones más recientes lo han hecho estable. El rendimiento de las aplicaciones web Flutter compiladas con target WASM es muy superior al de su target JavaScript. El rendimiento casi nativo en diferentes plataformas es también la razón por la que muchos desarrolladores eligen inicialmente Flutter.

  • 96. kotaemon

    kotaemon es una herramienta y framework de código abierto basado en RAG (generación aumentada por recuperación, por sus siglas en inglés de retrieval-augmented generation) para construir aplicaciones de Q&A y documentos de bases de conocimiento. Puede entender varios tipos de documento, incluyendo formatos PDF y DOC, y provee una interfaz web basada en Gradio, la que permite a los usuarios organizar e interactuar con la base de conocimiento a través de una interfaz de chat. Incluye pipelines de RAG con un vector store y puede ser extendido con SDKs. kotaemon también cita los documentos fuente en sus respuestas, junto a vistas previas de web embebidas y un grado de relevancia. Para cualquiera que desee crear una aplicación Q&A con documentos basados en RAG, este framework personalizable es un muy buen punto de partida.

  • 97. Lenis

    Lenis es una librería ligera y poderosa para obtener un desplazamiento (scrolling) fluido en navegadores modernos. Habilita experiencias como sincronizar el desplazamiento con WebGL o efectos de paralaje. Es ideal para equipos que construyen páginas con interacciones que utilizan desplazamiento fluido. Nuestras desarrolladoras han visto que Lenis ofrece una experiencia transparente y fácil de usar al crear desplazamientos fluidos. De todas maneras, la librería puede tener ciertos problemas con la accesibilidad, particularmente con el desplazamiento horizontal y vertical, lo que puede confundir a usuarios con discapacidades. Aunque es atractivo visualmente, necesita una implementación adecuada para mantener la accesibilidad.

  • 98. LLMLingua

    LLMLingua mejora la eficiencia de los LLMs al comprimir las entradas del usuario usando un modelo de lenguaje pequeño para eliminar los tokens no esenciales con una pérdida mínima de rendimiento. Este enfoque permite a los LLMs mantener el raciocinio y aprendizaje dentro del contexto mientras procesan eficientemente entradas más largas, afrontando retos como eficiencia de costos, latencia de inferencia y gestión de contexto. LLMLingua es perfecto para optimizar el rendimiento de inferencia de los LLM, ya que es compatible con distintos LLMs, no necesita entrenamiento adicional y soporta frameworks como LLamaIndex.

  • 99. Microsoft Autogen

    Microsoft Autogen es un framework de código abierto que simplifica la creación y orquestación de agentes de IA, permitiendo la colaboración entre múltiples agentes para resolver tareas complejas. Soporta tanto flujos de trabajo autónomos como aquellos con intervención humana, ofreciendo compatibilidad con una variedad de modelos de lenguaje de gran tamaño (LLMs) y herramientas para la interacción entre agentes. Uno de nuestros equipos utilizó Autogen en un cliente para construir una plataforma impulsada por IA en la que cada agente representaba una habilidad específica, como la generación de código, la revisión de código o el resumen de documentación. El framework permitió al equipo crear nuevos agentes de manera fluida y consistente, definiendo el modelo y el flujo de trabajo adecuados. Utilizaron LlamaIndex para orquestar los flujos de trabajo, permitiendo a los agentes gestionar tareas como la búsqueda de productos y sugerencias de código de manera eficiente. Aunque Autogen ha mostrado ser prometedor, especialmente en entornos de producción, persisten preocupaciones sobre la escalabilidad y la gestión de la complejidad a medida que se añaden más agentes. Se necesita una evaluación adicional para determinar su viabilidad a largo plazo en la escalabilidad de sistemas basados en agentes.

  • 100. Pingora

    Pingora es un framework de Rust para construir servicios de red rápidos, fiables y programables. Originalmente desarrollado por Cloudflare para abordar las deficiencias de Nginx, Pingora ya está mostrando un gran potencial, ya que los nuevos proxies como River se están construyendo sobre sus cimientos. Aunque la mayoría de nosotros no nos enfrentamos al nivel de escala de Cloudflare, nos encontramos con escenarios en los que el enrutamiento flexible de la capa de aplicación es esencial para nuestros servicios de red. La arquitectura de Pingora nos permite aprovechar toda la potencia de Rust en estas situaciones sin sacrificar la seguridad ni el rendimiento.

  • 101. Ragas

    Ragas es un framework diseñado para evaluar el rendimiento de los pipelines de [generación aumentada por recuperación (RAG por sus siglas en inglés)], abordando el desafío de evaluar tanto los componentes de recuperación como los de generación en estos sistemas. Proporciona métricas estructuradas como fidelidad, relevancia de la respuesta y utilización del contexto, que ayudan a evaluar la efectividad de los sistemas basados en RAG. Nuestros desarrolladores lo encontraron útil para realizar evaluaciones periódicas con el fin de afinar parámetros como las recuperaciones top-k y los modelos de incrustación. Algunos equipos han integrado Ragas en pipelines que se ejecutan diariamente, siempre que cambie la plantilla de prompts o el modelo. Aunque sus métricas ofrecen información valiosa, nos preocupa que el framework no capture todas las sutilezas e interacciones complejas de los pipelines RAG, y recomendamos considerar otros frameworks de evaluación adicionales. No obstante, Ragas destaca por su capacidad de optimizar la evaluación de RAG en entornos de producción, ofreciendo valiosas mejoras basadas en datos.

  • 102. Score

    Muchas organizaciones que implementan sus propias plataformas internas de desarrollo tienden a crear sus propios sistemas de platform orchestration para hacer cumplir los estándares organizacionales entre los desarrolladores y sus equipos de alojamiento de plataformas. Sin embargo, las características básicas de una plataforma de despliegue pavimentada para alojar cargas de trabajo en contenedores de manera segura, consistente y conforme son similares de una organización a otra. ¿No sería genial si tuviéramos un lenguaje compartido para especificar esos requisitos? Score está mostrando cierto potencial para convertirse en un estándar en este ámbito. Es un lenguaje declarativo en formato YAML que describe cómo debe desplegarse una carga de trabajo en contenedores y qué servicios y parámetros específicos necesitará para ejecutarse. Score fue desarrollado originalmente por Humanitec como el lenguaje de configuración para su producto Platform Orchestrator, pero ahora está bajo la custodia de la Cloud Native Computing Foundation (CNCF) como un proyecto de código abierto. Con el respaldo de la CNCF, Score tiene el potencial de ser más ampliamente utilizado más allá del producto de Humanitec. Ha sido lanzado con dos implementaciones de referencia: Kubernetes y Docker Compose. Esperamos que la extensibilidad de Score llevará a tener contribuciones de la comunidad para otras plataformas. Score ciertamente tiene un parecido con la especificación Open Application Model (OAM) para Kubevela, pero está más enfocado en el despliegue de cargas de trabajo en contenedores que en la aplicación completa. También hay cierta superposición con SST, pero SST está más enfocado en el despliegue directo en una infraestructura en la nube en lugar de una plataforma interna de ingeniería. Estaremos observando con interés la evolución de Score.

  • 103. shadcn

    shadcn desafía el concepto tradicional de bibliotecas de componentes al ofrecer componentes reutilizables, de tipo copiar-y-pegar que se convierten en parte de tu código fuente. Este enfoque brinda a los equipos total propiedad y control, lo que permite una fácil personalización y extensión – áreas donde las librerías más convencionales y populares como MUI y Chakra UI a menudo quedan cortas. Creada con Radix UI y Tailwind CSS, shadcn se integra perfectamente en cualquier aplicación basada en React, lo que lo convierte en una buena opción para proyectos que priorizan el control y la extensibilidad. Incluye una CLI para ayudar en el proceso de copiar y pegar los componentes en el proyecto. Sus beneficios también incluyen la reducción de dependencias ocultas y evitar implementaciones estrechamente acopladas, razón por la cual shadcn está ganando terreno como una alternativa convincente para los equipos que buscan un enfoque más práctico y adaptable para el desarrollo front-end.

  • 104. Slint

    Slint es un framework de GUI declarativo para construir interfaces de usuario nativas para aplicaciones en Rust, C++ o JavaScript. Aunque es un framework multiplataforma de UI con características importantes como vista previa en vivo, diseño de UI responsivo, integración con VS Code y una experiencia de usuario nativa, también nos gustaría resaltar principalmente su utilidad para sistemas embebidos. Los equipos que desarrollan aplicaciones embebidas han enfrentado tradicionalmente un número limitado de opciones para el desarrollo de la UI, cada una con sus propias implicaciones. Slint ofrece el balance perfecto entre la experiencia del desarrollador y el desempeño, utilizando un lenguaje de marcado fácil de usar, similar al HTML y compilado directamente a código máquina. En tiempo de ejecución, también cuenta con un bajo consumo de recursos, lo cual es crítico para los sistemas embebidos. En resumen, nos gusta Slint porque trae prácticas comprobadas del desarrollo web y móvil al ecosistema embebido.

  • 105. SST

    SST es un framework para desplegar aplicaciones dentro del ambiente en la nube junto con proporcionar todos los servicios que la aplicación necesite para ejecutarse. SST no es solo una herramienta IaC; es un framework con una API en TypeScript que te permite definir el ambiente de tu aplicación, un servicio que despliega tu aplicación cuando se ejecuta un Git Push así como una consola GUI para administrar la aplicación resultante e invocar las funciones de administración de SST. Aunque SST estaba originalmente basado en AWS Cloud Formation y CDK, su última versión ha sido implementada sobre Terraform y Pulumi para que, en teoría, sea agnóstico a la nube. SST tiene soporte nativo para el despliegue de varios frameworks estandar de web, incluidos Next.js y Remix, pero también soporta aplicaciones API sin interfaz gráfica. SST parece pertenecer a una categoría propia. Si bien tiene cierta similitud con herramientas de orquestación de plataforma como Kubevela, también provee conveniencias para los desarrolladores, como un modo en vivo que envía las invocaciones de AWS Lambda a una función que se ejecuta en la máquina local del desarrollador. En este momento, SST sigue siendo una curiosidad, pero es un proyecto y una categoría de herramientas que vale la pena seguir a medida que evoluciona.

Hold ?

No blips

Unable to find something you expected to see?

 

Each edition of the Radar features blips reflecting what we came across during the previous six months. We might have covered what you are looking for on a previous Radar already. We sometimes cull things just because there are too many to talk about. A blip might also be missing because the Radar reflects our experience, it is not based on a comprehensive market analysis.

Download the PDF

 

 

 

English | Español | Português | 中文

Sign up for the Technology Radar newsletter

 

Subscribe now

Visit our archive to read previous volumes