Tangled 联邦式代码托管:自托管架构与协作能力更新
The federated code forge
Tangled 发布联邦式代码托管平台更新,以 Svelte 重做前端,并部署 Rust 编写的只读内存索引器 bobbin,覆盖 11+ 个全球区域。knot2 用 Rust 重写并在同一二进制中内置自定义 Git 与 SSH 服务,将问题、拉取请求、评论等协作对象存到仓库内,同时加入组织账户和堆叠式 PR。私有仓库、CLI、多语言 SDK 和 AI 智能体技能将在随后数周分批推出。
新版本允许仅自托管 Git 或 CI 等组件,并把问题与拉取请求随代码存放,为代码协作提供了更灵活的部署与迁移方式。
过去二十年的大部分时间里,代码平台一直是项目的栖身之所:代码托管于此,变更在此审查,贡献者也在此相遇。代码平台以集中化换取了便利。
但集中式代码平台正在瓦解。依赖他人保障正常运行、提供功能并妥善管理你的代码,并没有带来好结果。真正经受住时间考验的是电子邮件:用 Git 移动代码,用电子邮件——一种开放协议——讨论代码。然而,代价是用户体验。
Tangled 旨在兼得两者之长:开放协议的持久性,以及完善代码平台的便利与精致体验。
这是首个真正采用联邦架构的代码平台——你可以把自己的代码托管在自有服务器上,同时仍与他人无缝协作。我们的做法很务实:只自行托管你需要的部分,比如 Git 托管或 CI 运行器;也可以全部自行托管,包括 API 服务器和 UI。无论你选择什么,仍可与所有其他人沟通。
拥有自己的基础设施,也意味着你可以随心所欲地修改、扩展和定制代码平台。由于 Tangled 构建于 AT Protocol 之上,你可以开发自己的扩展、订阅 firehose,甚至编写完全自定义的 knot,比如这个运行在 Cloudflare Workers 上并使用其 Artifacts 产品进行 git 存储的实现。或者构建完全自定义的 spindle,例如mitchellh.com/tack。更进一步,你可以自行托管我们的超轻量 API 服务器,并构建自己的定制代码平台。
智能体让构建这类高度个性化的软件变得轻而易举;如果软件从一开始就以便于改造为设计理念,就更是如此。Tangled 对智能体极其友好。
软件工程的未来或许是一个不断变化的目标,但我们对开放协议和开发者自主权的押注,使我们能够灵活随之调整,并成为 。
产品更新
全新面貌!
最显而易见的一大变化:本次发布后,Tangled 焕然一新。我们基于新架构(详见下文),使用 Svelte 重做了 UI。现在一切应该都会更快、视觉更统一,也更美观!眼尖的你可能还发现,我们已将 Inter 换成 Timeless Sans。
你附近的 bobbin
直到现在,Tangled 的 Web UI 和后端一直是名为 appview 的单个 Go 单体应用。appview 服务使用 html/template + htmx 处理 AT Protocol 索引、缓存、协议外数据和 UI 渲染。它在一台位于瑞典的中型服务器上运行,使用单个 SQLite 数据库。
只要你与瑞典相距 ~50–100 ms,这样固然很好,但我们的多数用户并非如此!我们重新进行了架构设计:构建了一个使用 Svelte、部署在边缘节点的新独立前端应用。其数据由我们新编写于 Rust 的无磁盘、完全内存索引器服务提供:bobbin。bobbin 部署在全球 11+ 个地区,确保世界各地的用户都能获得最佳 API 和 UI 性能。
敏锐的读者可能已经注意到:bobbin 是纯只读的,只处理 AT Protocol 数据。其余部分呢?这些功能(以及更多功能)现已交由一组新的支持服务处理。
新的数据模型和仓库自有数据
首先看数据模型本身:我们有一组新的词典,现在所有内容都存放在 org.tangled.* 下,取代了旧的 sh.tangled.* 记录。
Knot2 恰如其名,是我们对 knot 服务器的第二次实现,这次使用 Rust 重写。Knot2 内置了一个完全定制的 Git 服务器,并将 SSH 服务器也打包进同一个二进制文件中。
使用 knot2 后,我们也改变了其中一些数据的存放位置。议题、拉取请求、评论、反应和标签现在都以协作对象(COB)的形式存储在 knot 上,就在代码旁边。COB 实际上只是仓库自身内的一条 Git 对象链。协作者、knot 成员和屏蔽名单也以同样的方式存储。
从某种意义上说,knot 现在的行为很像 PDS:它们保存着仓库所属一切内容的签名记录,包括完整历史;而与 PDS 非常相似的是,这些记录通过标准 AT Protocol firehose 进行同步。
但为什么?项目的议题和拉取请求与代码一样,都是项目不可分割的一部分,因此无论你选择在哪里托管项目,它们都应该与项目存放在一起。这样可让项目具备最高的可移植性。
如果 knot 替你写入议题和评论,是什么阻止它替你说话?证明机制。每当你在 knot 上创建或编辑记录时,Web 应用还会向你自己的 PDS 写入一条 org.tangled.graph.attestation 记录,指向该记录的确切版本及其背后的 COB 变更。双向验证!
自托管用户必须依照升级指南将他们的 knot 升级至 v1.20.0。
组织
组织账户上线了!Tangled 上的组织是一个真正的 AT Protocol 账户,拥有自己的 DID 和句柄,并托管在一个 Tranquil PDS 实例上。它们是无密码的委派账户:你可以通过新建组织页面创建一个组织,然后会获得一个 <name>.tngl.sh,并成为其所有者。所有者可以邀请成员,组织中的任何人都可以在创建或复刻仓库时代表该组织行动。与其他任何账户一样,你可以将句柄替换成自己拥有的域名。如果你一直用普通账户临时代替“组织”,请耐心等待——我们正在想办法把它们迁移过来。更多内容请参阅文档。
人人都能使用堆叠式 PR
我们的 PR 流程已经全面重构。新流程让每个人——无论使用 Jujutsu 还是标准 Git——都能提交和评审堆叠式 PR。如果你使用 Git,现在还可以在不同版本之间进行 interdiff(此前称为 rounds)。JJ 用户也可以在各项单独变更之间进行 interdiff。
未来数周陆续发布
这还不是全部。我们会在接下来几周内分阶段推出此次发布。接下来将推出私有仓库、CLI、面向不同语言的 SDK,以及供你的智能体使用的技能。
在那之前,请同样尽享本次发布的每一部分。
来源:Hacker News · tangled.org