О 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
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Mocha secure-enclave SoC
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Jupyter на AWS EKS
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Поток данных фронтенда Lion Reader
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Workflow роторной динамики ROSS
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Архитектура Go Queue worker
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Симулятор Ouroboros Leios
Кликните на диаграмму, чтобы увеличить. Каждая расстановка масштабируется под размер панели.
Группа 2: Кастомная расстановка
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
Группа 3: Частичная расстановка
The Printing Room
Зафиксированные: четыре станции CMYK имеют общую координату top и равномерно распределённые координаты left, так что последовательность печати сохраняет механическое выравнивание.
Автоматические: TALA расставляет подачу, камеру, контроллер регистрации, сушилку, препресс и стадии отделки — ни один из них не имеет явно заданных top или left.
MULE / Utility Rover
Зафиксированные: четыре моторных узла расположены в передних и задних углах прямоугольника шасси.
Автоматические: TALA расставляет контроллеры, датчики, блоки питания и безопасности между углами или рядом с ними, а также организует расположение неупорядоченного контейнера флота.