打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Tangled (代码托管协作平台)

✨寻星知识库——携手与您,寻觅群星。


https://tangled.org/ 是一个新颖的代码托管及协作平台。

新颖之处 编辑 编辑源代码

和主流的github、gitlab、gitea等系统相比,其新颖在围绕ATproto的设计:它通过ATproto体系,把 git仓库服务(knot)、web服务(AppView)、构建服务(Spindles) 这三个关键(微)服务解耦了。

我们标准软件开发中的技术层面上的解耦,实现方法之一是拿个消息队列服务,把(微)服务们都连接到这个消息队列里,但还是要由单一组织持有、维护的。

而Tangled基于ATproto做的解耦,是理论上可以做到三个关键服务分别由不同的组织持有、维护的主权层面上的解耦。

举例说明:假设一个做开源的团队,有把源代码留在自己手里、并且即使平台挂掉了/把组织账号ban了,也不影响日常开发的需求,那么在Tangled出来之前,满足团队需求的方案是自托管gitlab/gitea,这样在团队范围内开发已经足够了。

但把项目开放到大开源社区后,外部贡献者要进来贡献代码,至少得先在自托管系统上开个账号才能提pr[1]

即使有openid connect技术可以简化注册,贡献者(或未来把贡献者github主页当简历品鉴的HR(的agent))也不能像github那样,在一个个人主页中看到他们所有的贡献信息:他们的贡献记录被分散到了各种自托管平台,不好汇聚到一处(反例:使用搜索引擎倒是可以)。


另外,自托管一个gitea/gitlab实例,团队至少得部署“git仓库服务+web服务”,而他们两个加起来的运维和下文纯git仓库服务相比是偏麻烦的。


但要用Tangled满足上述需求,团队只需要部署tangled中的 git仓库服务、Knot[2], 就可以了。

剩下的web服务、构建服务两部分自己可以不部署,直接用官方的。


外部贡献者可以直接用他们自己的“身份”,而不是被迫在每个不同的自托管实例上都重复注册、维护一个本地账号。这种基于ATproto 去中心化身份 的设计,实现了真正的“一次身份,到处贡献”。对于开发者而言,他们的所有代码提交、PR 评审和互动记录,都会天然且永久地绑定在自己的全局身份凭证上,而不会因为项目方自建实例的迁移、关停、甚至恶意封禁导致贡献记录丢失。


现状 编辑 编辑源代码

目前(26年6月),Tangled尚处于alpha阶段,不可以用在严肃的(生产)环境中。

笔者26年6月在体验Tangled时发现了其在个人设置处 添加SSH公钥 可以,但删掉SSH公钥无效:被删掉的SSH公钥还是会被 Knot认可 的安全漏洞[3]

而且自托管Tangled的一部分(Knot)时,出现了push到我自托管的Knot后无法通知官方那边的Spindles发起构建的bug,只好作罢,目前放弃了自托管Knot,转用了官方提供的Knot。


趣闻 编辑 编辑源代码

架构命名 编辑 编辑源代码

Tangled:缠结的、缠成一团

Knot:(用绳等打的)结

Spindle:纺锤

  1. https://anirudh.fi/future
  2. https://docs.tangled.org/knot-self-hosting-guide
  3. https://tangled.org/tangled.org/core/pulls/1759/round/3
寻星知识库使用 Cookie 技术提升您的浏览体验,这需要在您的浏览器存储部分信息。禁用 Cookie 将导致部分功能无法正常使用。 寻星团队将严格遵守隐私政策,并尽可能保护您的信息安全。 继续浏览寻星知识库,视为您同意启用 Cookie 并生成、存储相关数据。