TALA (Terrastruct's AutoLayout Algorithm) is nu open-source beschikbaar onder de MPL-2.0 licentie. Het algoritme is specifiek ontworpen voor softwarearchitectuurdiagrammen en maakt gebruik van een orthogonale layout-engine, wat resulteert in diagrammen die natuurlijker aanvoelen, vergelijkbaar met tekeningen op een whiteboard.
Belangrijkste kenmerken en functionaliteiten:
- Esthetische optimalisatie: TALA richt zich op symmetrie, flow, mediane afstand en de clustering van gelijkaardige nodes.
- Flexibele positionering: Het ondersteunt zowel volledig automatische layouts als aangepaste positionering (locking), waarbij specifieke coördinaten kunnen worden vastgelegd. Dit is met name nuttig bij AI-gestuurde workflows.
- Hybride modus: De mogelijkheid om een deel van de nodes vast te pinnen terwijl de rest automatisch wordt geplaatst.
Beperkingen: Het algoritme maakt gebruik van randomisatie (seeds), wat kan leiden tot verschillende layouts bij het toevoegen van nieuwe nodes. Daarnaast presteert TALA minder goed bij Directed Acyclic Graphs (DAGs) en is de snelheid bij zeer grote diagrammen lager door een niet-lineaire schaling.
TALA is geïntegreerd in D2 v0.9.0 en kan worden gebruikt via de opdracht --layout=tala of via de online editor op play.d2lang.com.
TALA is open-source
Naar aanleiding van de eerdere aankondiging is TALA (Terrastruct's AutoLayout Algorithm) nu open-source onder dezelfde licentie als D2 (MPL-2.0).
Wat is TALA?
TALA is een vernieuwend autolayout-algoritme dat is ontworpen met softwarearchitectuurdiagrammen in het achterhoofd. Dit betekent dat het primair een orthogonale layout-engine is, wat nauwer aansluit bij wat men op whiteboards ziet, in tegenstelling tot DAG-gebaseerde engines (Directed Acyclic Graph) die in één richting groeien.
Het algoritme combineert ideeën uit verschillende onderzoeks papers over grafiektekenen (geciteerd in de broncode) met originele technieken om esthetische diagrammen te creëren. Hierbij wordt rekening gehouden met meerdere "esthetische" doelstellingen, waaronder:
- Symmetrie
- Mediane afstand
- Flow
- Clustering van gelijkaardige nodes
- En meer
Voorbeelden
Batch 1: Vergelijkingen
De eerste reeks vergelijkt diagrammen gerenderd met TALA met de andere twee layout-algoritmen waar D2 mee wordt geleverd: Dagre en ELK. Deze voorbeelden zijn niet handmatig geselecteerd, maar zijn publieke D2-bestanden van GitHub.
De vergelijkingen bevatten:
- Fulcro RAD-architectuur
- Mocha secure-enclave SoC
- Jupyter on AWS EKS
- Lion Reader frontend data flow
- ROSS rotor-dynamics workflow
- Go Queue worker architectuur
- Ouroboros Leios simulator
Batch 2: Aangepaste positionering
De tweede reeks demonstreert een unieke eigenschap van TALA: de posities en formaten van nodes kunnen worden aangepast, bijvoorbeeld door coördinaten vast te leggen (locking). Dit is bijzonder nuttig voor agentische use cases, waarbij AI-modellen goed kunnen tekenen in een 2D-ruimte, maar nog steeds moeite hebben met routing; TALA neemt de routing in dat geval over.
Voorbeelden in deze reeks:
- Signal House
- Atlas / Data platform
- Night shift / Mission control
- Friday deploy: the escape room
- The Internet is a jellyfish
- Orbital coffee logistics
- Cloud Conservatory
- Velvet Rope
- Synthwave City
Batch 3: Gedeeltelijke positionering
De derde reeks toont het vermogen van TALA om een hybride vorm te ondersteunen, waarbij sommige nodes specifieke coördinaten hebben en andere worden overgelaten aan de layout-engine.
Specifieke voorbeelden:
- The Printing Room: 4 vastgepinde nodes / 10 automatische nodes.
- Vastgepind: De vier CMYK-stations delen een vaste bovenwaarde (top) en gelijkmatig verdeelde linkerwaarden (left), zodat de printvolgorde zijn mechanische uitlijning behoudt.
- Automatisch: TALA positioneert de feeder, camera, registratiecontroller, dryer, prepress en finishing-stappen.
- MULE / Utility Rover: 4 vastgepinde nodes / 11 automatische nodes.
- Vastgepind: De vier motorassemblages zijn gefixeerd op de voor- en achterhoeken van de chassis-rechthoek.
- Automatisch: TALA plaatst elke controller, sensor, power- en safety-node tussen of rond die hoeken en arrangeert de niet-gepositioneerde fleet-container.
Trade-offs en beperkingen
TALA is niet zonder compromissen:
- Randomisatie: Het algoritme bevat een element van willekeur. Het vindt de beste layout door standaard 3 seeds te gebruiken en degene met de hoogste score te kiezen. Bij dezelfde seeds en dezelfde input is het resultaat identiek. Echter, het toevoegen van één extra node kan ervoor zorgen dat het diagram er compleet anders uit komt te zien. In Dagre en ELK blijft het diagram meestal grotendeels hetzelfde, waarbij de extra node simpelweg wordt ondergebracht.
- DAG-prestaties: TALA presteert minder goed bij DAGs. Voor lange, vloeiende grafieken is de voorkeur vaak Dagre of ELK.
- Snelheid: Bij grotere diagrammen kan de uitvoering langer duren, aangezien de schaling niet-lineair is. Voor een benchmark van de runtime-prestaties van TALA ten opzichte van andere engines kan worden gekeken op
https://github.com/d2lang/d2-benchmarks.
Gebruik en installatie
TALA is gebundeld in D2 v0.9.0. Je kunt het uitproberen door D2 te installeren en de opdracht --layout=tala te gebruiken. Alternatief is het beschikbaar via https://play.d2lang.com, wat volledig client-side draait.
Erkenningen
Speciale dank aan Gavin Nishizawa voor zijn substantiële en brede bijdragen aan TALA, en aan Júlio César Batista voor zijn werk aan hiërarchie-algoritmen en meer.
Details over bronnen en rendering
Layout-vergelijkingen
De zeven layout-vergelijkingen maken gebruik van publieke projectdiagrammen uit de real-world fixtures van D2. Elke vergelijking gebruikt dezelfde D2-bron en dezelfde compiler-build, waarbij alleen de layout-engine verschilt. Bronstijlen, thema's en expliciete grid-beperkingen zijn behouden. Sommige fixture-iconen zijn vervangen door ingebouwde vormen.
Positioneringsvoorbeelden
De elf voorbeelden van positionering zijn originele, fictieve composities gerenderd met TALA met behulp van dezelfde publieke D2-build. In de twee voorbeelden van gedeeltelijke positionering is de top/left instelling alleen toegepast op de genoemde vastgepinde nodes; alle andere nodes en containers zijn automatisch geplaatst.
TALA is open-source
Naar aanleiding van de eerdere aankondiging is TALA (Terrastruct's AutoLayout Algorithm) nu open-source onder dezelfde licentie als D2 (MPL-2.0).
Wat is TALA?
TALA is een vernieuwend autolayout-algoritme dat is ontworpen met softwarearchitectuurdiagrammen in het achterhoofd. Dit betekent dat het primair een orthogonale layout-engine is, wat nauwer aansluit bij wat men op whiteboards ziet, in tegenstelling tot DAG-gebaseerde engines (Directed Acyclic Graph) die in één richting groeien.
Het algoritme combineert ideeën uit verschillende onderzoeks papers over grafiektekenen (geciteerd in de broncode) met originele technieken om esthetische diagrammen te creëren. Hierbij wordt rekening gehouden met meerdere "esthetische" doelstellingen, waaronder:
- Symmetrie
- Mediane afstand
- Flow
- Clustering van gelijkaardige nodes
- En meer
Voorbeelden
Batch 1: Vergelijkingen
De eerste reeks vergelijkt diagrammen gerenderd met TALA met de andere twee layout-algoritmen waar D2 mee wordt geleverd: Dagre en ELK. Deze voorbeelden zijn niet handmatig geselecteerd, maar zijn publieke D2-bestanden van GitHub.
De vergelijkingen bevatten:
- Fulcro RAD-architectuur
- Mocha secure-enclave SoC
- Jupyter on AWS EKS
- Lion Reader frontend data flow
- ROSS rotor-dynamics workflow
- Go Queue worker architectuur
- Ouroboros Leios simulator
Batch 2: Aangepaste positionering
De tweede reeks demonstreert een unieke eigenschap van TALA: de posities en formaten van nodes kunnen worden aangepast, bijvoorbeeld door coördinaten vast te leggen (locking). Dit is bijzonder nuttig voor agentische use cases, waarbij AI-modellen goed kunnen tekenen in een 2D-ruimte, maar nog steeds moeite hebben met routing; TALA neemt de routing in dat geval over.
Voorbeelden in deze reeks:
- Signal House
- Atlas / Data platform
- Night shift / Mission control
- Friday deploy: the escape room
- The Internet is a jellyfish
- Orbital coffee logistics
- Cloud Conservatory
- Velvet Rope
- Synthwave City
Batch 3: Gedeeltelijke positionering
De derde reeks toont het vermogen van TALA om een hybride vorm te ondersteunen, waarbij sommige nodes specifieke coördinaten hebben en andere worden overgelaten aan de layout-engine.
Specifieke voorbeelden:
- The Printing Room: 4 vastgepinde nodes / 10 automatische nodes.
- Vastgepind: De vier CMYK-stations delen een vaste bovenwaarde (top) en gelijkmatig verdeelde linkerwaarden (left), zodat de printvolgorde zijn mechanische uitlijning behoudt.
- Automatisch: TALA positioneert de feeder, camera, registratiecontroller, dryer, prepress en finishing-stappen.
- MULE / Utility Rover: 4 vastgepinde nodes / 11 automatische nodes.
- Vastgepind: De vier motorassemblages zijn gefixeerd op de voor- en achterhoeken van de chassis-rechthoek.
- Automatisch: TALA plaatst elke controller, sensor, power- en safety-node tussen of rond die hoeken en arrangeert de niet-gepositioneerde fleet-container.
Trade-offs en beperkingen
TALA is niet zonder compromissen:
- Randomisatie: Het algoritme bevat een element van willekeur. Het vindt de beste layout door standaard 3 seeds te gebruiken en degene met de hoogste score te kiezen. Bij dezelfde seeds en dezelfde input is het resultaat identiek. Echter, het toevoegen van één extra node kan ervoor zorgen dat het diagram er compleet anders uit komt te zien. In Dagre en ELK blijft het diagram meestal grotendeels hetzelfde, waarbij de extra node simpelweg wordt ondergebracht.
- DAG-prestaties: TALA presteert minder goed bij DAGs. Voor lange, vloeiende grafieken is de voorkeur vaak Dagre of ELK.
- Snelheid: Bij grotere diagrammen kan de uitvoering langer duren, aangezien de schaling niet-lineair is. Voor een benchmark van de runtime-prestaties van TALA ten opzichte van andere engines kan worden gekeken op
https://github.com/d2lang/d2-benchmarks.
Gebruik en installatie
TALA is gebundeld in D2 v0.9.0. Je kunt het uitproberen door D2 te installeren en de opdracht --layout=tala te gebruiken. Alternatief is het beschikbaar via https://play.d2lang.com, wat volledig client-side draait.
Erkenningen
Speciale dank aan Gavin Nishizawa voor zijn substantiële en brede bijdragen aan TALA, en aan Júlio César Batista voor zijn werk aan hiërarchie-algoritmen en meer.
Details over bronnen en rendering
Layout-vergelijkingen
De zeven layout-vergelijkingen maken gebruik van publieke projectdiagrammen uit de real-world fixtures van D2. Elke vergelijking gebruikt dezelfde D2-bron en dezelfde compiler-build, waarbij alleen de layout-engine verschilt. Bronstijlen, thema's en expliciete grid-beperkingen zijn behouden. Sommige fixture-iconen zijn vervangen door ingebouwde vormen.
Positioneringsvoorbeelden
De elf voorbeelden van positionering zijn originele, fictieve composities gerenderd met TALA met behulp van dezelfde publieke D2-build. In de twee voorbeelden van gedeeltelijke positionering is de top/left instelling alleen toegepast op de genoemde vastgepinde nodes; alle andere nodes en containers zijn automatisch geplaatst.