3 puntos por GN⁺ 2025-10-27 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2025-10-27
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.

    • Últimamente está usando LLM para visualizar rápidamente decisiones de arquitectura.
      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.
    • Cree que D2 es una herramienta realmente genial. Le resultó especialmente útil al implementar la automatización de layouts de red en AWS.
      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.
    • Lleva unos meses usando D2 y le sorprendió lo fácil que fue aprenderlo.
      Sin embargo, no cree que las animaciones llamativas sean realmente necesarias. Cuando hace falta énfasis, cambiar simplemente el color resulta más intuitivo.
    • Tiene curiosidad por el objetivo de las animaciones. Estaría bien que durante una presentación, cada clic agregara elementos y las conexiones se resaltaran suavemente.
      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.
    • Compartió un ejemplo de SVG dramático diciendo: “Level 4 - dramatic mode ;)”.
  • 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.

    • El ajuste de layout personalizado de D2 solo es posible con el motor propietario.
      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.

    • Incluso en Python, con algunos trucos, se puede imitar una sintaxis como a <- b | "edge".
      Pero bromea diciendo que si alguien lo usa de verdad, se convertirá en fantasma y lo atormentará.
    • En Scala se pueden usar operadores definidos por el usuario para crear un DSL como "x" --> "y" | "hello world".
      Aun así, no conviene abusar de eso.
    • En Ruby también se puede implementar un DSL interno simple con una forma como 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.

    • Con la función watch de d2 y un hack sencillo con scripts que reemplaza archivos paso a paso, se puede lograr un efecto parecido.
  • 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.

    • Personalmente siente que la calidad de salida de TALA es la peor. Casi siempre usa el motor ELK.
  • 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.

    • A él también le gusta más D2, pero mermaid es una opción práctica porque tiene soporte nativo en varias plataformas.
    • Acaba de enterarse de D2 y tiene curiosidad por saber en qué es mejor que mermaid.
  • 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.

    • Pregunta cómo lo implementaron. Quiere saber si construyeron directamente un servidor MCP para D2.
    • Saluda diciendo: “Ben, gracias por hacer que LinkedIn/X sea algo soportable”.
  • 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”.

    • Si con una herramienta así se pudiera explorar visualmente un codebase grande, sería una gran ventaja.
    • La ventaja de D2 es que es un compilador standalone y que soporta renderizado ASCII.
      También le gusta que no requiera instalación por npm.
      Aun así, mermaid destaca mucho por su integración con cosas como Obsidian.
    • Lanza la pregunta: “¿Qué funciones debería tener ese programa killer?”