凌晨三点我在公司机房删了半行代码,才懂开源软件不是免费白嫖的玩具

上周三凌晨两点四十,我蹲在公司机房的折叠椅上,键盘敲得指尖发麻。屏幕上跳出来的报错红得晃眼——不是我们自研的系统崩了,是上周刚替换上去的那个开源组件,作者把仓库删了。

深夜机房运维人员盯着满是报错的服务器屏幕
深夜机房运维人员盯着满是报错的服务器屏幕

键盘敲得指尖都僵了,翻遍了本地的备份目录才找到半段去年留存的代码版本。找资料的时候顺藤摸瓜摸到作者的社交账号,才知道这是个在德国读博的学生,当初写这个组件就是为了自己做毕设省点事,顺手传去GitHub了,结果被我们这种大小公司薅了快三年,连个像样的star都没人点,他毕业要换研究方向,直接把仓库设成私有了。

那时候盯着屏幕上的半段代码,指尖突然凉了。以前总觉得开源软件是天上掉下来的免费午餐,那天才反应过来,这餐说不定是人家在自家厨房熬了几个晚上做出来,连个餐盒钱都没要的。

你天天用的产品,背后可能连个“正式维护人”都没有

很多人对开源的印象,是大厂牵头砸钱做的技术项目,有专门的团队轮班维护,稳得像银行的金库。真不是。

我后来粗略统计过手里项目用到的开源组件,差不多三分之一的核心维护者,根本没有专门的公司给他们发工资。可能是在读的研究生,可能是下班了想摸鱼的程序员,可能是退休了没事干的老工程师。没有KPI,没有考核,全靠一股“我踩过的坑,不想让后来的人再摔一遍”的劲撑着。

就像那个大家常用的图片压缩工具,最早就是个大学生为了给自己的个人网站传图快一点写的,现在被全球几百个电商平台嵌在上传功能里用着,他现在还是每个周末抽两个小时改bug,从来没拿过一分钱。很多公司用的时候,连个页面底部的致谢链接都懒得放,好像这东西本来就该在服务器上等着人拿一样。

那个德国学生后来在账号里写,当初传代码的时候根本没想过会有这么多人用,就是觉得自己花了一周调通的参数,别人不用再重新试错。结果用的人多了,隔三差五就有人提离谱的需求,要他加这个功能改那个逻辑,好像他拿了钱就得24小时待命一样。他本来读博的项目就压得人喘不过气,索性把仓库关了,省得闹心。

所谓开源,从来不是“无限制免费使用”的代名词

这里就得说个很多人踩过的大坑。开源协议从来不是“无限制使用许可”,是作者和所有使用者之间的一份默认契约。你拿代码之前,总得先看看人家写的规则吧?有的协议说你可以随便改随便用,哪怕拿去做闭源的商业产品卖钱也行,只要保留原作者的署名;有的协议说你要是改了我的代码,就得把你改的部分也公开给所有人用;还有的协议明确说,不能用这个代码做任何跟军事相关的项目。

开源软件不同类型协议的条款对比便签
开源软件不同类型协议的条款对比便签

我之前碰到过一个做电商的客户,他们网站上的图片上传功能,直接抄了一个开源组件的代码,连原作者的版权声明都删了,结果被原作者找上门,要他们赔六万块钱。客户还委屈,说“不是开源的吗怎么还要钱”。真的,这种话我听一次笑一次——人家把代码写出来给你用,没跟你收授权费已经够意思了,你连基本的尊重都做不到,换你你能不生气?

说实话我刚入行的时候也犯过傻。那时候做个内部用的小工具,为了省时间直接把网上找的开源代码拷进来,连作者的名字都没留。现在想想真的臊得慌。你花几个晚上熬出来的东西,被人随便拿过去改个logo就当自己的卖,你心里能舒服?

那些你以为的“硬核技术壁垒”,一半是靠开源软件搭起来的

