开发了世界上最流行的软件,开源太可怕了

简介: 开发了世界上最流行的软件,开源太可怕了

瑞典程序员丹尼尔花了28年时间,开发了世界上最流行的软件:cURL。

cURL提供了一个库(liburl)和一个命令行工具,让大家可以轻松地来传输数据。

它支持几乎所有的传输协议,除了最知名的HTTP、HTTPS之外,还支持 FTP, FTPS, Gopher IMAP, Kerberos, LDAP, MQTT, POP3, RTSP,  SCP, SMTP, SMB。

可以说,在数据传输领域,只有你想不到,没有它做不到。

正是由于这个特点,它被广泛地安装在这些设备和软件中:

Linux、Windows、iOS、Android、MacOS 等主流操作系统。

Nintendo Switch, Xbox and Sony PS5等游戏机。

图片

几乎所有现有的物联网设备如智能厨房和医疗设备、打印机、智能手表、智能汽车。

图片

丹尼尔自己估计,curl以及liburl被安装于全球超过200亿台设备中!

图片

但是,开发了世界上最流行的软件,丹尼尔却收到了死亡威胁:

图片

这是怎么回事呢?

2024年,在FOSDEM会议上,丹尼尔讲述了cURL的发展历程,在过去的28年里,他是如何把一个不起眼的小工具,打磨成世界上最流行的软件的,中间的酸甜苦辣,投入与坚持,非常值得一看。

1从小项目开始

cURL也是从一个不知名的小项目开始的。

图片

在最早的时候,丹尼尔就是想从一个网站上自动下载汇率数据,像大家一样,他一开始先在网上找了一个开源的项目叫httpget,用得不亦乐乎。

但和大多数人不同的是,他后来成为了httpget的维护者,开始进一步扩展功能,增加了对Gopher和FTP的支持。

这时候再叫做httpget已经不合适了,丹尼尔把它改名为cURL。

1998年,软件仅有300次下载,但丹尼尔觉得这已经很酷了,因为这已经比自己的朋友数多多了!

图片

丹尼尔没有什么野心,他觉得2年有300用户,那再过20年,岂不就有3000个用户了?

(这不由得让我想起了我刚写公众号的时候,我当时想,一年内有一万粉丝就行,没想到后来一年就达到了10万。)

2坚持和努力

很少有项目能立刻取得成功,这世界上不缺开源软件,不缺好创意,市面上有成千上万的同类型软件,你有什么特殊的?成功的凭什么是你呢?

图片

当cURL获得巨大成功后,很多人问丹尼尔究竟做了什么,丹尼尔说:我投入了更多的时间。

每个人都有自己的家庭和生活,在开源软件上投入了更多时间,那势必要减少其他方面的时间。

比如丹尼尔从来不玩儿电脑游戏,他把节省的时间都花在了cURL上。

在cURL还不出名的时候,大部分时间只有丹尼尔一个人在默默地开发,如同在黑夜中独自走路一样,孤独不可避免。

图片

为了“增加人气”,他甚至假装其他用户,对自己的项目做pull request,期待有其他用户来评论,但大部分时间都无人问津,丹尼尔也只好默默合并请求,然后继续前进。

(这有点儿像早期的QQ,马化腾假扮美女陪人聊天)

开源软件开发没什么灵丹妙药,你要做的就是忍受孤独,努力工作。

3安全和责任

任何软件都有漏洞,尤其对一个安装量达到200亿次的软件来说,出现了安全漏洞可能对用户造成非常糟糕的影响。

丹尼尔说严重的漏洞出现时,他晚上都难以入睡,但是没有办法,这是属于自己的软件,自己必须承担责任。

图片

每个人都会犯错,但是如何应对这些错误是最重要的事情,丹尼尔能做的事情就是:

(1)编写可读的代码

(2)编写良好的文档

(3)进行大量的测试

(4)用各种工具进行代码分析

(5)模糊测试

(6)漏洞赏金 :用真金白银对漏洞发现者进行奖励

4人比代码更难

图片

写代码很容易,你可以随意修改,调试,换个算法重写。

但是和人打交道那真是一件极具挑战的难事儿,在开源中工作的时间越长,你遇到的挑战就越大。

林子大了,什么鸟都有。

他们会说你选择了错误的编程语言(无论哪种语言都可能是错误的),选择了错误的技术(太老太笨太烂),无法解决他们的问题(即使cURL根本不是为他的问题设计的,或者他还不了解如何有效使用cURL)。

只要有让他不满意、不同意的地方,他们就会以咄咄逼人的方式进行挑战。

为了能维护一个友好的合作氛围,丹尼尔在回复时比较小心,努力用一种平和的语气,保持友好和礼貌。

“当你回复时,做个深呼吸,如果仍然感觉不安,暂时不要回复。”

开源就是这样,只要一切正常,不会有人说一句夸奖的话。

一旦出现一个小错误,特别是比较愚蠢的Bug出现时,马上就有人疯狂抱怨。

作为一名开源项目维护者,你必须变得坚强,才能忍受相当多的批评。

