О TALA

Вслед за анонсом о переходе в статус некоммерческого проекта, алгоритм TALA (Terrastruct's AutoLayout Algorithm) теперь открыт под той же лицензией, что и D2 (MPL-2.0).

TALA — это оригинальный алгоритм автоматической расстановки узлов, созданный специально для диаграмм архитектуры ПО. Это ортогональный движок расстановки — он работает с диаграммами так, как их можно нарисовать на доске, в отличие от DAG-ориентированных алгоритмов, которые вытягивают граф в одном направлении. TALA объединяет идеи из различных исследовательских работ в области визуализации графов (ссылки есть в исходном коде) с собственными техниками для создания эстетичных диаграмм. Алгоритм одновременно оптимизирует множество параметров красоты: симметрию, медианное расстояние, поток данных, кластеризацию похожих узлов и многое другое.

Ниже представлены примеры использования — начнём сразу с них.

  • Первая группа сравнивает диаграммы, отрисованные TALA, с двумя другими алгоритмами расстановки в D2 — Dagre и ELK. Это не отобранные вручную примеры, а просто публичные D2-файлы, найденные на GitHub. Для некоторых вы вполне можете предпочесть расстановку без TALA.
  • Вторая группа демонстрирует уникальное свойство TALA: позиции и размеры узлов можно кастомизировать, например, зафиксировать координаты. Это особенно полезно для агентных сценариев, когда нейросети хорошо рисуют в 2D-пространстве, но плохо справляются с маршрутизацией рёбер — здесь TALA берёт эту работу на себя. Примеры ниже созданы с помощью AI.
  • Третья группа показывает гибридный подход TALA: часть узлов может иметь явно заданные координаты, остальные расставляются автоматически. Если вы хотите определить конкретную форму кластера узлов через координаты, а остальное поручить алгоритму — TALA справится. И эти примеры тоже созданы с помощью AI.

Но нужно отметить, что TALA имеет свои ограничения.

  • В алгоритме присутствует случайность. Он находит лучшую расстановку, используя по умолчанию 3 seed-значения и выбирая вариант с лучшей оценкой. При одинаковых seed-значениях и одинаковом входе результат будет одинаков. Но если добавить даже один узел, диаграмма может выглядеть совсем по-другому. У Dagre и ELK в такой ситуации диаграмма останется похожей на предыдущую версию, с новым узлом просто вписанным. Иногда это желательно.
  • TALA менее удачен для DAG-диаграмм. Для длинных потоковых графов часто лучше смотрятся Dagre или ELK.
  • Для больших диаграмм время работы растёт нелинейно. О производительности TALA можно узнать из бенчмарков.

TALA уже включён в D2 v0.9.0 — просто установите и используйте флаг --layout=tala! Или попробуйте на песочнице D2, работающей полностью на стороне клиента. С открытым кодом ожидается много улучшений благодаря сообществу.

Отдельная благодарность Гэвину Нишизаве за существенный вклад в разные части TALA и Жулиу Сезару Батисте за работу над алгоритмами иерархии. Было здорово работать над таким интересным проектом вместе с вами.

Группа 1: Сравнения

Архитектура Fulcro RAD

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Архитектура Fulcro RAD, отрисованная TALA
Dagre
Архитектура Fulcro RAD, отрисованная Dagre
ELK
Архитектура Fulcro RAD, отрисованная ELK

Mocha secure-enclave SoC

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Mocha secure-enclave SoC, отрисованная TALA
Dagre
Mocha secure-enclave SoC, отрисованная Dagre
ELK
Mocha secure-enclave SoC, отрисованная ELK

Jupyter на AWS EKS

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Jupyter на AWS EKS, отрисованная TALA
Dagre
Jupyter на AWS EKS, отрисованная Dagre
ELK
Jupyter на AWS EKS, отрисованная ELK

Поток данных фронтенда Lion Reader

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Поток данных фронтенда Lion Reader, отрисованный TALA
Dagre
Поток данных фронтенда Lion Reader, отрисованный Dagre
ELK
Поток данных фронтенда Lion Reader, отрисованный ELK

Workflow роторной динамики ROSS

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Workflow роторной динамики ROSS, отрисованный TALA
Dagre
Workflow роторной динамики ROSS, отрисованный Dagre
ELK
Workflow роторной динамики ROSS, отрисованный ELK

Архитектура Go Queue worker

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Архитектура Go Queue worker, отрисованная TALA
Dagre
Архитектура Go Queue worker, отрисованная Dagre
ELK
Архитектура Go Queue worker, отрисованная ELK

Симулятор Ouroboros Leios

Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.

TALA
Симулятор Ouroboros Leios, отрисованный TALA
Dagre
Симулятор Ouroboros Leios, отрисованный Dagre
ELK
Симулятор Ouroboros Leios, отрисованный ELK

Группа 2: Кастомная расстановка

Signal House

TALA · расстановка с top / left
Signal House

Atlas / Data platform

TALA · расстановка с top / left
Atlas / Data platform

Night shift / Mission control

TALA · расстановка с top / left
Night shift / Mission control

Friday deploy: the escape room

TALA · расстановка с top / left
Friday deploy: the escape room

The Internet is a jellyfish

TALA · расстановка с top / left
The Internet is a jellyfish

Orbital coffee logistics

TALA · расстановка с top / left
Orbital coffee logistics

Cloud Conservatory

TALA · расстановка с top / left
Cloud Conservatory

Velvet Rope

TALA · расстановка с top / left
Velvet Rope

Synthwave City

TАЛА · расстановка с top / left
Synthwave City

Группа 3: Частичная расстановка

The Printing Room

TALA · 4 зафиксированных узла / 10 автоматических узлов
The Printing Room

Зафиксированные: четыре станции CMYK имеют общую координату top и равномерно распределённые координаты left, так что последовательность печати сохраняет механическое выравнивание.

Автоматические: TALA расставляет подачу, камеру, контроллер регистрации, сушилку, препресс и стадии отделки — ни один из них не имеет явно заданных top или left.

MULE / Utility Rover

TALA · 4 зафиксированных узла / 11 автоматических узлов
MULE / Utility Rover

Зафиксированные: четыре моторных узла расположены в передних и задних углах прямоугольника шасси.

Автоматические: TALA расставляет контроллеры, датчики, блоки питания и безопасности между углами или рядом с ними, а также организует расположение неупорядоченного контейнера флота.