很多人对技术公司的想象,是一群穿格子衫的工程师在密闭办公室里从零开始写代码,搞出来别人都做不出来的核心技术。真不是。

你现在刷的短视频平台,底层跑的数据库是开源的;你点外卖用的定位服务,地图渲染的核心引擎是开源的;甚至你现在用来写文档、做表格的软件,核心的排版逻辑,也是从开源项目里改出来的。说个大家都能查到的事,现在用的Chrome浏览器,最早的内核就是Google拿了WebKit的开源代码改的,后来他们把自己修改的部分重新开源,才有了现在满世界都是的基于Chromium内核的浏览器。哪有那么多从零开始的“神话”啊,所有的技术进步,本质上都是站在前人的肩膀上,多往前走了一步而已。

开源项目贡献者在社区讨论代码修改细节的线上会议截图
开源项目贡献者在社区讨论代码修改细节的线上会议截图

我之前跟一个做云服务的朋友吃饭,他说他们公司每年花在开源项目上的钱有小几百万——不是买授权,是直接给那些核心维护者发赞助,给跑在基础设施上的开源组件捐钱。我当时还笑他,说你直接用代码不就行了,为啥要花这个冤枉钱。他翻了个白眼说,要是哪天写这个组件的人不想更了,把仓库删了,我们整个平台的服务都得停,那时候赔给客户的钱,是这点赞助费的一万倍都不止。

哦对,还要提个大家常有的误解,很多人觉得开源软件稳定性差,不如花钱买的商业软件靠谱。我之前做项目对比过,同样是做日志收集的工具,买的某商业版一年的授权费几十万,结果遇到个大流量的场景直接内存溢出,找客服排障等了三天都没给个准信;后来换了个开源的同类型工具,去对应的社区发了个帖子,当天晚上就有个在硅谷做运维的工程师回了我,说这个问题他上周刚遇到,是参数配置不对,直接把改好的配置文件贴给我了,五分钟就解决了。你说哪个更靠谱?

前几天有个刚入行的小朋友找我,说他想给开源项目贡献代码,怕自己写的太烂被人笑话。我跟他说,我第一次给开源项目提PR的时候,改的就是文档里的一个错别字,维护这个项目的大叔特意在评论区@我,说“谢谢你帮我揪出这个藏了半年的错字”。哪有什么笑话不笑话的,开源社区最不欢迎的,就是那种只伸手拿,连个反馈都不愿意给的人。

去年有个挺火的事,有个开源的npm包,作者被太多公司白嫖搞烦了,直接在代码里加了个逻辑,只要检测到是没给过赞助的商业用户用,就直接把他们服务器上的测试文件删了。当时网上一堆人骂作者极端,我倒觉得没啥好骂的。你天天用人家的东西,连个招呼都不打,人家想收回的时候,你倒跳出来说人家不讲规矩。说穿了,这就是单方面的道德绑架而已。

上周我给那个德国读博的学生的账号转了五百块的赞助,附了个留言,说“上次你删仓库害得我在机房蹲了三个小时,这点钱算赔罪,代码我已经备份了,你要是以后想更了随时回来”。过了两天他回我了,说他现在在准备新的研究项目,打算过段时间把之前的仓库重新放出来,还说他从来没想过,远在国内的公司,会真的因为用了他写的代码给他转钱。

你看。开源这东西,从来不是什么高大上的技术概念。

就是一群人,把自己攒的小玩意儿拿出来,大家一起改,一起用,省得每个人都要从零开始踩一遍一样的坑。

哪有什么免费的午餐啊。

所有你能随便拿到的东西,背后都藏着别人熬了无数个夜晚的付出。

就这么简单。

作者|科技

排版|科技

审核|安然

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:凌晨三点我在公司机房删了半行代码,才懂开源软件不是免费白嫖的玩具
文章链接:https://www.lfdjt.com/p/keji/a/14206.html