- D2 ist eine Skriptsprache, mit der sich Diagramme textbasiert erstellen lassen, und bietet einen Ansatz zur automatischen Erzeugung visueller Materialien per Code
- Nutzer definieren mit einer einfachen Syntax Knoten und Beziehungen, die von einer automatischen Layout-Engine visuell angeordnet werden
- Jedes Code-Snippet in der Dokumentation kann direkt im Playground ausgeführt und bearbeitet werden, sodass sich die Ergebnisse sofort überprüfen lassen
- Allerdings gibt es Ausnahmen: Einige Beispiele mit
import lassen sich nicht direkt im Playground ausführen
- Für Entwickler ist es ein Werkzeug, das die Automatisierung visueller Dokumentation und die Effizienz der Zusammenarbeit erhöht
Überblick über D2
- D2 ist eine deklarative Skriptsprache, mit der sich Diagramme als Code schreiben lassen. Sie ermöglicht es, komplexe Strukturen als Text zu definieren und automatisch zu visualisieren
- Nutzer beschreiben Knoten, Kanten, Gruppen usw. mit einer einfachen Syntax
- Die Ergebnisse werden automatisch ausgerichtet, und verschiedene Stile können angewendet werden
- Die Sprache eignet sich gut für Versionsverwaltung und Zusammenarbeit und lässt sich leicht in Code-Reviews oder automatisierte Dokumentations-Pipelines integrieren
Funktionen des Playgrounds
- Jedes Code-Snippet in der D2-Dokumentation bietet eine interaktive Funktion, mit der es direkt im Playground geöffnet, bearbeitet und ausgeführt werden kann
- Bewegt der Nutzer die Maus über ein Snippet, wird der Playground-Link aktiviert
- So lassen sich Diagramme in Echtzeit anpassen und die Ergebnisse visuell überprüfen
- Allerdings gibt es die Einschränkung, dass Snippets mit
import-Anweisungen nicht sofort im Playground ausgeführt werden können, da sie externe Ressourcen benötigen
Bedeutung in der Praxis
- D2 unterstützt die Automatisierung visueller Dokumentation und bietet den Vorteil, Systemdesigns oder Datenflüsse gemeinsam mit dem Code verwalten zu können
- Indem Entwickler und Designer Diagramme in derselben Sprache definieren, wird die Effizienz der Zusammenarbeit verbessert
- Es gilt als Werkzeug, das im Open-Source-Ökosystem die Standardisierung codebasierter Diagrammerstellung fördert
1 Kommentare
Hacker-News-Kommentare
Als Mitentwickler von D2 denkt er derzeit über Ideen zur Erweiterung der Animationsfunktionen nach.
Er hat die Diskussion dazu in einer GitHub Discussion gepostet und würde gern Meinungen dazu hören.
Meist nutzt er mermaid, fragt sich aber, ob D2 eine flexiblere Schnittstelle bieten könnte.
Er möchte auch wissen, ob Funktionen wie Tool Calling mit LLM-Anbindung oder benutzerfreundliche Interfaces wie MCP geplant sind.
Auch beim Rendern vieler Objekte sei es angenehm, nicht mit der Engine kämpfen zu müssen.
Allerdings sei die Dokumentation von sdk/d2lib unzureichend gewesen, sodass es anfangs einiges an Trial-and-Error gab.
Allerdings hält er auffällige Animationen nicht unbedingt für notwendig. Wenn Hervorhebung nötig ist, sei ein einfacher Farbwechsel intuitiver.
Wenn jedoch durch Textänderungen das ganze Diagramm ins Wanken gerät, könnte das eher ablenkend sein.
Außerdem wäre eine offizielle Unterstützung für Swimlane-Diagramme wünschenswert.
Jemand versucht, Tools wie D2 oder Penrose in Python zu kapseln, um datengestütztes Diagramm-Scripting auszuprobieren.
Die meisten deklarativen Tools unterstützten jedoch keinen „declare, then tweak“-Workflow, was unpraktisch sei.
Penrose lasse sich zwar leicht anpassen, liefere aber zufällige und unvorhersehbare Ergebnisse.
In der Open-Source-Engine gehe das nicht, teilweise aber über die Freehand-Funktion.
Jemand fragte sich, wie nah sich die D2-Syntax in einer allgemeinen Programmiersprache nachbilden lässt.
In Python sei eine vollständig identische DSL wegen Einschränkungen beim Operator Overloading schwierig, aber über Operator Overloading für Strings könne man etwas Ähnliches versuchen.
a <- b | "edge"nachahmen.Er scherzt jedoch, dass er einen dafür „als Geist heimsuchen“ würde, wenn man das in der Praxis benutze.
"x" --> "y" | "hello world"bauen könne.Übertreiben sollte man es damit aber nicht.
x >> y << "label"eine einfache interne DSL umsetzen.Man könne auch ein Objektmodell in einer Diagram-Klasse bauen und einen Renderer daran anbinden.
Als Hauptautor des mgmt-Projekts arbeitet jemand viel mit DAGs.
Beim Hinzufügen und Entfernen von Knoten und Kanten brauche er Diagramme, die visuell stabil bleiben und animierte Übergänge ermöglichen.
Bei Graphviz sei es störend, dass das Layout zwischen Snapshots springt.
Der Sketch-Modus und die interaktiven Funktionen von D2 seien wirklich nützlich.
Dank Tooltips und Links steige der Nutzwert von Diagrammen deutlich.
Jemand nutzt D2 schon lange und empfiehlt es auch intern aktiv weiter.
Allerdings seien die Kosten der Enterprise-Lizenz zu hoch, weshalb er es nur privat nutze.
Die TALA-Lizenz koste 3000 Dollar pro Jahr, selbst die private Nutzung noch 120 Dollar, was belastend sei.
Die Funktion, Helm-Charts oder Systembeschreibungen in ein LLM zu geben und damit automatisch Diagramme zu erzeugen, hält er für innovativ.
Kürzlich sorgte die Unterstützung für ASCII-Rendering in D2 für Gesprächsstoff.
Die dazugehörige Diskussion geht im früheren Beitrag weiter.
D2 gibt es schon ziemlich lange, wirkt aber immer noch weniger bekannt als mermaid.
Funktional sei es deutlich überlegen, und mehr Leute sollten davon erfahren.
Auf der eigenen AI-Plattform zo.computer wurde D2 als Tool zur Diagrammerstellung eingeführt.
Es sei ausdrucksstärker als mermaid und daher gut für KI-basierte Visualisierung geeignet.
D2 ist großartig, hat gegenüber PlantUML oder mermaid aber keinen entscheidenden Unterschied.
Man warte immer noch auf die Killer-App für Diagrammcode.
Ihm gefalle auch, dass keine npm-Installation nötig ist.
Allerdings sei mermaid bei der Integration mit Obsidian und ähnlichen Tools sehr stark.