许可证切换中我学到的事
原文由 Salvatore Sanfilippo 于 发布,订阅该博客
昨天是非常 intense 的一天。5月1日在意大利是劳动节,所以早上我和朋友们去埃特纳火山徒步了4个小时 <3,我很喜欢走路,写代码时也经常会停下来去走一走,再回到键盘前,腿上就又多了几公里的路程,而在埃特纳火山徒步真的非常棒(埃特纳火山是欧洲最大的活火山,而我恰好就住在它山脚下的卡塔尼亚)。
然后下午6点我回到家,发布了关于切换到 AGPL 许可证的博文,接着开始关注各方的评论、反馈和私信,在这个过程中我学到了几件事。
1. 抛开那几条在我看来确实会带来差别的条款不谈,AGPL 和 SSPL 最主要的区别在于 AGPL 是“被理解的”。总的来说,昨天我第一次意识到,许可证的问题不仅仅在于你能做什么、不能做什么,还在于一个许可证被理解、被检验、被采用的程度……
2. Simon Willison 就此事所说的话让我很受触动(https://simonwillison.net/2025/May/1/redis-is-open-source-again/),很奇妙的是,生活在世界不同角落、却有着相似年龄和软件背景的人,对事情的感受竟然会如此相似。我在写 Vector Sets 的时候也在想:如果它不是以 AGPL(或我能理解的其他开源许可证)发布,我自己根本不会去用它。只要社区中有一小部分人也有同样的感受,开源最终就会在如今复杂的软件格局中胜出。
3. 大家依然非常在意软件发行版。不是说我不在意,只不过我过去在这上面吃过亏。我算是很早的一批 Linux 用户,用的还是 SlackWare 3.1 之类的版本。这些年来我写过设备驱动,给内核贡献过一些补丁,Debian 仓库里也曾有过大概十来个我写的软件包,从 hping、Visitors 网站日志分析工具、dump1090、Redis,还有其他几个。但慢慢地,我开始看到各种碎片化、某些流程的僵化(比如 Linux 内核模块的二进制兼容性)、缺乏一致的设计、缺乏把所有依赖都打包在一起的二进制软件分发格式,等等。后来我在桌面端转用了 MacOS,在服务器上则以一种非常务实的方式继续使用 Linux,很多时候我甚至更乐意直接去执行“tar xvzf software.tgz; make”,而不是依赖发行版提供的东西。也许,我对零依赖交付软件的执着也与此有关。但大家依然非常在意发行版,或许在许多希望一切尽可能自动化、可复现的场景下,让 Redis 以发行版软件包的形式存在确实很重要?现在已经有不少人在问,Redis 是否会重新进入各大发行版。
我的看法很简单:Redis 和 ValKey 其实已经有了不小的分化,未来分化还会更大。我认为发行版应该同时提供两者,让用户有选择的余地,而在某些情况下,这种选择是由功能差异决定的。说得直白一点:如果你需要做向量相似性搜索,就得用 Redis;但如果你们公司有禁止使用 AGPL 的规定,那就得用 ValKey,以此类推。
4. 大家对我很友善。评论区里也有一些尖锐的声音,这很正常,甚至是健康的(毕竟这也是许多公司越来越认为自己不能使用 SSPL 或其他许可证、而必须使用 OSI 认可的许可证的原因之一)。但在直接对我个人的时候,我看到的都是很多温暖的话。我只想说:谢谢大家。
5. 我们或多或少都活在自己的小圈子里。在某个论坛里,有人突然问道:“你真的从 Redis 切换到过某个分支吗?”,下面跟着一串回复:“从来没有”、“只要能用谁在乎”之类的。这话对 ValKey 也同样成立——如果有人输入 apt-get install redis,结果装的是 ValKey,而他们只是用用 SET、GET、DEL 等几个命令,他们根本不会在意。我想说的是,软件已经不再是 1998 年(对开源、互联网和我个人而言都至关重要且极具象征意义的一年)时的样子了,那时我们都是开源许可证专家。而现在的大多数人,尤其是新一代,有着更务实、更实际的看法。所以,这一切都非常重要(对我而言至关重要),但也要明白,并非所有人的感受都是一样的。归根结底,最重要的还是努力做出好的软件。
随机一篇博客
评论
登录后参与讨论