cURL项目作者Stenberg:开源项目的维护者是否应该无偿提供任何支持?

2019 年 9 月 24 日

cURL项目作者Stenberg:开源项目的维护者是否应该无偿提供任何支持?

开源,对大多数人来说是一个有情怀的词,不少公司也把开源当做 KPI 或者技术宣传的手段。但是,一个优秀的开源项目,可不止是公布源码就万事大吉,还需要后续大量的精力去维护。开源究竟应不应该免费?如果开源项目坚持免费政策的话,如何长久维持下去?毕竟,维护开源项目的人也一样要养家糊口。本文,Owen Williams 采访了知名开源项目 cURL 的作者 Daniel Stenberg,听他分享对上述问题的见解。



谁应该负责维护开源项目?


当购买类似 Philips Hue 智能灯或 iPhone 这样的产品时,你可能认为编写代码的开发者已经得到了对应的报酬。虽然这对那些直接开发产品软件的人来说,确实如此。但实际上,几乎每家科技公司都依赖于 GitHub 和 GitLab 等网站的“开源”项目免费获得大量代码。


这些开发者常常乐于免费工作。编写开源软件可以提高他们的软件开发技能,从社区中获得观点,或者只是通过无偿提供创新来帮助某个行业发展。 Google 方面称,它维护着数百个开源项目,认为开源能够“促进和鼓励协作和技术开发,解决现实世界中的问题”。


但是,当数百万人所使用的软件是由一个社区或个人维护时,事情可能会变得非常糟糕。2014 年的那次漏洞(Heartbleed)危及了数亿个网站的安全,该漏洞是由一个名为 OpenSSL 的开源库出现的问题引起的,该库只有一名全职开发者,由于数百万人都在使用这些代码,因此依靠他们的贡献才使更新和修改代码不出错。有时候,开发者会因为感到厌倦而放弃自己的项目,而这些项目可能会在他们不注意的时候被破坏。


此外,社区很难要求无偿排错的程序员继续维护那些出于各种原因已经失去兴趣的软件,尽管有些公司肯定会尝试这么做。另一方面,如果不能对这些项目进行充分的维护,整个技术生态就会变得非常脆弱。因此,一些开源程序员会要求公司支付费用,此举并不是为了代码,而是为他们提供的服务付费。


Daniel Stenberg 就是其中之一。他创建了 cURL,是世界上最受欢迎的开源项目之一。


开发者使用 cURL 在两个系统之间传输信息,通常是在 API 中,服务需要从另一个系统请求或发送数据。据 Stenberg 的说法,cURL 包含在数十亿部智能手机、数亿台电视、至少 1 亿辆智能汽车、每一部 iPhone 以及几乎所有生活中可接触到的其他现代设备和服务中。这一项目的使用规模巨大,不过那些依赖 cURL 的公司中,很少有能够意识到这是 Stenberg 编写的代码。


Stenberg 于 1998 年发明了 cURL,至今仍然无偿维护这个项目,不过他最近在一家名为 wolfSSL 的公司谋到一份工作,这家公司正在给他付薪,让他“尽可能全职”地维护这个项目。那些依赖特定开源软件的公司偶尔会雇佣这些项目的创建者来构建项目。在这种情况下,wolfSSL 要求 Stenberg 不仅要维护 cURL 项目,还要负责签署服务合同,为 cURL 提供个人支持。


Stenberg 从未想到 cURL 会如此受欢迎。事实上,他过了很多年才知道 cURL 已经被广泛使用。因为代码可以免费使用,且无任何商业许可,因此公司没有理由告知他正在使用这个开源项目。他只是意识到他发明的软件变得越来越流行,因为人们开始告诉他,他们在软件的“关于”窗口或者在软件文档中看到了他的名字。他说:“慢热的程度如此之慢,我们从来就没有预料到它会如此火爆。”


“我认为,当人们觉得自己从项目中获益很多,却不愿为项目贡献自己的一份力量,反而试图利用我们,我会为此感到非常恼火。”


在 cURL 问世后的 20 年里,Stenberg 称他是利用业余时间维护这个项目,并通过从事其他软件开发的工作获得了稳定的收入。维护这个项目需要大量的工作:他耗费了数千个小时来改进 cURL、修复 bug 和改进代码。在 GitHub 上为 cURL 提供的 25000 个提交或更新中,Stenberg 就独占了 14000 个。这是让人难望其项背的记录,没有其他软件开发者对该软件做出超过 2586 次的提交。


cURL 之所以能存活下来,要归功于一批赞助商,他们为项目的托管和其他费用提供了资金支持。不过,Stenberg 表示,没有哪家大公司会愿意出资,像 Stenberg 这样的贡献者免费捐赠自己的时间。Stenberg 说道,他相信开源的存在很重要,从未后悔过让 cURL 开源。只是令他感到沮丧的是,当出现问题时,就会有公司要求他提供技术援助。


去年,由于 cURL 问题,一家海外公司暂停对数百万台设备的固件升级之后,惊慌失措地联系了他。Stenberg 说,“我不得不向他们解释,我不能一接到通知就马上赶到另一个国家去帮助他们解决这个问题,因为 cURL 这个项目是我在业余时间做的,而且我还有一份全职工作。”


