Skip to content

Git 原生的协作,不再要另一个平台

前一阵子我说过,我想造一个 GitHub 的替代品。

重要的领悟是:我并不需要再造一个 GitHub。

Git 已经把代码分发出去了。

它没有分发的,是围绕着代码的协作。

Issue。评审。CI 结果。决定。治理。身份。智能体记忆。

这些东西,至今通常还困在别人的服务器里。

所以我造了 Hubnot。

命名小注:这个项目本来叫别的名字。我的欧洲朋友们非常好心,指出它在好几种语言里自带不该有的含义,所以我从善如流,在发布前改了名。哎呀,我的锅。(这就是为什么搞创意命名是个坏主意)。😅

https://github.com/LynnColeArt/hubnot

Git 里的签名事实

Hubnot 把协作跟 Git 仓库本身一起分发。

没有 Hubnot 服务器。
没有 Hubnot 数据库。
没有任何 SaaS 账号握着项目的状态。

一个普通的 Git remote,同时承载代码,和存在 refs/hn/* 之下的签名协作事实。
也就是说:提案、评审、CI 请求与结果、治理决定、合并事实、设备身份、政策修订、有意写下的智能体记忆,全都可以跟着仓库走。

而且它们是签名的。

这个协议围绕不可变的事实设计,而不是可变的网站状态。

一条评审说:「这个 actor 批准的,就是这一份提案。」

一条 CI 结果说:「这个 runner 测的,就是这一版候选。」

一条决定说:「这位维护者依照这版政策,接受了这一版修订。」

提案一变,旧的证据不会奇迹般地套用到新的上。

你建一版新修订,重新收集证据。
这话大声说出来,听着像废话。

但大多数软件协作系统,偏偏不是这么建模的。

实战 alpha

Hubnot 已经跨过了它第一个重要的里程碑:实战 alpha (operational alpha) 完成。

更重要的是,Hubnot 已经用自己的协议,对它自己公开的主分支完成了修订、独立沙盒测试、批准、接受,并把变更合并了进去。

没错,它已经开始吃自家的狗粮了。
或者,吃自家的 Git 对象。

项目仍是 alpha。协议还没稳定,要造的东西还很多。

但核心想法是成立的。

Git 已经给了我们分布式版本控制。

Hubnot 是一个实验:把这件事干完。

软件协作里,不该只有代码属于干活的人。

MIT 许可。
随便 clone、随便搞坏、随便改进、随便争论、随便往上盖楼。

现在去吧,你这美丽的发光小生命,去弄坏点什么!