致敬为免费提供开源软件而辛苦劳作的开发人员。

作者 | JOEL M. MOSKOWITZ

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

当你购买利浦Hue的智能灯或iPhone之类的产品时,你可能会认为编写代码的人获得了报酬。对于直接编写产品软件的人来说确实如此,然而每个技术公司还需要依赖无数的免费代码,比如从GitHub和GitLab等网站上的“开源”项目获得免费代码。

通常,这些开发人员也很乐意免费工作。他们通过编写开源软件提高自己的技术力,从社区中获取反馈,或者免费提供创新来帮助行业发展。Google维护了数百个开源项目,据其称开源“推进并鼓励技术的协作与开发,以解决现实问题。

但是,当数百万人使用的软件仅由一个社区或一个人维护,而且这些人都是免费的义工,那么有时就会出现意外情况。2014年,灾难性的“心脏出血”bug瓦解了数亿个网站的安全性,背后是一个名为OpenSSL开源库中的一个问题引发的,该库虽然有数以百万计的人在使用,但负责更新和修改代码的只有一个专职开发人员,试问我们又怎能奢望他不会犯错呢?有时,开发人员会感到厌倦而放弃他们的项目,而这些项目也会在不经意地遭到破坏。

我们不能要求免费工作的程序员排查问题,或继续维护由于某种原因而失去兴趣的软件,尽管有些公司还是会尝试。另一方面,没有得到适当维护的项目会导致整个技术生态系统变得脆弱。因此,有些开源程序员要求各个公司付费,不是为了获得他们的代码,而是为了获得他们的支持服务。

Daniel Stenberg就是这样的一名程序员。他创建了cURL,这是世界上最受欢迎的开源项目之一。

开发人员可以利用cURL在两个系统之间传输信息,通常某个API的服务需要从另一个系统请求数据或从另一个系统发送数据。根据Stenberg的说法,数十亿部智能手机,“数亿”台电视和至少1亿部智能汽车,以及基本上你每天接触的所有现代联网设备和服务都使用了cURL。鉴于Stenberg在志愿者社区的协助下负责了绝大部分维护工作,因此说cURL的使用规模实在令人震惊。但是,在诸多依赖他的代码的公司中,很少有公司意识到这是他的代码。

居住在瑞典斯德哥尔摩附近的Stenberg于1998年创建了cURL,至今仍免费维护该项目,尽管他最近在一家名为wolfSSL的公司工作,现在该公司付钱让他“尽可能全职”地为公司工作。有时,依靠特定开源软件的公司会雇用项目的创建者来构建这些项目,因此wolfSSL要求Stenberg不仅要维护cURL,而且还与他签署了提供cURL个人支持的服务合同。

Stenberg从未没想到cURL的知名度会如此之高。实际上,自从这款软件诞生以来,过了很多年才得到了广泛使用。由于这些代码无需任何商业许可即可免费使用,因此各个公司在使用的时候都没有告诉他。他发现自己创建的软件越来越流行,是因为有人告诉他在软件的“关于”窗口或其他文档中看到了他的名字。他表示:“这是一个循序渐进的过程,我都没有预料到。”

Stenberg说,在创建了cURL的前20年中,他只是利用业余时间管理这个项目,同时还在从事其他“真正的软件开发工作”来维持生计。该项目的维护工作量巨大:他花费了数千小时来提升cURL、修复bug和改进代码。cURL的GitHub存储库中总共有25,000个“提交”和更新,其中有14,000个来自Stenberg。其他开发人员贡献的代码都没有超过2,586个提交。

cURL幸存了下来,归功于一系列赞助商,他们赞助了该项目的托管和其他费用(尽管Stenberg说没有大型公司参与其中),以及Stenberg等开发人员免费贡献了自己的时间。Stenberg说,他相信开放源代码的存在很重要,而且他从未后悔开放cURL的源代码。然而,令他感到失望的是,如果出现问题,各个公司则要求他提供帮助。

去年,一家海外的公司由于cURL的问题而不得不暂停了将固件升级部署到数百万台设备后,慌慌张张地联系到他。Stenberg说:“我不得不给他们解释,我无法在短时间内前往他们的国家来帮助他们解决这个问题……,因为cURL只是我的业余工作,我有一份全职工作。”

因为他非常在乎这个项目,所以他找了一个朋友来帮助。他的朋友前往那个国家,帮忙解决了这个问题。

Stenberg认为,为了向提供这种服务的开源程序员支付报酬,各个大公司都应该向开发人员支付与代码库相关的支持服务的费用,这是对他们付出的时间的补偿,同时也有助于确保这些项目的长期维护。Stenberg希望通过在wolfSSL的工作,说服苹果等公司付费换取专门的支持,但这条路任重而道远。

支持合同的价格不菲,通常在数千美元之间,支付费用后就可以使用项目,而且在出现问题时也可以获得专门的支持。但是,需要此类服务的公司(尤其是使用cURL的公司)通常都资金雄厚或影响广泛。

目前尚不清楚这些公司是否会对这种合同感兴趣。以前曾有一家公司要求Stenberg飞往另一个国家帮助他们解决问题,当Stenberg提出支持服务费用时,他们拒绝了。

这让Stenberg感到万分失望。他说:“当发现人们在利用我们,却没有在获得利益的同时做出相应的贡献,我感到很恼火。”但他仍然认为支持服务合同是维护开源的长期途径:“这些程序员理应得到回报,而不仅仅是通过策展人或大型开源项目/公司提供绝大部分的资金支持。”