绝大部分人都是使用者,而非贡献者,cURL有200亿次安装,但是只有1240名贡献者,并且很多贡献者都是修改一个注释中的拼写错误,提交以后再也不来了。

但是也有一些惊喜,一些开发者突然出现,带着一个惊人的补丁,这个补丁的背后是他对cURL架构和代码的完整而精确的理解,这实在太酷了。

5有趣/可怕的事情

丹尼尔把自己的邮件地址留到了Copyright页面:

图片

让人没有想到的是,由于cURL用途极其广泛,被用到了各种设备和软件当中,当用户在使用这些设备和软件出问题的时候,病急乱投医,翻到了cURL的 Copyright,看到了丹尼尔的邮件地址,立刻当成了救命稻草,各种奇葩的事情就发生了。

图片

图片

图片

看到这些让人苦笑不得的求救,丹尼尔也大为感慨:Cool,没想到到cURL还用在Instagram,Spotify,宝马,卡罗拉中.....

cURL如此有用,也会被黑客利用来进行攻击,一些受害者会找到cURL的踪迹,就会向无辜的丹尼尔发出威胁。

最疯狂的一次,有人竟然要杀了他:

图片

这个人被黑客攻击,丢掉了价值数百万美元的项目,把怨气撒到了丹尼尔的头上。

丹尼尔感觉到了真正的威胁,只好报警.

几个月后,这个人才意识到了自己的错误,给丹尼尔发信道歉。

6总结

丹尼尔认为自己并不是天才,他只是想开发一个互联网数据传输工具。

他在cURL上投入了大量的时间,打磨功能,建立社区,吸引用户,经常长期的努力达到了如今的成就。

图片

我们很容易想到一个问题,一个人怎么可能“辛辛苦苦”在一个项目上做了28年呢?

答案非常简单,丹尼尔多次强调:Have Fun

Linux之父也告诉我们:Just for Fun

是的,一切源于兴趣。

相关文章
|
3月前
|
Rust 安全 编译器
【颠覆传统】Rust跨平台开发秘籍:如何轻松驾驭多操作系统,打造无缝兼容应用?
【8月更文挑战第31天】Rust语言凭借其内存安全、卓越性能及丰富的标准库支持,正逐渐成为跨平台开发的新宠。本文通过具体代码示例,展示如何用Rust编写可在多种操作系统上无缝运行的应用程序。Rust通过所有权、借用和生命周期等机制提升代码安全性,并在编译时检测潜在错误。其编译器支持广泛平台,包括Windows、macOS和Linux等,非常适合跨平台开发。此外,Rust还可用于开发复杂的GUI应用,利用GTK、Qt等成熟框架实现跨平台图形界面。无论开发命令行工具还是图形界面应用,Rust均能提供高效稳定的解决方案。
176 1
|
6月前
|
监控 Devops jenkins
流行的软件质量保证体系工具
流行的软件质量保证体系工具
149 0
|
存储 人工智能 文字识别
Goodnotes替代品!有哪些类似Goodnotes的笔记软件?
Goodnotes 6从买断制变更为订阅制,不少用户感觉遭到”背刺“,如果你也正在寻找类似Goodnotes的笔记软件,那今天的这篇文章,就非常适合你~
Goodnotes替代品!有哪些类似Goodnotes的笔记软件?
|
数据库
功能强大却十分小众的5款软件
有些软件虽然功能强大,使用便捷,但是却没有得到广泛的关注和推荐,这并不意味着它们不值得一试,相反,它们可能是你不知道的宝藏。我的任务就是要把这些隐藏的好软件分享给大家。
130 1
|
搜索推荐 数据安全/隐私保护
让你眼前一亮的不是流行软件,而是这五款小众软件
让你眼前一亮的软件,不一定是市面上最流行的。今天,我将推荐给你五款非常小众,但是十分好用的软件。它们功能强大,使用起来也非常方便,而且经过我个人的测试,确保质量有保障。如果你用完后觉得不好用,可以找我哦。
181 0
让你眼前一亮的不是流行软件,而是这五款小众软件
|
安全 IDE Java
滚蛋吧,安全漏洞——这款 IDE 插件帮你轻松解决安全问题,核心引擎已开源
滚蛋吧,安全漏洞——这款 IDE 插件帮你轻松解决安全问题,核心引擎已开源
滚蛋吧,安全漏洞——这款 IDE 插件帮你轻松解决安全问题,核心引擎已开源
|
IDE JavaScript 前端开发
10种受欢迎的嵌入式软件开发工具
10种受欢迎的嵌入式软件开发工具
3994 0
10种受欢迎的嵌入式软件开发工具
|
安全 开发者
为什么恶意软件开发者转向开放源代码
骗子们通过软件窃取银行信息 为了让他们的恶意软件对骗子来说更有价值,恶意软件开发者正在努力转向开源模式。 除了窃取金融和个人资料,恶意软开发者希望通过免费提供程序代码,扩大既有木马程序的使用范围。
961 0