我在凌晨三点改的那行代码,靠开源软件救了整个项目

上周三赶项目上线。

离客户验收只剩四个小时。

我写了大半年的表格导出功能,突然崩了。

10万行的测试数据导到一半,电脑风扇转得像要把桌板掀起来,屏幕上跳出来一行刺眼的报错——”内存溢出,程序直接退出”。

冷汗顺着后颈往下流。

我当时满脑子都是之前跟客户拍着胸脯说的”绝对稳定”,现在要是临时重写导出逻辑,别说四个小时,四十个小时都未必能写得没有bug。

指尖在键盘上乱敲的时候,突然想起之前存在收藏夹里的那个开源的表格导出工具。

拉代码,拉依赖,改两行内存阈值。

半小时搞定。

那天我抱着冰可乐在工位上坐了十分钟,才反应过来——楼下巷口的鸭血粉丝汤店刚支起摊子,热气顺着楼道飘上来,要是没有这个陌生人写的、免费给所有人用的开源工具,我那天大概率要在客户的会议室里社死。

你每天用的东西里,藏着多少没见过的开源代码

你每天用的东西里,藏着多少没见过的开源代码
你每天用的东西里,藏着多少没见过的开源代码

很多人对开源软件的印象还停留在”程序员圈子里的极客玩具”,跟普通人的日常八竿子打不着。

真不是。

你早上刷短视频时,背后负责解码视频流的组件,跑的是开源的FFmpeg代码;你家路由器能同时连十几台设备不卡,底层跑的可能是基于OpenWrt的开源固件;甚至你现在正在用的浏览器,不管是哪个牌子,底层都有开源的Chromium项目的影子。

这些东西没有贴”开源”的标签,你甚至从来没注意过它们的存在,但它们就像埋在地下的管道,撑着你每天用的几乎所有数字服务。

凌晨三点程序员对着电脑调试开源导出工具的工位
凌晨三点程序员对着电脑调试开源导出工具的工位

我之前帮我妈弄她的老年机,发现她手机上那个能把微信聊天记录导成PDF的小工具,也是个开源项目。作者是个在日本读书的中国留学生,因为自己奶奶不会导聊天记录,就写了这个工具,免费放出来给所有人用,没有广告,没有弹窗,甚至连打赏二维码都没放。我妈现在逢人就夸这个软件好用,她根本不知道写这个东西的人是谁,也不知道什么叫开源。

别被”免费拿”的说法骗了,开源不是白给的午餐

我见过太多人对开源的误解了。

觉得开源就是”免费、随便抄、出问题没人管”。

大错特错。

开源的核心从来不是”零成本”,是把软件的内部构造完完整整摊开给你看。你想改哪里就改哪里,想加什么功能就加什么功能,甚至你改完觉得好用,还能把自己改的部分传回去,让所有用这个软件的人都能享受到你的改动。

但天下没有白吃的午餐。

每个开源项目都有自己的使用规则,也就是大家常说的许可证。有的许可证很宽松,你拿过去商用、改代码、闭源卖钱都没人管;有的许可证很严格,只要你用了它的代码,你自己改完的所有相关代码,都必须公开给所有人。

开源软件GPL许可证与MIT许可证条款对比示意图
开源软件GPL许可证与MIT许可证条款对比示意图

之前有个做本地生活的朋友,图省事拿了个开源的到店核销系统改吧改吧就上线,跑了大半年赚了小一百万,突然收到原作者的律师函——他用的项目是GPL协议,要求所有基于它修改的衍生代码必须开源,他藏着掖着不公开,最后赔了十几万才了事。

说实话,我特别能理解原作者的较真。

人家挤着下班的时间写代码,免费给所有人用,不是让某些人直接拿过去换个皮就赚得盆满钵满,连个招呼都不打的。

我自己给开源项目提bug的时候也遇过脾气直的作者。去年我给一个开源的markdown编辑器提问题,说Windows系统下打开200MB的大文件会卡三分钟,作者当天就回我,说”我上周刚改了这个性能问题,你都不看更新日志的吗?去下最新版再试,别拿三年前的老版本来浪费我时间”。

给我整得脸都红了。

但换作闭源软件呢?你提个bug,客服可能走流程给你回个”我们已记录您的问题,后续版本会优化”,然后就没下文了。

那些没人维护的开源项目,藏着整个互联网的暗礁

那些没人维护的开源项目,藏着整个互联网的暗礁
那些没人维护的开源项目,藏着整个互联网的暗礁

2016年的时候出过一件很离谱的事。

有个程序员写了个只有十几行代码的小工具,作用就是给代码里的字符串左边补空格,方便排版。这个小工具被全球几万个前端项目依赖,结果那天作者跟平台闹了点矛盾,直接把自己写的所有开源包都从仓库删了。

短短两个小时里,全球几万个网站直接崩了。

当时整个前端圈都炸了。

谁能想到,整个互联网的上层建筑,居然是靠一个二十行代码的小工具撑着的。

GitHub平台上标注已归档不再维护的开源项目仓库页面
GitHub平台上标注已归档不再维护的开源项目仓库页面

现在这种事其实每天都在发生。

很多开源项目都是一两个爱好者挤着周末、熬夜的时间写的,没有工资,没有赞助,全靠一股喜欢的劲撑着。哪天人家工作忙了,或者突然觉得没意思了,或者要去环游世界了,把仓库一关,后面靠这个项目吃饭的几百家公司,瞬间就慌了。

去年我帮朋友排查项目安全问题,发现他的系统里用了个2019年就没更新的开源加密库。他还嫌我多事,说”用了这么多年都没出事,换什么换,多麻烦”。

我没跟他争。

万一哪天爆出个安全漏洞,他存的几十万用户的手机号、地址全漏了,那点”麻烦”,根本不够赔的。

我电脑上现在装的软件,一半以上是开源的。

压缩文件用7-Zip,剪短的视频用Shotcut,记笔记用Logseq,甚至连我现在用来写这篇文章的输入法,都是开源的。没有弹窗广告,不会偷偷弹窗口让你开会员,也不会在后台偷偷读你的文件。

之前有个读者问我,说”我又不会写代码,开源软件跟我有啥关系?”

关系大了。

你要是不想被那些满是广告的免费软件坑,不想刚装个软件就被捆绑三个杀毒助手,开源软件真的是你能找到的最靠谱的选择。你甚至可以给你常用的开源项目打个五块十块的赞助,作者可能会记你好久,下次你提个小建议,人家说不定直接就给你加上了。

上次我给那个markdown编辑器的作者打了二十块钱,备注说”上次拿老版本提bug对不起”,他给我回了个红包,说”下次记得看更新日志,就当请你喝南京巷口的冰粉”。

你看。

哪有什么神神秘秘的技术圈子。

大家都是普通人,凑在一起写点好用的东西,给所有人用而已。

作者|科技

排版|科技

审核|满满

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:我在凌晨三点改的那行代码,靠开源软件救了整个项目
文章链接:https://www.lfdjt.com/p/keji/a/13475.html