Terrastruct acaba de liberar el código fuente de TALA, el algoritmo de autolayout que usa D2 para acomodar diagramas de arquitectura sin que nadie mueva cajas a mano. Ahora corre bajo licencia MPL-2.0, la misma que D2, y ya viene incluido de fábrica desde la versión 0.9.0 del lenguaje.
Hasta ahora TALA era la pieza propietaria de un proyecto por lo demás abierto. Con este anuncio, D2 queda completamente open source de punta a punta: del parser al renderizado final.
TL;DR
- TALA (Terrastruct's AutoLayout Algorithm) es ahora open source bajo licencia MPL-2.0, la misma que D2.- Viene incluido en D2 desde la versión 0.9.0 y se activa con el flag --layout=tala.- Es un motor de layout ortogonal pensado para diagramas de arquitectura tipo pizarra, no para grafos DAG largos.- Permite fijar coordenadas top y left en nodos específicos y dejar el resto al motor automático (posicionamiento híbrido).- Usa 3 semillas aleatorias por defecto y elige el layout con mejor puntaje: mismo input y semillas producen el mismo diagrama.- El playground https://play.d2lang.com corre 100% en el navegador y permite probar TALA sin instalar nada.- El repositorio de benchmarks de rendimiento está publicado en github.com/d2lang/d2-benchmarks.- Gavin Nishizawa y Júlio César Batista lideraron buena parte del desarrollo, según el anuncio oficial de Terrastruct.
Introducción
D2 es un lenguaje de diagramación por texto: escribís unas líneas describiendo cajas y flechas, y D2 genera el SVG. La competencia directa es Mermaid, pero D2 se diferenció desde el principio por la calidad visual de sus layouts automáticos.
Esa calidad venía en gran parte de TALA, un motor de autolayout que Terrastruct desarrolló puertas adentro y mantuvo cerrado mientras el resto de D2 ya era MIT. Eso cambió esta semana.
Qué pasó
Terrastruct publicó el código de TALA en el mismo repositorio de D2 en GitHub, bajo licencia Mozilla Public License 2.0. Es la continuación de un anuncio previo donde la empresa ya había adelantado que esto venía.
El repositorio explica que TALA combina ideas de varios papers de graph drawing (citados directamente en el código fuente) con técnicas propias para lograr diagramas más legibles. El objetivo declarado es optimizar varias métricas de "estética" a la vez: simetría, distancia mediana entre nodos conectados, dirección del flujo y agrupamiento de nodos similares.
Terrastruct agradece explícitamente a Gavin Nishizawa por contribuciones amplias a TALA y a Júlio César Batista por su trabajo en los algoritmos de jerarquía. El proyecto pasa ahora a aceptar contribuciones externas de la comunidad de D2.
Contexto e historia
D2 ya incluía dos motores de layout desde el principio: Dagre y ELK, ambos basados en grafos dirigidos acíclicos (DAG). Funcionan bien para diagramas que crecen en una dirección: pipelines, flujos de datos, árboles de dependencias.
El problema es que un diagrama de arquitectura de software real casi nunca crece en una sola dirección. Se parece más a lo que dibujarías en un pizarrón: cajas por todos lados, conexiones que cruzan en varios sentidos. Para ese caso, Terrastruct construyó TALA como motor de layout ortogonal, diseñado desde cero pensando en software architecture diagrams.
TALA prioriza simetría y clustering; Dagre y ELK priorizan dirección de flujo.
Terrastruct probó TALA contra archivos D2 públicos tomados de GitHub, sin selección manual. La empresa aclara que en algunos casos el layout de Dagre o ELK puede seguir siendo preferible: no es que TALA gane siempre, es que ataca un problema distinto.
Detalles técnicos y rendimiento
TALA no produce un único layout determinista por diagrama. Por defecto prueba 3 semillas aleatorias, genera un layout candidato por cada una, les asigna un puntaje según las métricas de estética mencionadas arriba, y se queda con el mejor. Mismo input y mismas semillas producen siempre el mismo resultado.
El punto incómodo: agregar un solo nodo puede cambiar por completo la disposición del diagrama, porque las semillas exploran el espacio de soluciones de nuevo. Dagre y ELK, en cambio, tienden a mantener el layout previo y solo acomodar el nodo nuevo en su lugar.
⚠️ Ojo: si necesitás que un diagrama grande mantenga su forma estable a medida que le agregás nodos con el tiempo (por ejemplo, documentación que se actualiza seguido), Dagre o ELK son más predecibles que TALA.
Otra capacidad exclusiva de TALA es fijar la posición de nodos individuales con las claves top y left, dejando que el motor resuelva el resto (incluido el routing de las conexiones). Terrastruct señala un uso concreto: modelos de IA generativa pueden ubicar cajas razonablemente bien en un plano 2D, pero fallan al trazar las líneas que las conectan sin que se crucen. TALA resuelve justo esa segunda parte.
MotorCuándo usarloVentajaLimitaciónDagrePipelines, flujos CI/CD, grafos que crecen en una direcciónLayout estable al agregar nodos nuevosPoco control estético en diagramas no linealesELKJerarquías grandes con muchos niveles anidadosBuen manejo de subgrafos jerárquicosPrioriza dirección sobre estética tipo pizarraTALADiagramas de arquitectura con conexiones cruzadasOptimiza simetría, clustering y permite fijar coordenadasAleatoriedad entre ejecuciones; más lento en diagramas grandes
Sobre rendimiento, Terrastruct es honesto: TALA escala de forma no lineal y tarda más que Dagre o ELK en diagramas grandes. El benchmark de referencia está publicado en github.com/d2lang/d2-benchmarks, donde cualquiera puede correr sus propias mediciones contra su hardware.
Cómo empezar
TALA no se instala aparte: viene empaquetado dentro de D2 desde la versión 0.9.0. Basta con instalar D2 y pasar el flag correspondiente.
# macOS (Homebrew)
brew install d2
# Linux
curl -fsSL https://d2lang.com/install.sh | sh -s --
# Windows (con Scoop)
scoop install d2
Con D2 instalado, un diagrama mínimo se ve así. Guardalo como arquitectura.d2:
frontend -> api_gateway: peticion HTTP
api_gateway -> auth_service: valida token
api_gateway -> orders_service: crea orden
orders_service -> database: INSERT
orders_service -> cache: invalida clave
Y para renderizarlo usando TALA en vez del motor por defecto:
d2 --layout=tala arquitectura.d2 arquitectura.svg
Este comando genera arquitectura.svg con el layout ortogonal de TALA, en lugar del Dagre por defecto. Para el posicionamiento híbrido (algunos nodos fijos, el resto automático), D2 admite fijar coordenadas directamente en el nodo:
estacion_cyan: {
top: 0
left: 0
}
estacion_magenta: {
top: 0
left: 200
}
estacion_amarillo: {
top: 0
left: 400
}
estacion_negro: {
top: 0
left: 600
}
controlador_registro -> estacion_cyan
controlador_registro -> estacion_magenta
controlador_registro -> estacion_amarillo
controlador_registro -> estacion_negro
Fijar top y left en algunos nodos deja el routing en manos de TALA.
Acá los cuatro nodos superiores quedan clavados en su fila, mientras que TALA calcula solo el trazado de las conexiones hacia el controlador. Es exactamente el patrón que Terrastruct describe para diagramas generados por agentes de IA.
Para confirmar que tu instalación efectivamente usa TALA (y no cae de nuevo a Dagre por versión vieja), revisá la versión de D2 antes de renderizar:
d2 --version
# debe reportar 0.9.0 o superior
Si el binario reporta una versión anterior a 0.9.0, el flag --layout=tala no existe todavía y hay que actualizar D2 primero.
💡 Tip: si querés probar TALA sin instalar nada, el playground play.d2lang.com corre el compilador completo en el navegador, incluido TALA.
Impacto y análisis
El cambio más relevante no es de licencia sino de mantenimiento: hasta ahora, cualquier bug o mejora en TALA dependía exclusivamente del equipo de Terrastruct. Con el código abierto, la comunidad de D2 puede enviar pull requests directamente sobre el motor de layout, algo que antes era imposible.
También reduce el riesgo típico de las herramientas con núcleo propietario: si Terrastruct como empresa cambiara de rumbo, D2 ya no dependería de una pieza cerrada para su funcionalidad más distintiva. Es el mismo argumento que sostuvo la migración completa de proyectos como herramientas de código abierto en general: menos punto único de fallo organizacional.
El caso de uso agéntico que menciona Terrastruct merece atención aparte. A medida que más equipos generan diagramas de arquitectura con asistentes de IA a partir de una descripción en texto, la parte difícil deja de ser "dónde poner cada caja" y pasa a ser "cómo trazar las conexiones sin que se crucen". TALA ataca justamente ese segundo problema, dejando la ubicación gruesa en manos del modelo y el routing fino en manos del algoritmo.
Qué sigue
Terrastruct dice esperar con interés las mejoras que la comunidad proponga ahora que el código es público, en particular sobre el manejo de diagramas grandes, donde el rendimiento no lineal de TALA sigue siendo su punto más débil frente a Dagre y ELK.
No hay un roadmap con fechas públicas más allá de eso. La vía más directa para seguir el desarrollo es el propio repositorio de D2 en GitHub, donde TALA ahora vive junto al resto del compilador.
📖 Resumen en Telegram: Ver resumen
Probalo vos: instalá D2 con brew install d2 (o el script de Linux) y corré tu primer diagrama con d2 --layout=tala para comparar el resultado contra Dagre.
Preguntas frecuentes
¿Qué significa TALA?
Son las siglas de Terrastruct's AutoLayout Algorithm, el motor de layout ortogonal que Terrastruct construyó para D2.
¿Necesito instalar TALA por separado?
No. Viene incluido dentro de D2 desde la versión 0.9.0 y se activa con el flag --layout=tala.
¿TALA reemplaza a Dagre y ELK?
No. D2 sigue soportando los tres motores. TALA conviene para diagramas de arquitectura con conexiones cruzadas; Dagre y ELK siguen siendo mejores para grafos que crecen en una sola dirección.
¿Por qué el mismo diagrama se ve distinto cada vez que agrego un nodo?
Porque TALA prueba 3 semillas aleatorias por defecto y elige la de mejor puntaje. Agregar un nodo cambia el espacio de búsqueda y puede producir un layout completamente distinto.
¿Sirve TALA para diagramas generados por IA?
Sí, es uno de los casos de uso que Terrastruct destaca: un modelo puede ubicar nodos en coordenadas 2D y dejar que TALA resuelva el routing de las conexiones, tarea en la que los modelos suelen fallar.
¿Bajo qué licencia quedó TALA?
MPL-2.0, la misma licencia que ya usaba el resto de D2.
Referencias
- Anuncio oficial de Terrastruct: publicación original donde se confirma la apertura del código de TALA.- Repositorio de D2 en GitHub: código fuente completo del lenguaje y de TALA.- d2-benchmarks: comparativas de rendimiento entre TALA, Dagre y ELK.- D2 Playground: entorno para probar D2 y TALA sin instalar nada, corre 100% en el navegador.- Mozilla Public License 2.0: texto completo de la licencia bajo la que se liberó TALA.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Top comments (0)