3 Punkte von GN⁺ 2025-10-27 | 1 Kommentare | Auf WhatsApp teilen
  • 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

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

    • In letzter Zeit visualisiert er Architekturentscheidungen mit Hilfe von LLMs schnell.
      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.
    • Er hält D2 für ein wirklich großartiges Tool. Besonders bei der Automatisierung von AWS-Netzwerk-Layouts sei es nützlich gewesen.
      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.
    • Er nutzt D2 seit einigen Monaten und war überrascht, wie leicht es zu lernen ist.
      Allerdings hält er auffällige Animationen nicht unbedingt für notwendig. Wenn Hervorhebung nötig ist, sei ein einfacher Farbwechsel intuitiver.
    • Er fragt sich, was genau der Zweck der Animationen ist. Wenn bei Klicks während einer Präsentation Elemente hinzugefügt würden und Verbindungen sanft hervorgehoben würden, wäre das gut.
      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.
    • Mit „Level 4 - dramatic mode ;)“ teilt jemand ein dramatisches SVG-Beispiel.
  • 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.

    • Die Anpassung benutzerdefinierter Layouts in D2 sei nur in der proprietären Engine möglich.
      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.

    • Auch in Python könne man mit ein paar Tricks eine Syntax wie a <- b | "edge" nachahmen.
      Er scherzt jedoch, dass er einen dafür „als Geist heimsuchen“ würde, wenn man das in der Praxis benutze.
    • In Scala seien benutzerdefinierte Operatoren möglich, sodass man DSLs wie "x" --> "y" | "hello world" bauen könne.
      Übertreiben sollte man es damit aber nicht.
    • Auch in Ruby lasse sich in der Form 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.

    • Mit der Watch-Funktion von d2 lasse sich durch einen einfachen Script-Hack mit schrittweisem Dateiaustausch ein ähnlicher Effekt erzielen.
  • 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.

    • Persönlich finde er die Ausgabequalität von TALA am schwächsten. Meist nutze er die ELK-Engine.
  • 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.

    • Er selbst möge D2 ebenfalls lieber, aber mermaid sei oft die praktischere Wahl, weil es auf vielen Plattformen standardmäßig unterstützt werde.
    • Jemand ist gerade erst auf D2 gestoßen und fragt sich, worin es besser als mermaid ist.
  • 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.

    • Jemand fragt nach der Umsetzung. Wurde ein eigener MCP-Server für D2 gebaut?
    • Jemand bedankt sich mit den Worten: „Ben, danke, dass du LinkedIn/X erträglich gemacht hast.“
  • 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.

    • Wenn man mit solchen Tools große Codebasen visuell erkunden könnte, wäre das ein großer Vorteil.
    • Ein Vorteil von D2 sei, dass es ein eigenständiger Compiler ist und ASCII-Rendering unterstützt.
      Ihm gefalle auch, dass keine npm-Installation nötig ist.
      Allerdings sei mermaid bei der Integration mit Obsidian und ähnlichen Tools sehr stark.
    • Jemand wirft die Frage auf, welche Funktionen dieses Killer-Programm haben müsste.