- 英文作者:Christine Xe 是一名全栈工程师
- 中文编译:“云头条”
“开源”崩了!
或者换句话说, 除非你付钱给我,否则为何我要编写有用的软件?
近日 Java 生态系统一个至关重要的软件包 log4j2 曝出了一个重大的安全漏洞,对整个互联网形成了重大的威逼。一旦齐全沦为了武器,该破绽让攻击者就能够胁迫 Java 服务器执行从 LDAP(轻型目录拜访协定)服务器获取的任意代码。
我认为这起事件是一个完满的缩影,揭发了“开源”软件方面存在的所有次要的生态系统问题。
对此我的确有几点想法要一吐为快,因为我认为 log4j2 是一个堪称完满的例子,表明了这方面面临的最蹩脚的状况之一。与该问题无关的所有人都齐全有理由宣称本人提供无效的计划解决理论问题,但也在这个过程中造成了一个微小的破绽。
所有软件都是站在伟人的肩膀上开发而成的
无妨思考像在 Linux 内核上运行 SSH 服务器这么根本的事件。就这个组合而言,你将至多面对 10 家供应商(假如应用默认配置下的精简版 Alpine Linux 零碎),这就意味着至多有 10 家独立的组织依然须要用真金实银来领取账单,无论有多少数量的用户在应用它们收费赠送的软件。Alpine Linux 也是表明该问题的一个典例,因为它常常在 Docker 语境下应用,在理论的生产环境下为许多公司提供反对。你认为这些公司中有多少家赞助 Alpine Linux 我的项目?你认为这些公司中有多少家甚至思考过赞助 Alpine Linux 我的项目?
我以前与他人探讨过此类话题,但令我感到诧异的是,大家对这个观点有很大的抵抗力:确保真正让企业运行起来的零星被迫开发者可能领取房租。
当初流行的是这种陋习:从开源社区那里获取利益,而不给予回馈。如同开发依赖项的那些人无关紧要。
一方面是由激情的开发人员保护开源软件,另一方面是一味获取而不给予的做法,造成了鲜明对比。
家喻户晓,GitHub 星标(star)是无奈用于领取租金。这方面的一个例子是闹得满城风雨的 core-js 乌龙事件。
core-js 是一个 JavaScript 库,它为 JavaScript 的规范库提供了许多的外围原语(primitive),这些外围原语能够让你无需应用其余库。但这个库同样臭名远扬,起因是每当你在 CI 中装置它,就能够晓得我的项目作者在寻找工作。你可能曾经看到上面这个音讯已有上千次了:
该项目标开发者可能因车辆过失杀人罪而仍在坐牢,可能曾经被释放出来。core-js 是 React 的一个依赖项。你们中又有多少人理论为这个我的项目捐过款?尤其是如果你平时应用 React?
当初咱们无妨把眼光转向 log4j2。该我的项目实际上在规范库中,供 Java 用户应用。这个库在古代 Java 中是如此地积重难返,以至于你会认为它的开发人员会资金富余,除了那个库之外不须要专一于其余任何事件,是不是?
而后事实并非如此。
没有人付钱给 log4j2 的维护者!?
Apache 软件基金会官网有整整一页内容来形容“项目管理委员会”的职责。….. 却没有人付钱给他们?
从昨日起,开源社区须要成长起来。
Log4j 维护者始终在通宵达旦地开发缓解措施、修正版、文档、CVE、回复征询及解决其余事务。可是没有什么阻止人们因为咱们分文报酬未得的工作,因为咱们都不喜爱却因向后兼容顾虑而须要保护的某项性能而炮轰咱们。*
这是修复了导致数至多百万美元损失的破绽的维护者 (Ralph Goers)。
- 我在业余时间开发保护 Log4j
- 始终幻想着能专职从事开源工作
- (截图时)有 3 个赞助人赞助 @rgoers 的工作:Michael、Glenn 和 Matt
我当初是 Apache 软件基金会的成员,也是 Apache Commons、Apache Flume、Apache Logging Services 和 Apache Maven 的项目管理委员会(PMC)成员。我开发了 Apahe Log4j 2 的初始版本,持续把我的大部分精力投入在这方面上,以提供反对和改良,从而设法使 Apache Log4j 2 成为 Java 开发人员眼里最出色的日志框架。*
我目前有一份专职工作:软件架构师。我在业余时间开发 Log4j 及其他开源我的项目,因而我通常解决我最感兴趣的那些问题。我始终幻想着能全职从事开源工作,心愿能失去您的反对,以便这个梦想成真。*
如果你应用他人在业余时间开发的软件,感觉它很有用,那就付钱给他们
到昨天为止,Log4j 我的项目总共也就 3 个赞助商。没错,总共就 3 个。
到明天为止,这个数字当初减少到了 14 个,然而这不是借口。这个人取得的资金数量应该与应用 log4j2 在整个生态系统的重要水平相匹配。
这点不容置辩。这个人在业余时间出于喜好所搞的我的项目竟然影响到半个互联网的运作。容易受到该问题影响的公司包含苹果、谷歌、我的手机运营商以及基本上在默认配置中应用 JavaEE 的每家公司。
如果 log4j2 关系到贵公司的胜利,你在道义上就有任务向费劲不讨好地创立这个库的人捐款。
我有一个敌人长期以来始终在费劲不讨好地保护一家在线广播电台的技术堆栈。他受到了其用户不公正的看待。用户们会在小费罐中投入 5 美元,而后如果他没有扔下手头的所有工作、立马解决用户异样具体的问题,用户就会十分怄气。他曾试图在一些中央找到工作,但每当对方老是试图逼他放弃保护本人的我的项目,他不得不回绝这些工作。与此同时,支出起源缩小的景象仍在持续。
这就是为什么我在上面这一点上很小心谨慎:如果没有任何牢靠的办法让我能够为本人付出的致力取得报酬,我不轻易开发“有用”的软件,并将其公布给全世界。
我基本不想到头来落入这种地步:我出于激情作为一个副业我的项目开发的软件将许多人的公司严密地分割在一起。这就是我开发软件以及把软件开发到何种水平的形式或准则。
没有触犯别人之意,但我真的不想白白付出我的致力。现有的寄生虫文化将“开源”视为收费劳动力池,因此我很难想让本人的副业我的项目像 log4j2 那么真正有用,除非你付钱给我。
长话短说
“如果你想让我为你开发有用的软件,那就付钱给我。如果你应用他人在业余时间开发的软件,感觉它很有用,那就付钱给他们。”
这个观点应该不会有大的争议。这应该不是什么新鲜事。这应该曾经是行业现状,咱们软件失常运行所依赖的开源我的项目,眼看着那些激情的开发者忍饥挨饿、哀求捐献,的确很糟心。
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。