Show HN: Reladraw – Un lenguaje de diagramas donde decides dónde colocar las cosas
Un nuevo lenguaje de diagramas, Reladraw, busca tender un puente entre herramientas de auto-disposición como Mermaid, Graphviz y D2 y herramientas manuales como draw.io, permitiendo a los autores especificar el posicionamiento relativo (“a la derecha de”, “debajo”, lados específicos de las aristas) mientras el motor se encarga de la aritmética y el enrutamiento. Los comentaristas elogian su claridad de intención, su control granular y su idoneidad para agentes de IA que necesitan disposiciones deterministas, a la vez que lo comparan con sistemas como Pikchr, TikZ, PlantUML y el modelado C4. Las principales solicitudes de funciones y mejoras tempranas se centran en el enrutamiento de aristas, los temas, las construcciones multilínea y tipo macro, y la integración en editores y flujos de trabajo de Markdown.
Recepción general
- Muchos comentaristas están entusiasmados; varios dicen que esto cubre un vacío de larga data entre herramientas de auto-disposición (Mermaid, Graphviz, D2) y herramientas manuales (Draw.io, Excalidraw).
- Punto de dolor común: luchar contra los motores de disposición para que coincidan con una imagen mental; la colocación relativa explícita de Reladraw se percibe como un alivio.
- Algunos dicen que lo probarán en diagramas de trabajo reales o lo integrarán en flujos de toma de notas/IDE (Obsidian, VS Code, IntelliJ).
Comparación con herramientas existentes
- Comparado con Pikchr y pic: esas son “turtle graphics” o basadas en coordenadas/desplazamientos; Reladraw se basa en restricciones/relaciones (por ejemplo, “a la derecha de A”).
- Comparado con Mermaid/Graphviz/D2: esos deciden la disposición automáticamente; Reladraw deja que los usuarios/agentes decidan la colocación, pero sigue manejando la aritmética y el espaciado por colisiones.
- Comparado con TikZ/PlantUML: TikZ es más potente pero pesado en LaTeX; PlantUML es flexible pero sigue basado en sugerencias de disposición. Reladraw apunta a un DSL de diagramas más estrecho y directo.
- Algunos dicen que el TALA de D2 ya proporciona una disposición avanzada con restricciones, pero otros sienten que aún no ofrece el control determinista de Reladraw.
Diseño del lenguaje y capacidades
- Énfasis en nodos, aristas y relaciones relativas simples (izquierda/derecha/debajo/de).
- Las aristas admiten ángulos rectos (agudos/redondeados), estilos (sólido/discontinuo/punteado), grosor y puertos específicos por lado con espaciado entre múltiples aristas en un lado.
- Las restricciones conflictivas o ambiguas producen errores explícitos en lugar de sobrescrituras silenciosas; hay debate sobre errores estrictos vs advertencias y valores predeterminados sensatos.
- Filosofía actual: sin bloques, sin sentencias de varias líneas; varios comentaristas piden continuaciones de línea y etiquetas multilínea/largas, señalando compromisos del parser.
- Funcionalidades previstas: atributos personalizados, variables, funciones, posibles macros con parámetros y mejores mecanismos de reutilización (por ejemplo, para diagramas de secuencia/C4).
- Discusión sobre parametrización desde datos externos (CSV/JSON) y una generación más programática.
Enrutamiento, temas y errores
- No hay enrutamiento automático completo que evite obstáculos, pero las aristas pueden “pasar entre” nodos; algunos usuarios quieren menos microgestión del enrutamiento.
- Se está iterando sobre el comportamiento de aristas en ángulo recto y curvas; se reportaron errores en la curvatura de aristas y en los temas, y se corrigieron rápidamente.
- Ahora existen múltiples temas (claro/oscuro, incluido uno tipo “Vesper”); se señalaron fallos iniciales en Safari/tematización.
Ecosistema e integración
- Ya existe una extensión de VS Code para renderizado y resaltado de sintaxis.
- La inserción en Markdown como
mermaiden GitHub no es posible actualmente; las herramientas locales pueden soportarlo mediante plugins. - La CLI actualmente genera diagramas renderizados, pero hay interés en un modo que emita solo las posiciones resueltas (JSON) para poder usar otros renderizadores/backends.
- La implementación está en TypeScript/Node; algunos quieren binarios más pequeños y sin dependencias. Se mencionan experimentos con herramientas como scriptc y Deno, con compromisos en el tamaño del binario.
IA/agentes y flujo de trabajo
- Varios comentaristas quieren explícitamente esto como un DSL de diagramas “amigable para agentes”: los agentes pueden expresar la disposición relativa en lugar de adivinar coordenadas o pelearse con la auto-disposición.
- Algunos abogan por enfoques aún más “visual-first” (programación visual/UML pura), mientras que otros informan buenos resultados dejando que los agentes conduzcan Draw.io o Graphviz.
- Una persona señala que ahora a menudo simplemente pide a modelos de frontera que emitan SVG directamente, pero otros encuentran valioso un DSL estable por reproducibilidad y control.
Críticas y escepticismo
- Algunos consideran que la sintaxis y las restricciones podrían ser engorrosas para etiquetas largas y diseños complejos hasta que se añadan multilínea/continuación.
- Preocupaciones sobre la fragmentación del lenguaje frente a extender Mermaid o D2; otros piensan que mezclar auto-disposición y restricciones fuertes sería demasiado complejo.
- Un comentarista cuestiona el valor del proyecto si grandes partes parecen generadas por LLM, sugiriendo desconfianza, mientras otros rechazan esa postura.
- En general, hay una mezcla de entusiasmo por el concepto y reconocimiento de que la ergonomía, la reutilización y el soporte del ecosistema determinarán la adopción a largo plazo.