不过,因为他实在关心这个项目,所以匆忙找了朋友帮忙。他朋友立即赶飞机出国帮助解决了这个问题。


为了补偿开源程序员提供的这种服务,Stenberg 认为,大公司应该为库的开发者提供支持,签署合同并支付费用,这将补偿他们的时间,并有助于确保一个项目真正得到长期维护。凭借他在 wolfSSL 的工作,他希望能够说服像 Apple 这样的公司支付费用来换取专门的支持,但这一努力仍处于早期阶段。


支持合同并不便宜,通常需要花费数千美元才能换取为使用项目提供专门的帮助,以及出问题时给予技术支持。然而,需要这种服务的公司通常资金充足,或者覆盖范围广泛,尤其是在 cURL 这种情况下。


目前还不清楚有哪些公司会对这样的合同感兴趣。当那家公司请他飞往另一个国家为他们解决问题时,Stenberg 提出了支付费用的要求,被他们拒绝了。


这一事件让他有了深深的挫败感。他喃喃道,“我认为,当人们觉得自己从项目中获益如此之多,却不愿为项目贡献自己的一份力量,反而试图利用我们,我会为此感到非常恼火。”但他仍然将支持合同视为维护开源的长期解决方案:“资金需要源源不断流向作者,而不仅仅是被管理者或大型科技公司吸走,而这些公司现在往往能够拿到最多的开源资金。”


但在开源社区中,有很多人反对以任何方式为他们支付费用的想法,因此这仍然是一个有争议的话题。开源社区的一些人认为,货币化违背了“Free”(自由、免费)的宗旨,但现实是,那些无偿工作的开发者与其他人一样,也需要吃饭、养家糊口。


现在,当开发者或公司给 Stenberg 发电子邮件寻求帮助时,他说,“我的态度已经发生了转变,倾向于‘嗯,或许,只是或许,你是不是应该签署支持合同支付费用了?’”


当我问 Stenberg,他是否会永远维护 cURL(此时 cURL 已问世 20 年了),他说他还没有放弃维护这个项目的打算,毕竟这个项目已经成为他生活的重要组成部分。


“当然,假设我拿到了报酬。”他补充道。


作者介绍:


Owen Williams,一名热爱写作的开发者,Medium 专栏作家,专写未来科技及其如何影响人们的生活。


原文链接:


The Internet Relies on People Working for Free


2019 年 9 月 24 日 08:303124
用户头像

发布了 324 篇内容, 共 119.8 次阅读, 收获喜欢 800 次。

关注

评论 1 条评论

发布
用户头像
cURL的作者应该多学学其他开源软件的盈利模式,老好人得不到好的报酬.
2019 年 09 月 24 日 22:24
回复
没有更多评论了
发现更多内容

系统架构知识总结

史慧君

关于系统架构学习总结

imicode

谈一谈年终奖中的那些坑

张小方

程序员 面试 offer 薪资 年终奖

Redis系列(四):天天用着Redis集群,主从同步该知道吧?集群工作原理是否需要了解下?

z小赵

Java redis 高并发 高并发系统设计

系统结构:作业

行下一首歌

极客大学架构师训练营

week 04 作业

Safufu

k8s 上运行我们的 springboot 服务之——flume同步数据到到clickHouse

柠檬

k8s log Clickhouse SpringBoot 2

从0-1学习项目方案设计

赵孔磊

聊一聊 HashMap

江城子

Java hashmap

如何构建你自己的 JVM (2) HelloWorld

孤星可

Java JVM 深入理解JVM

中国人口红利将转化成工程师红利,但是这到底是谁的红利?是程序员的悲哀还是无奈?

非著名程序员

程序员 程序员人生 工程师 工程师红利 无代码开发

一文读懂 TypeScript 泛型及应用

阿宝哥

Java typescript 前端

架构师训练营第四周感悟

张锐

极客大学

week 04 总结

Safufu

点赞功能,你用 MySQL 还是 Redis ?

Java小咖秀

MySQL redis 分布式 分布式系统 经验

区块链系列教程之:比特币中的共识

程序那些事

比特币 区块链 共识与信任 分叉

ARTS 第 4 周

乌拉里

【思考】-产品等级与市场定位匹配

superman

定位 产品定位

架构师训练营第4周作业

aoeiuvzcs

架构训练营 0 期总结 -- 第四周

互金从业者X

一个典型的大型互联网应用系统使用了哪些技术方案和手段(作业)

互金从业者X

环信荣登36氪WISE2020企服金榜-智能客服榜首

DT极客

架构师训练营 第四周 学习总结

亮灯

架构师训练营总结 -4

River Tree

学习 极客大学架构师训练营

Homework- 典型的大型互联网应用系统

River Tree

Homework 大型互联网应用系统

揭秘金山云云游戏PaaS服务平台背后的视频编码技术

Geek_116789

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

~就这样~

分布式系统架构学习总结(第四周)

~就这样~

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十四)编写测试-内建扩展

编程道与术

Java 编程 TDD 单元测试 JUnit

一文彻底掌握二叉查找树(多组动图)

淡蓝色

Java 数据结构 算法

慧点OA转战政企市场,钉钉们羡慕么?

人称T客

cURL项目作者Stenberg:开源项目的维护者是否应该无偿提供任何支持?-InfoQ