veilletech.fr
8 sept. Feed du jour
#09 OUTILS Article

TALA passe en open source dans D2 0.9

Un schéma qu'on ne peut pas cadrer finit par ne plus rien dire.

TALA, le moteur de placement propriétaire de Terrastruct conçu pour les diagrammes d'architecture, passe en open source sous MPL-2.0 et arrive dans D2 v0.9.0. Contrairement à Dagre et ELK, il est orthogonal plutôt qu'orienté DAG, et permet de verrouiller les coordonnées de certains nœuds en laissant les autres au moteur. En contrepartie il comporte de l'aléatoire : ajouter un nœud peut redessiner tout le schéma.

2 min de lecturedébutantvidéo 1:16
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. La propriété qui le distingue
  3. Ce qu'il faut savoir avant d'adopter
  4. À retenir

Ce qui se passe

Quand on décrit un schéma en texte, c'est le moteur de placement qui décide de tout. Or les moteurs livrés avec D2 — Dagre et ELK — viennent du monde des graphes orientés sans cycle : ils font pousser le dessin dans une direction.

Un schéma d'architecture ressemble plutôt à un tableau blanc : des boîtes réparties dans un plan, des liens qui partent dans tous les sens. C'était la spécialité de TALA (Terrastruct's AutoLayout Algorithm), moteur orthogonal et jusqu'ici propriétaire.

Il passe en open source sous MPL-2.0, la même licence que D2, et arrive directement dans D2 v0.9.0 :

Terminal
d2 --layout=tala architecture.d2 architecture.svg

Sans rien installer, play.d2lang.com l'exécute aussi — entièrement côté client.

TALA combine des idées tirées de plusieurs articles de recherche en dessin de graphes (cités dans le code source) et optimise plusieurs critères d'esthétique en même temps : symétrie, distance médiane, flux, regroupement des nœuds semblables.

La propriété qui le distingue

Les positions et les tailles des nœuds sont personnalisables : on peut verrouiller des coordonnées avec top et left, et laisser le moteur placer le reste. Dans les exemples publiés, quatre nœuds épinglés cohabitent avec dix ou onze nœuds placés automatiquement.

L'auteur relève l'usage qui en découle : c'est bien adapté aux modèles de langage, qui savent raisonner en deux dimensions et placer des boîtes, mais restent mauvais pour router des liens. On laisse donc au modèle la disposition, et à TALA le tracé.

Ce qu'il faut savoir avant d'adopter

Le billet est franc sur les compromis, ce qui est assez rare pour être signalé.

Les comparaisons publiées ne sont d'ailleurs pas triées sur le volet : l'auteur a pris des fichiers D2 publics trouvés sur GitHub, et admet que le résultat non-TALA sera parfois préférable.

À retenir

Une option de plus, gratuite, sur un outil déjà installé : la barrière à l'essai est d'un argument de ligne de commande. Elle vaut surtout pour les schémas d'infrastructure et les vues d'ensemble — pas pour les enchaînements linéaires, où les moteurs existants restent meilleurs.

Source : D2