TUIC 终究又是一个失败的开源项目,至少现在看来如此。一方面是社区上的失败,另一方面是我个人的失败。
开源项目到底是什么
究其根本,一个没有商业化的开源项目,本质上就是开发者的技术热情。换句话讲,这样的开源项目就是其开发者荷尔蒙在成果上的体现。
人类的本性永远是自私的。为什么我们会将自己辛苦思考并创作的结果,不求任何回报地分享给他人?
- 对技术的热爱
- 分享欲
- 成就感
- “我要让世界变得更好”
- 捐赠收入
可惜,这些都不足以支撑一个开源项目长期发展。
我为什么要开发且开源 TUIC
在我脑中出现这个想法,以及开发的早期,我觉得我的动力主要来源于技术热情。基于这方面的热情,我完成了 TUIC 最初的几个版本,主要是自己使用。后来,由于我的分享欲,这个项目被发布了出去,并且稍微做了一些宣传。开源文化类似一种宗教,我长期被开源文化影响,因此从最开始就没有想过以开源以外的方式发布。没想到这个项目的热度很高,大量 star 与用户反馈让我意识到这个项目可能真的能解决一些人的问题,此时成就感与一些所谓的“责任感”开始出现了,这些是我在发布后一段时间继续维护这个项目的主要动力。
但是,激素的作用永远是短暂的。当荷尔蒙褪去,留给我们的最终会是什么呢?
开源软件的作者也是普通人
我们开源了自己的项目,但并不意味着我们有继续维护它的义务。开源软件并非是一个个独立的实体,其背后的开发者们也是普通人,我们也有自己的工作与生活。我们不依靠这些软件获取经济利益,维护这些软件还给我们增加了很多负担。拿 TUIC 来说,维护这样一个软件甚至会给我带来了人身安全的威胁。
令人沮丧的社区
社区存在的意义
我们将源码贡献给社区,并非是想要让社区“监督”我们继续开发,而是希望有更多人参与进来,共同改进项目。
这一点其实 TUIC 的社区之前已经在一定程度上做到了这点。不少开发者参与到了这个项目的开发中,提出了一些很好的建议,贡献了一些很有用的修改,虽然其中一些由于我对这个项目的定位看法,以及由于后期不再有维护的动力,而没有被接纳。这里特别要感谢 Clash.Meta 与 sing-box 的维护者们,他们重新实现了 TUIC 的协议,使得社区有了更多的选择与竞争,这些不论对用户还是对项目本身都有好处,也符合我一直以来的定位:我深知自己能力不足,因此我只做最基本的协议设计与最小化的实现,希望将剩下的留给更加有经验并且有完善基础设施的人。
社区气氛
- 你不看文档不看 issue,留下一句“怎么不能用,什么垃圾软件”
- 你扫了一眼不知从哪里找来的所谓项目介绍,留下一句“就这?这不就是 XXX 吗?”
- 你提了一大堆功能需求,过了一段时间没看到你提的需求被实现,留下一句“怎么还没实现?这个软件太垃圾了”
- 你不知怎么遇到的 bug,不附带 log、config、复现步骤就提了一个 issue,过了一段时间没有被解决,留下一句“这作者脾气大还没有责任心,根本不管项目”
- 你提了一个 issue,过了一段时间没看到回复,留下一句“这个软件太垃圾了,根本没人维护”
在你们眼里,留下一句话只需要动动手指敲敲键盘,不论发些什么,对你们都不会有什么损失。但是,开源项目的开发者们凭什么要帮你们解决这些问题?任何软件都会存在问题,更何况一个不靠利益运作、纯粹靠兴趣驱动的项目?
我们靠着热情开始并维护着这些项目,而热情是有限的,你们却在无时无刻消耗着这些热情。
现在的互联网,特别是简体中文网络上,人们连最基本的心平气和、温文尔雅的交流都做不到,更不要说换位思考的能力了。我不建立所谓的“用户群租”就是因为我深知,由庞大的、层次参差不齐的用户群组成的社区,一定是硝烟弥漫的。我所接触到的所谓的“代理娱乐圈”,就连开发者之间也无法做到相互尊重,心平气和地交流,更何况是用户呢?不明原理就把某些东西捧上天或骂到一文不值,这种行为太常见了。
我并不是说其它“圈子”就没有这种情况,也不是只有简体中文用户会做这种事,只是目前简体中文互联网的风气如此,并且很遗憾这个项目的主要受众就是简体中文用户,所以我才会有这样的感受。
这点我在很久之前就考虑到过。我希望以“提高门槛”的方式来减少这些问题的发生。项目文档用英文书写,配置尽可能暴露底层技术细节,这些都是为了避免让那些层次不足的人接触到这个项目。我最早的想法是这个项目的使用仅限于懂技术的人之间,所以除了发布时发过一篇文章,我再没有自己宣传过这个项目。然而没过多久各种一键脚本就开始满天飞,不只是 issue 中,连我的个人社交平台私信了都充斥着各种莫名其妙的问题:
也有些人开始用 TUIC 来盈利,直接方式与间接方式都有。当然,我完全不反感我的开源项目被用于盈利,毕竟是开源。但问题是,某些人在根本不懂技术原理的情况下就开始误导他人,这是我不能接受的。
或许这也是我自己的问题吧,我对大众的期望太高了。
我原本的期待与计划
在这两年的时间里,我看着这个项目慢慢变大,社区慢慢成熟。关于这个项目未来如何发展我想过很多。这个项目过多地被关联在中国网民的特殊需求上。我最初就意识到这个项目的开发是有很大风险的,因此我希望慢慢将重心从“实现”转移到“理论”上来,让协议更加泛化,而不是只被中国或伊朗网民拿去用。
我一直都认为精简就是美。我从项目初期就提到过很多次,我知道我的能力不足,就算我实现一个大而全、包含所有功能的程序,大概率也会烂到无法使用,况且我的时间与精力也难以支撑我开发这样庞大的工程。市面上有那么多实现良好的替代,为什么一定要我来做,而不是让更有经验的人来做呢?然而自始至终,不论我在 README 中写得多清楚,在 issue 中提过多少次,永远有源源不断的人来要求增加与协议核心无关的内容。
我本打算按照原本的计划继续改进这个项目,可惜我现在既没有动力,也没有能力了。
是我自身的问题导致了项目的失败
- 我对大众的期望过高,没有做好心理准备迎接各种各样的奇怪理论
- 我的能力不足,无法做到既有良好的设计,又有良好的实现
- 我“精简就是美”的理念与大众不符
- 我的时间与精力不足,没法做到某些大佬不吃不喝做开发的水平
- 我人在国内,无法承担继续开发的风险
- 我不需要你们的捐赠,也没有胆量去商业化这个项目,也就没有更多动力维护
可能很多人认为开源项目和项目作者可以划等号?
我也有自己的生活与工作,我也在各种破事中挣扎,我为什么要为了一个个素不相识的人牺牲自己?
从这个项目的最开始,我就没有建立过任何用户群组,没有同意任何人与我的合作邀请,也没有接受过任何捐赠。我不需要你们的钱,我早就能将自己养活得很好了。这个项目完全是我兴趣与热情的体现,换句话讲就是荷尔蒙的作用。一直以来我都尽量保持最大程度的低调,就是为了不让这个项目影响我的生活。
因此,这个项目的失败大概是必然的吧。
可笑的网民,可悲的开发者
最近几天,clash for windows 停止了更新,clash core 的仓库也被作者删除了。这种事之前也发生过,但这次的后续真得既可笑又可悲。
Clash 倒下后,不知网民们出于何种想法,将这件事的热度扩散到了微博上,甚至达到了微博热搜。你们真的有考虑过开发者吗?这件事的影响已远远超过了可控范围,有多少双眼睛在盯着微博热搜?其中又有多少不怀好意呢?
大多数网名大概都是以吃瓜的角度在看这件事。没有人真的在为开发者着想,这真的非常可悲。你们如何证明 clash 作者以外的开源代理开发者们没有因为此次事件被特殊关注,人身安全受到威胁呢?
我还是将大众想得太善良了。中国人的本性就是喜欢看别人的悲剧,除非火烧到自己,否则根本不会有觉悟。我觉得我不值得将自己的任何精力贡献给这样的群体,更何况我的人身安全也受到威胁。
我特别反感人们将开源开发者停止开发叫做“跑路”。我觉得这是一个偏贬义的词,本来有责任的人突然消失了才是“跑路”,而不是不求回报的开源开发者们。我不知道现在简体中文互联网用户的中文水平为何如此可笑。
就在刚刚,我又看到了一张非常可笑的图片:
这里是知乎吗?与世界分享你刚编的故事?
这也又一次印证了我的观点:就算你抱着再善良的心为大家不求回报地贡献,现在的环境只会让你失望透顶。
有缘再见
我的想法大致就是这样了。TUIC 停止更新是因为,这个项目在无时无刻为我带来压力、内耗与安全隐患,并且我现在觉得这个项目的受众群体不值得我为之付出。
希望某天我能在什么地方无忧无虑地写任何我想写的代码,而不是为了应付各种各样的问题而烦恼。或许当我再次燃起热情时还会回来。但是现在,我们有缘再见吧。