上周三凌晨两点,公司的订单系统突然崩了。
运维小哥抱着笔记本蹲在机房角落,敲了三行命令,把出问题的支付回调组件替换成了开源社区的版本,前后花了十二分钟,系统就恢复正常了。他合上电脑就下楼,买了两根烤肠,一瓶冰可乐,跟我说“这点事,闭源软件厂商的工程师还在睡觉呢,哪有开源的改得快”。
那些躲在你手机和电脑里的“隐形基建”
很多人对开源软件的印象,还停留在程序员圈子里的极客玩具,觉得那是离普通人生活很远的东西。
根本不是。
你手里的安卓手机,最核心的内核来自开源的Linux项目;你用微信发图片,背后的图片压缩组件是开源社区写的;你刷短视频时看到的流畅播放,用到的视频解码框架,最早也是一群开源开发者花了好几年打磨出来的;甚至你点外卖时,系统给你算的配送路线,用到的路径规划算法,不少也是基于开源的地图组件改的。

你想想,你花几千块买手机,每个月交话费,给APP充会员买皮肤,支撑这一整套顺畅体验的最底层代码,有一半以上从来没拿过商业授权费。
离谱吗?
很多人第一次知道这件事的时候都会皱眉头,觉得这不符合商业世界的基本逻辑——大家做东西不都是为了卖钱吗,怎么会有人辛辛苦苦写了几千行代码,连个版权费都不收,就让全世界随便用?
没人给发工资,为什么还有人愿意写代码?
之前我在杭州认识一个做电商的程序员,平时下班之后总爱鼓捣点小工具。最开始他做店铺的时候,需要批量导出各个平台的用户评价,找了市面上所有的付费软件,要么功能不对,要么一年的服务费贵到离谱,他就自己花了两个周末写了个脚本。写完之后他觉得,总不能只有自己用得上吧,就把代码扔到了开源社区。
现在那个项目已经有两千多个星标了,每天都有不同的商家给他提意见:“能不能加个导出成Excel的功能”“能不能适配一下最新的抖音小店后台”。他就跟着改,有时候改到凌晨一两点,也没靠这个赚过一分钱。
他之前跟我吐槽,说最开始有人给他发私信,说要花200块买他的终身更新版,他直接给人甩了个开源仓库的链接,说完全免费,自己去下,给对方整得半天没回过神。

其实很多人对开源开发者的动机有误解,觉得大家都是抱着“为全人类做贡献”的崇高理想在写代码。真不是。最开始的出发点往往特别自私——就是我自己遇到了个麻烦,我花时间把这个麻烦解决了,顺便把解法公开而已。
这种模式最爽的地方在于,你把自己写的小工具扔到网上,全世界的人都帮你找bug,帮你提改进意见,最后打磨出来的东西,比你自己闷头写半年的版本好用十倍。这种爽感,其实比赚那几百块的软件费强多了。
真的。
我之前见过一个做开源日志组件的作者,他说最开始写这个工具,就是因为之前在公司踩过坑,系统出故障的时候翻日志翻到眼睛快瞎,花了三个月写的工具,现在已经被几百家公司用在生产环境里了。他说每次在社区看到有人留言说“这个工具帮我凌晨三点快速定位了故障,少扣了两千块绩效”,那种满足感,比拿多少年终奖都实在。
别把开源软件想得太“完美无缺”
当然,我也不是要把开源软件吹成什么完美的神话。
开源软件从来不是什么天上掉下来的免费午餐。
前几年闹得很大的开源组件事件,某个维护了好几年的开源项目作者,因为被公司裁员心情不好,直接把自己写的代码从仓库里全删了,结果全球几十万家用到这个组件的公司,系统直接崩了。因为大家都默认这个开源项目会永远存在,从来没想过,写代码的人哪天不想玩了,会直接把项目撤走。
现在想想都后怕。
本质上,开源社区的模式就像一群人凑在公共空地上搭积木楼——大家都可以随便拿积木盖自己的小房子,但是没人给这栋公共楼交物业费,没人定期检查墙体会不会开裂,哪天哪个搭积木的人把自己拼的那块积木抽走,整栋楼可能就塌一半。
现在很多大公司其实也在补这个窟窿。谷歌、微软,还有国内的互联网厂商,都会专门派全职工程师去给关键的开源项目当维护者,不是为了做慈善,是因为他们自己的系统也跑在这些开源组件上,真要是塌了,赔的钱比给工程师发的工资多得多。
不过话说回来,这种公共积木的模式,其实比过去那种闭源软件的模式灵活太多了。过去你用一个闭源的商业软件,发现有bug,得给客服发工单,等半个月,人家工程师排期排到了才给你改。但是开源软件你自己就能上手改,改完了扔回社区,所有人都能用。
上周我去南京出差,在新街口的一家咖啡馆里,碰到个刚毕业的小男孩,抱着电脑在改一个开源的翻译插件。他说之前用别的翻译软件,弹出的广告比翻译的内容还多,就自己写了个没有广告的版本,现在已经有一万多个人在用了。
他说他也没想过靠这个赚钱,就是觉得,自己写的东西,真的能帮到别人,那种感觉,挺酷的。
挺酷的。
作者|科技
排版|科技
审核|柚子