Hacker News 中文摘要

RSS订阅

TALA 现已开源 -- TALA Is Open-Source

继此前公告,塔拉(TALA)现已以与 D2(D2)相同的 MPL-2.0 许可证开源。塔拉是专为软件架构图设计的新型自动布局算法,主要作为正交布局引擎,贴近白板绘图而非单向 DAG 布局。它融合图绘制论文与原创技术,考量对称、中位数距离、流向及相似节点聚簇等美学目标。

正文

继之前的公告之后,TALA(Terrastruct 的自动布局算法)现已开源,采用与 D2 相同的许可证(MPL-2.0)。

TALA 是一种专为软件架构图设计的新型自动布局算法。它主要是一个正交布局引擎,更接近白板上的手绘感,而非单向生长的基于 DAG 的布局。它融合了多篇图绘制研究论文(在源码中引用)的思路与原创技术,以实现美观的图表,兼顾对称性、中位距离、流向、相似节点聚类等多种“美观”目标。

我尽量简短,直接上例子。

第一批:对比

对比了 TALA 与 D2 自带的另两种布局算法——Dagre 和 ELK 的渲染效果。这些例子不是特意挑的,只是从 GitHub 上找的公开 d2 文件,所以有些图你可能反而更喜欢非 TALA 的布局。包括:Fulcro RAD 架构、Mocha secure-enclave SoC、Jupyter on AWS EKS、Lion Reader 前端数据流、ROSS 转子动力学工作流、Go Queue worker 架构、Ouroboros Leios 模拟器。

第二批:自定义定位

展示了 TALA 的独特特性:节点位置和大小可自定义,例如锁定坐标。这特别适合智能体场景——模型擅长在二维空间画线,但搞不定连线路由,而 TALA 能接手。这些图由 AI 生成,用 top/left 定位,包括: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。

第三批:部分定位

展示 TALA 支持混合模式:部分节点指定坐标,其余交给布局引擎。你可以构想一组节点的特定形状并用坐标定好,剩下的交给 TALA,同样由 AI 生成。例如 The Printing Room(4 个固定节点 / 10 个自动节点):四个 CMYK 站点共享固定的 top 坐标和等距的 left 坐标,保持机械对齐;进料器、相机、套准控制器、烘干、印前和印后步骤由 TALA 自动定位,且均无 top 或 left 设定。另一个例子 MULE / Utility Rover(4 个固定节点 / 11 个自动节点):四个电机组件固定在底盘矩形的前后角,TALA 将控制器、传感器、电源和安全节点布置在角之间或周围,并排布未定位的车队容器。

也要注意,TALA 并非没有取舍。

算法带有随机性。它默认使用 3 个随机种子寻找最佳布局,选出评分最高的。给定相同种子和输入,产出相同图表。但假如只加一个节点,图可能完全不同。而 Dagre 和 ELK 通常只是把新节点塞进去,整体变化不大,这有时反而是好事。

它对 DAG 的布局效果不佳。想要长流程图时,我常更偏好 Dagre 或 ELK。

大图运行时间更长,呈非线性增长。运行性能对比见 https://github.com/d2lang/d2-benchmarks。

TALA 已打包进 D2 v0.9.0,安装后加 --layout=tala 即可试用!或访问 https://play.d2lang.com,它完全在客户端运行。我很期待开源带来的改进,迫不及待想看社区提交的成果。

特别感谢 Gavin Nishizawa 在 TALA 各方面的重大贡献,以及 Júlio César Batista 在层级算法等方面的工作。和你们一起做这么有趣的东西真开心。

评论

社区对 D2 图表工具及其新自动布局引擎 TALA 整体持欢迎态度,认为其提升了架构图绘制效率,但分歧在于 TALA 在特定场景下反而增加视觉复杂度,且个人使用面临价格门槛。

认可 D2 与新布局显著提升了绘图效率

  • 欢迎更好的自动布局,称 D2 学习成本低且节省时间,新引擎在多数示例上更整洁,并计划尝试或集成(较多人)。 > 学 D2 花了一天,省下的时间比这多得多(@Taikonerd)

认为 TALA 在特定图或性价比上不尽人意

  • 部分用户指出 TALA 在需保持分组和左到右流向的图上反而更复杂;也有人认可其优于 ELK 但因个人使用场景认为价格超预算(少数人)。 > 那个 Go 队列图用 TALA 显得比实际更复杂,其他版本好歹把服务和用户分组了(@ricardobeat)

倾向自研或疑问生态整合方式

  • 少数人因已自研图表工具而未切到 D2,或提问将此类布局集成进 Graphviz 是否合适(少数人)。 > 发现 D2 时我已在自己项目里投入太多,节点定位和边路由避标签太难了(@azriel91)

有价值的补充

  • D2 属于非营利项目,其默认布局引擎对某些图表现糟糕,ELK 是显著改进,TALA 有时比 ELK 更优(@aidenn0 @ChrisArchitect)