- D2 es un lenguaje de scripting basado en texto que permite crear diagramas y ofrece una forma de generar material visual automáticamente mediante código
- Los usuarios definen nodos y relaciones con una sintaxis simple, y el motor de diseño automático los organiza visualmente
- Cada snippet de código dentro de la documentación puede ejecutarse y modificarse directamente en el Playground, por lo que es posible ver el resultado de inmediato
- Sin embargo, existe la excepción de que algunos ejemplos que usan import no pueden ejecutarse directamente en el Playground
- Tiene valor para los desarrolladores como una herramienta que mejora la automatización de la documentación visual y la eficiencia de la colaboración
Descripción general de D2
- D2 es un lenguaje de scripting declarativo que permite escribir diagramas como código, ofreciendo la capacidad de definir estructuras complejas en texto y visualizarlas automáticamente
- Los usuarios describen nodos, aristas, grupos, etc. con una sintaxis simple
- Los resultados se alinean automáticamente y se les pueden aplicar varios estilos
- Este lenguaje es ventajoso para el control de versiones y la colaboración, y puede integrarse fácilmente en revisiones de código o pipelines de automatización de documentación
Funciones del Playground
- Cada snippet de código en la documentación de D2 ofrece una función interactiva para abrirse, modificarse y ejecutarse directamente en el Playground
- El enlace al Playground se activa cuando el usuario pasa el mouse sobre el snippet
- Esto permite ajustar el diagrama en tiempo real y verificar visualmente el resultado
- Sin embargo, los snippets que usan sentencias
import tienen la limitación de que no pueden ejecutarse de inmediato en el Playground porque requieren recursos externos
Importancia de uso
- D2 ayuda a automatizar la documentación visual, con la ventaja de poder gestionar junto con el código el diseño de sistemas o el flujo de datos
- Al permitir que desarrolladores y diseñadores definan diagramas con el mismo lenguaje, mejora la eficiencia de la colaboración
- Se considera una herramienta que impulsa la estandarización de la creación de diagramas basada en código dentro del ecosistema de código abierto
1 comentarios
Opiniones en Hacker News
Como co-creador de D2, está pensando últimamente en ideas para ampliar las funciones de animación.
Dejó la discusión relacionada en GitHub Discussion y le gustaría conocer opiniones.
Usa principalmente mermaid, pero se pregunta si D2 podría ofrecer una interfaz más flexible.
También quiere saber si hay planes para una función de tool calling integrada con LLM o una interfaz amigable como MCP.
Le gustó no tener que pelear con el motor incluso al renderizar muchos objetos.
Eso sí, la documentación de sdk/d2lib era insuficiente y al principio tuvo que pasar por varios intentos y errores.
Sin embargo, no cree que las animaciones llamativas sean realmente necesarias. Cuando hace falta énfasis, cambiar simplemente el color resulta más intuitivo.
Pero si todo el diagrama se sacude por un cambio de texto, eso podría resultar más distractor que útil.
También le gustaría soporte oficial para diagramas Swimlane.
Está intentando scriptar diagramas basados en datos envolviendo herramientas como D2 o Penrose con Python.
Pero la mayoría de las herramientas declarativas no soportan el flujo de trabajo “declare, then tweak”, lo que resulta incómodo.
Penrose facilita las modificaciones, pero el resultado puede ser aleatorio e impredecible.
No se puede en el motor open source, aunque se puede ajustar parcialmente con la función Freehand.
Se preguntaba qué tan cerca podría implementarse la sintaxis de D2 en un lenguaje de programación general.
En Python, por las limitaciones del operator overloading, es difícil lograr un DSL completamente idéntico, pero se puede intentar algo parecido con sobrecarga de operadores de cadenas.
a <- b | "edge".Pero bromea diciendo que si alguien lo usa de verdad, se convertirá en fantasma y lo atormentará.
"x" --> "y" | "hello world".Aun así, no conviene abusar de eso.
x >> y << "label".También se puede crear un modelo de objetos en una clase Diagram y luego conectarle un renderer.
Como autor principal del proyecto mgmt, trabaja mucho con DAG.
Necesita diagramas que sigan siendo visualmente estables y con transiciones animadas al agregar o eliminar nodos y aristas.
Graphviz es incómodo porque el layout cambia entre snapshots.
El modo Sketch y las funciones interactivas de D2 son realmente útiles.
Gracias a los tooltips y enlaces, la utilidad de los diagramas aumenta bastante.
Lleva mucho tiempo usando D2 y también lo recomienda activamente dentro de su organización.
Pero el costo de la licencia enterprise es demasiado alto, así que solo lo usa de forma personal.
La licencia TALA cuesta 3000 dólares al año, y la personal 120 dólares, lo que se siente pesado.
Le parece innovadora la función de meter un Helm chart o una descripción del sistema en un LLM para generar diagramas automáticamente.
Hace poco, el soporte de renderizado ASCII de D2 se volvió tema de conversación.
La discusión relacionada continúa en una publicación anterior.
D2 existe desde hace bastante tiempo, pero todavía da la impresión de ser menos conocido que mermaid.
En funciones es muy superior, así que ojalá más gente lo conociera.
En su plataforma de IA zo.computer, adoptaron D2 como herramienta de generación de diagramas.
Tiene más expresividad que mermaid, así que encaja bien para visualización impulsada por IA.
D2 es excelente, pero frente a PlantUML o mermaid le falta una diferenciación decisiva.
Sigue esperando la “killer app del código para diagramas”.
También le gusta que no requiera instalación por npm.
Aun así, mermaid destaca mucho por su integración con cosas como Obsidian.