重启 TUIC 的开发,但我将不再是“作者”
2025-02-22

一个开源项目如何才能长久生存?我一直在思考这个问题。

不久前,@iHsin 找到了我。他一直在维护一个 TUIC 的 fork。看到时至今日社区中的一些人还在持续做贡献,我感到很高兴,但也意识到我曾经做出的停止开发的决定可能并不是最好的选择。

为什么当初 TUIC 没有发展出一个活跃且气氛良好的社区?我认为我自己负有很大的责任。我曾希望更多的开发者能够加入 TUIC 的开发,但我没有认真考虑过,贡献者能从中得到什么。作为 TUIC 的“作者”,我主导了所有的设计和开发工作。哪些建议被采纳,哪些 PR 被拒绝,往往都是根据我的个人喜好来决定的。更糟糕的是,我经常很久才回复它们。

在这种情况下,新贡献者能够获得什么呢?他们几乎无法得到物质上的回报,因为他们难以做出大量的代码贡献,也就无法把“我是 TUIC 的维护者之一”写进简历,从而获得更好的工作机会。情感上的回报也很有限:即便经过艰难的沟通,贡献被接受,他们的小改动也很难引起他人的关注和认可。

人类的理性行为,归根结底是对物质价值和情感价值的交换。物质价值容易量化,而如果我们能够量化情感价值,就能更好地理解所有理性行为的根本动机:追求最大化的物质和情感回报。开源项目的维护当然也不例外。

我的第一份工作也是在很大程度上靠着 TUIC 的星星数拿到的。尽管我没有从中获得直接的捐赠或盈利,TUIC 也为我带来了很多机会。我希望更多的开发者能够获得类似的机会。许多优秀的开发者缺少的,仅仅是一个能展示自己的平台,我希望 TUIC 能成为这样的平台。

另外,TUIC 作为代理协议的潜力依然巨大。作为最早实现 0-RTT 的代理协议之一,同时保持极简设计,我相信在此基础上,未来能够更容易地进行修改,使其适应更加复杂的网络环境。

那么,如何才能实现这样的目标呢?我认为最关键的一点是让 TUIC 的维护不再是一个人的“独裁”。更多人的声音应该被听到,更多人的贡献应该被接受。我不再是 TUIC 的“唯一作者”,而是众多贡献者中的一员。

具体来说,我计划采取下面的措施:

  1. 将项目仓库转移到组织 TUIC Protocol,使其不再是个人项目。
  2. 标准化协议,规范化协议细节,确保同一协议版本内不需要对已有实现做任何修改。
  3. 删除仓库内的协议实现,只保留协议规范和文档,集中精力在协议本身的改进上。既然已经有更加专业的人实现了协议,我们就没有必要重复这个工作。
  4. 将用户引流到各个实现,让更多人的作品被看到和认可。
  5. 规范化贡献流程,所有修改需先经过公开讨论,充分收集社区的意见,再共同做决策。

我记得有人担心 TUIC 会“硬分叉”。我认为这样的担忧是多余的。作为一个开源项目,如果它能够激发更多人做出更好的作品,那它的价值就已经实现了。竞争者的出现不一定是坏事,它能让我们看到更多的可能性,启发彼此,相互贡献,让整个领域更加繁荣。

TUIC 不再有所谓“官方”的实现,这个想法可能让人觉得奇怪,但我相信这样做的利远大于弊。之前的经验告诉我们,作为一个定义协议的项目,如果大家的注意力集中在某个具体实现上,很多精力就会被浪费。我们应该将重心放在协议本身的维护和优化上。

我不知道这些改变是否会成功,但我更不希望继续维持现状,让更多人失去机会。我希望 TUIC 能成为一个更加开放、更加活跃的社区,让更多人从中获得价值。