开源社区中的许多人反对收取金钱的想法,这仍然是一个有争议的话题。开源社区中的一些人认为,金钱换不来“自由”,但现实是,为自由而辛苦劳作的人们也是普通人,他们也要吃饭和养家糊口。

如今,如果有开发人员或公司发送电子邮件给Stenberg寻求帮助时,他会说:“我的态度已经转变,像您这种情况,可以考虑一下支付支持合同的费用。”

当我问Stenberg是否还会维持cURL(已经20年了)时,他说他不打算放弃,这个项目已经成为他生活的一部分。

“当然,我也希望能够获得报酬。”他补充道。

原文:https://onezero.medium.com/the-internet-relies-on-people-working-for-free-a79104a68bcc

本文为 CSDN 翻译,转载请注明来源出处。

开源项目到底归谁管?相关推荐

  1. 写开源项目到底究竟有多赚钱?

    精品连载丨安卓 App 逆向课程之三 frida 注入 Okhttp 抓包上篇 选自calebporzio 机器之心编译 参与:张倩.蛋酱 如果提到靠打赏生活的人,我们首先想到的会是主播.但现实情况是 ...

  2. 开发者故意破坏自己的开源项目,开源商业化之路如何走?

    科技云报道原创. 开源 or 不开源,一直以来都是一个争议性的话题. 但不可否认的是,在过去的一两年,开源在全球呈高速发展趋势,越来越成为跨越国界和语言的共识. 据GitHub官方数据显示,2021年 ...

  3. 30 天精通 Git 版本管理,这个开源项目超给力

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 今天给大家推荐的这个开源项目超级赞,超级好. 如果你对 Git 版本控制不熟悉?那福利来了. 这个开源项目到底有多 ...

  4. 贡献开源项目没那么简单,你要负责到底

    贡献开源项目不是一件简单的事,不是说上传项目到Github或类似的网站,就万事大吉了,更不能认为你的项目代码现在已经开源了.还有很多事情要跟进完善.也就是说你要对这个项目负责到底. 从长远角度来看,开 ...

  5. 联通研究院霍龙社博士深度解析“AI项目到底适不适合开源”

    近年来,AI开源逐渐成为众多开发者谈论的核心,但也出现了不少"AI不适合开源"的声音,那么,AI项目到底适不适合开源呢? 为了解答这个专业问题,9月19日,OpenI启智社区特邀联 ...

  6. ChatGPT推荐的开源项目,到底靠不靠谱?

    今天我们让ChatGPT推荐一些开源项目,看看这些项目到底靠不靠谱? 首先,我们需要明确一个概念,那就是什么是开源项目.开源项目是指代码开放.可自由使用.修改和分发的软件项目.开源项目的优点显而易见, ...

  7. flutter 富文本编辑器选择图片模糊_Flutter 到底香不香?看完这几个开源项目再做决定...

    Flutter 自 2015 年推出以来,凭借着其极高的开发交付效率,优秀的多平台能力,以及强大的 UI 表现力,受到了许多开发者们的推崇.虽然 Flutter 的确仍旧存在一些问题,但依然是不少开发 ...

  8. GitHub 到底怎么找优秀的开源项目?有些资源自己找就可以了 | 非常实用技巧 | 效率起飞

    文章目录 原来 GitHub 也有朋友圈 多向优秀的人学习,我们也会走的更远 这里含有资源大全,甚至可以读个大学了 用好 GitHub,效率起飞 最后的最后 大家好,我是 Chocolate. 说到 ...

  9. 中国互联网公司开源项目调研报告

    近年来,开源技术得到越来越多的重视,微软收购GitHub.IBM收购红帽,都表明了开源的价值.国内公司也越来越多的参与开源,加入开源基金会/贡献开源项目.但是,它们到底做得如何呢?为此InfoQ统计了 ...

最新文章

  1. mysql修复坏表的方法
  2. 手机腾讯视频android版插件,小程序1.6.5版更新,终于支持腾讯视频插件了
  3. 数据库死锁查询及处理
  4. mysql数据库、表、索引、触发器
  5. DataFrame/Series获取列名以及更改列名(转)
  6. Z.ExtensionMethods 一个强大的开源扩展库
  7. 【转】IsCallBack属性和IsPostBack属性有什么区别?
  8. List 按照中文姓名升序排列
  9. ffmpeg函数介绍
  10. 使用 concurrently 并行地运行多个命令(同时跑前端和后端的服务)
  11. Windows11快捷键大全 win11常用快捷键介绍
  12. 异步请求(多种方式)
  13. nginx匹配规则详解
  14. 服务器c盘哪些文件可以删除吗,小编教你c盘里哪些文件可以删除
  15. HotSpot的新生代三区划分好在哪?
  16. 保监会就交强险费率浮动征询专家意见 凸显3焦点
  17. 明治维新VS洋务运动-同途殊归的变革by高铭君儿
  18. Matlab实现鼠标拖动显示轮廓线
  19. 清朝官场三百年之抢班夺权
  20. 微信小程序学习之路(一)

热门文章

  1. 在VC中使用Delphi构造公共对话框
  2. [论文阅读] Learning Without Forgetting
  3. 利用Python K-means实现简单图像聚类
  4. 发生无法识别的错误_车牌识别系统的核心部件抓拍摄像机怎么安装?
  5. linux创建软连接记录
  6. 百度强化学习之Policy learning
  7. 论文《Learning Spatial Fusion for Single-Shot Object Detection》解读
  8. python赋值语句的一般格式为_Python语言有什么奇技淫巧?
  9. python中for循环和while循环的区别_Python中for循环语句和while循环语句有何不同
  10. 新冠肺炎疫情数学模型的一点想法