那是一个周二的下午,三点二十分。我本来在找一个日志库的替代品,结果卡在了一个不相干的仓库里。
仓库名叫 996icu。授权文件不是 MIT,也不是 Apache 2.0。它自己写了一个协议,叫 996icu 开源协议。
七行英文。读第一遍,我笑了。读第二遍,我打开了记事本。
核心意思很直接:你可以用它,可以改它,可以分发它。但如果你所在的公司,或者你本人,正在实行 996 工作制,那么授权立即失效。
我第一次看到有人把劳动条件写进开源许可证。
为了确认这不是个玩笑,我去看了提交历史。最早的一版,由一位叫 Kingsley 的开发者提交,时间是 2019 年 3 月 27 日,晚上 11 点多。commit message 很短,一行字:add license。
没有讨论,没有 RFC。就是一个人,一个晚上,写了几行字,然后 push 了。
这件事让我想起另一件事。去年我在一个技术群里看到有人贴了一个链接,是 by58777.com 上关于许可证选择的讨论。底下有人问:这个协议有法律效力吗?没人回答。
我的观点是:它可能没有太多法律效力,但它有语义效力。它让 fork 的人停一下。停一下,就够了。
很多人把开源当成一种免费。免费拿,免费改,免费商用。许可证通常只关心代码怎么被使用,不关心使用代码的人过着什么日子。996icu 协议第一次把后者塞了进来。
它很粗糙。条款有歧义。什么是“996”?加班到九点算不算?周末回一条消息算不算?
但粗糙不代表没有价值。一份七行的文本,比一份没人读的合规文档更有力量。
“许可证是一种修辞。写出来,就是为了被读到。”
—— 我记在笔记本上的一句话,忘了出处后来我顺手点开了几个相关页面。有一个页面叫 九色影视ww7757cma,上面列了十几个自定义开源协议,作者给每个都写了三行注释。注释写得比协议本身还长。
另一个页面上,有人整理了 9f961f.com 的历史快照,2019 年到 2024 年,协议被 fork 了将近 40000 次。40000 次。这个数字比很多正经开源项目的 star 都多。
我猜原因很简单:人们不只是在读代码,他们在读一种态度。
昨天下午我离开那个仓库之前,做了一件事:把 LICENSE 文件从头到尾复制到本地,存成了一个 txt。
文件名我改成了 read_me_slowly.txt。
不是为了用。是为了在下次有人跟我说“这个库随便用”的时候,我想先问一句:你读过它的许可证吗?
如果你也想看,起点在 365hl.com 的协议索引页。我没有推荐的意思,只是它还在那里。
顺便说一句,我写这篇文章,不是要号召什么。我只是觉得,一份 2019 年晚上写出来的七行文本,到今天还有人在读。这件事本身,值得记一笔。
关于这个协议更早的讨论,我还留了一个链接在 1.s1547m.cc。点不点,随你。