TALA 是开源的。
TALA Is Open-Source

原始链接: https://d2lang.com/blog/tala-is-open-source/

Terrastruct 已根据 MPL-2.0 协议开源了 **TALA (Terrastruct's AutoLayout Algorithm)**。作为 D2 v0.9.0 的内置组件,TALA 是一款专为软件架构图设计的正交布局引擎,优先考虑对称性、聚类和流程等美学品质。 与传统的基于 DAG 的算法不同,TALA 在“白板风格”布局方面表现出色。它提供了一些独特功能,例如支持锁定特定节点的坐标,同时让引擎自动处理其余部分的连线——这对于智能体 AI 工作流来说是一项理想功能。它还支持混合布局,即将手动定位与自动布局相结合。 然而,使用 TALA 存在一些取舍: * **非确定性稳定性:** 与 Dagre 或 ELK 相比,添加节点可能会显著改变整体布局。 * **专业化:** 它不太适合长流程的 DAG 图,在此类场景下,Dagre 或 ELK 的表现通常更好。 * **性能:** 其扩展性呈非线性,在处理超大规模图表时速度较慢。 用户可以通过安装 D2 v0.9.0 并使用 `--layout=tala` 标志,或访问 D2 在线演示页面来尝试使用 TALA。开发团队欢迎社区贡献,以进一步增强该算法的功能。

```Hacker News最新 | 过往 | 评论 | 提问 | 展示 | 招聘 | 提交登录TALA 已开源 (d2lang.com)8 点,由 alixanderwang 发布于 53 分钟前 | 隐藏 | 过往 | 收藏 | 1 条评论 帮助 ashiban 35 分钟前 [–] 谢谢分享。你认为哪些核心启发式方法或概念使其脱颖而出,或者让它更适合用于架构图?回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:```
相关文章

原文

Following up on the announcement here, TALA (Terrastruct's AutoLayout Algorithm) is now open-source under the same license as D2 (MPL-2.0).

TALA is a novel autolayout algorithm designed with software architecture diagrams in mind. This means it's primarily an orthogonal layout engine, which more closely matches what you might find on whiteboards, rather than the DAG-based ones that grow in one direction. It blends ideas from different graph-drawing research papers (cited in source code) along with original techniques to achieve aesthetic diagrams. It considers multiple objectives of "aesthetic", including symmetry, median distance, flow, clustering of like nodes, and much more.

I'll keep the text short and lead with examples.

  • The first batch compares diagrams rendered with TALA with the other two layout algorithms D2 comes with -- Dagre and ELK. These are not hand-selected, I just found public d2 files from around GitHub. So for some, you may very well prefer the not-TALA layout.
  • The second batch demonstrates a unique property of TALA, which is that node positions and sizes can be customized, e.g. locking in the coordinates. This lends itself especially well to agentic use cases, where models can draw in 2D space well, but TALA still takes care of routing, which models still struggle with. I had AI generate these.
  • The third batch demonstrates TALA's capability to support a hybrid of some nodes specifying coordinates and some left to the layout engine. You might have a specific shape of a collection of nodes in mind, which you can specify with coordinates, and TALA can take care of the rest. Again, AI generated.

Please also note that TALA is not without tradeoffs.

  • It has randomness in the algorithm. It finds the best layout by using a default of 3 seeds and choosing the one scored the best. Given the same seeds and same input, it'll produce the same diagram. But let's say you just add one more node. The diagram could look completely different. In Dagre and ELK, it looks mostly the same as prior, with the extra node accommodated for. This is sometimes desirable.
  • It doesn't do DAGs as well. I often find myself preferring Dagre or ELK when I want a long flowing graph.
  • It can take longer to run for larger diagrams -- scaling nonlinearly. For a benchmark of TALA's runtime performance compared to others, see https://github.com/d2lang/d2-benchmarks.

TALA comes bundled into D2 v0.9.0, so just install and specify with --layout=tala to try it out! Or head on over to https://play.d2lang.com, which runs 100% client-side. I especially look forward to the improvements that being open-source brings, and can't wait to see what improvements and ideas are submitted by the community.

Special thanks to Gavin Nishizawa for substantial broad contributions across TALA, and Júlio César Batista for his work on hierarchy algorithms and more. It was so fun getting to work on such interesting stuff with you guys.

Batch 1: Comparisons

Fulcro RAD architecture

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

Mocha secure-enclave SoC

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

Jupyter on AWS EKS

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

Lion Reader frontend data flow

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

ROSS rotor-dynamics workflow

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

Go Queue worker architecture

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

Ouroboros Leios simulator

Select a diagram to enlarge it. Each layout is scaled to fit its panel.

Batch 2: Custom positioning

Signal House

Signal House
View D2 source

Atlas / Data platform

Atlas / Data platform
View D2 source

Night shift / Mission control

Night shift / Mission control
View D2 source

Friday deploy: the escape room

Friday deploy: the escape room
View D2 source

The Internet is a jellyfish

The Internet is a jellyfish
View D2 source

Orbital coffee logistics

Orbital coffee logistics
View D2 source

Cloud Conservatory

Cloud Conservatory
View D2 source

Velvet Rope

Velvet Rope
View D2 source

Synthwave City

Synthwave City
View D2 source

Batch 3: Partial positioning

The Printing Room

The Printing Room

Pinned: The four CMYK stations share a fixed top coordinate and equally spaced left coordinates so the print sequence retains its mechanical alignment.

Automatic: TALA positions the feeder, camera, registration controller, dryer, prepress and finishing steps; none has top or left.

See the positioning declarations
View D2 source

MULE / Utility Rover

MULE / Utility Rover

Pinned: The four motor assemblies are fixed at the front and rear corners of the chassis rectangle.

Automatic: TALA places every controller, sensor, power and safety node between or around those corners and arranges the unpositioned fleet container.

See the positioning declarations
View D2 source
Sources and rendering details

The seven layout comparisons use public project diagrams from D2's real-world fixtures. Each comparison uses the same D2 source and the same compiler build, changing only the layout engine. Source styles, themes, and explicit grid constraints are preserved. Some fixture icons were already replaced with built-in shapes.

SVGs are scaled independently to fit each panel. Use Open SVG to inspect labels and connections at a larger size.

Source provenance and licenses ·

Render settings and revisions

The eleven positioning examples are original, fictional compositions rendered with TALA using the same public D2 build. Icon downloads include the full source and local vector assets. The two partial-positioning examples apply top/left only to their listed pinned nodes; all other nodes and every container are automatically placed.

Positioning render settings

.

联系我们 contact @ memedata.com