参与开源、贡献开源,虽有一腔热血,但迫于现实的生存而放弃的开发者依然不在少数。
7 月 4 日,知名开源 JPEG 图像编解码器 libjpeg-turbo 发布公告,官宣 libjpeg-turbo 3.0 开源版本(https://sourceforge.net/projects/libjpeg-turbo/files/3.0.0/)的到来。然而,有些遗憾的是,libjpeg-turbo 的首席开发人员 DRC 在公告中写道,「可能永远不会有 libjpeg-turbo 3.1 了......我并不期望从开源开发中致富,但很多企业从我的工作中获得丰厚的利润,而我却被期望免费做这项工作,这也是不公平的」。
最终由于资金短缺,DRC 提前发出预警,libjpeg-turbo 功能的下一步开发可能会受到阻碍。
libjpeg-turbo 是什么?
根据其官网介绍,ibjpeg-turbo 是一种 JPEG 图像编解码器,它使用 SIMD 指令(MMX、SSE2、AVX2、Neon、AltiVec)来加速 x86、x86-64、Arm 和 PowerPC 系统上的基线 JPEG 压缩和解压缩,以及在 x86、x86-64、Arm 和 PowerPC 系统上加速 JPEG 压缩。
根据其官方评测,在此类系统上,在其他条件相同的情况下,libjpeg-turbo 的速度通常是 libjpeg 的 2-6 倍。在许多情况下,libjpeg-turbo 的性能可与专有高速 JPEG 编解码器相媲美。
一定程度上,libjpeg-turbo 实现了传统的 libjpeg API 以及功能较弱但更简单的 TurboJPEG API。libjpeg-turbo 还具有色彩空间扩展功能,允许其从 32 位和像素缓冲区(RGBX、XBGR 等)压缩/解压缩,以及拥有功能齐全的 Java 接口。
凭借开源的特性,libjpeg-turbo 取得了巨大的成功并得到了业界广泛使用,GitHub 上 Star 数为 3.3k。而据 DRC 透露,每天有数十亿人通过 Web 浏览器、操作系统和图像查看器/编辑器使用到 libjpeg-turbo 技术。
首席开发者 DRC 亲述:拆了东墙补西墙的开源经历
就是这一款受众颇广的项目,要不是其幕后开发者的坚持,最新 libjpeg-turbo 3.0 版都可能差一点“夭折”。
在原本计划中,libjpeg-turbo 3.0 本应该到来得更早一些。不过,根据开发者 DRC 的叙述,在发布过程中,这个项目遇到了不少的挑战,包括起初 libjpeg-turbo 3.0.0 的 Windows 安装程序未获得有效签名、Beta 版本错误的修复等,好在最终这些问题得以解决。
不过,DRC 也提醒道,“虽然我尽最大努力且可能以高的质量标准并使用行业最佳实践来维护这个项目,但我无法测试所有可能的使用场景。”
接下来,DRC 表示他会继续花时间修复 libjpeg-turbo 中的 Bug,并发布修复版本。
然而,其也坦言:未来可能不会再有 libjpeg-turbo 3.1 发行版,除非,这个开源项目可以获得更多的资金支持。
在公告中,DRC 也对该项目资金算了一笔账:
目前,libjpeg-turbo 项目资金仅能够提供每月约 8-10 小时的劳动报酬。
在完成 3.0 beta 版本后,就用尽了 2023 年项目的所有预算。
后续修复所有 3.0 Beta 版错误,预计耗尽 2024 年 9 月之前的全部预算。
如果资金得不到改善,那么 libjpeg-turbo 实际上就处于“ 维护模式”。这意味着至少在接下来的 15 个月内,不能考虑任何新功能(即使是次要功能),并且技术支持也将受到限制。
对于 DRC 本人而言,作为一名全职开源开发者,他日常主要以维护三个开源项目为生,包括使得任何 Linux 或 Unix远程显示软件都能够以完全硬件加速的方式运行 OpenGL 应用程序的开源程序包 VirtualGL、TurboVNC 和今天提到的 libjpeg-turbo。
相比 VirtualGL 和 TurboVNC 两个项目,DRC 参与 libjpeg-turbo 开源项目的贡献可谓是不赚钱还要往里面倒贴很多钱。
DRC 表示,其大部分收入主要来自 VirtualGL 和 TurboVNC 两个项目,然后他拿着这些收入与自己抽出来的时间再投入到 libjpeg-turbo 开发中。实际上,libjpeg-turbo 从 2010 年到 2018 年就耗费了几十万美元。后来,2018 年 libjpeg-turbo 2.0 的发布导致 DRC 早已负债累累时,他才不得不停止往里面砸钱。
这些开源项目为很多公司节省了数百万美元的劳动力和 IT 成本,但 DRC 称,他拿回家的工资比初入行的教师工资还低。
「我通过独立的开放源码开发所赚到的钱大约是我的技能对企业雇主的价值的 20-25%,多年来我拒绝了此类雇主的无数邀请,以便继续全职从事这些 OSS 项目。我并不期望从开源开发中致富,但很多组织从我的工作中获得丰厚的利润,而我却被期望免费做这项工作,这也是不公平的」,DRC 说道。
libjpeg-turbo 未来该如何继续?
在 2018 年 DRC 负债累累之后,这个项目之所以得以维持几年,是因为 libjpeg-turbo 获得了由 Cendio AB 和 Crimson Vista 公司、Google 的一些临时资助以及一些用户的临时捐款 。
不过,DRC 表示,目前的资金仅够支付项目的维护和支持费用。为了让 libjpeg-turbo 以任何有意义的方式向前发展,包括将项目本身扩大 JPEG 规范的覆盖范围、将 SIMD 覆盖范围扩大到新的算法或指令集或 CPU 架构、支持新平台、改进 API、强化安全性、提高模糊器覆盖率、增强构建系统、提高自动化程度等,都需要更多的通用资金支持。
在最坏的情况下(现在所处的情况),DRC 认为当前的资金只可能将项目维持一年多的生存时间。
DRC 表示,“具有讽刺意味的是,我维护的最受欢迎/无处不在的开源项目(比其他项目更难资助。也许 JPEG 编解码器还不够“性感”?也许人们认为这是理所当然的,因为它的复杂性隐藏在更高级别的接口和应用程序背后?尽管如此,开发这些更高级别接口和应用程序的组织不应将 libjpeg-turbo 视为理所当然,特别是当我最近预计免费修复的大多数问题都与安全相关时。”
关于 libjpeg-turbo 的未来,DRC 不是没想过除了接受捐赠之外的其他路,他甚至想过该项目如果能被一家既与操作系统无关,又与 CPU 无关(虽然不太现实)的组织收购,或许会对 libjpeg-turbo 的生存和开放性都有意义。
然而,当回看过去的 13 年里,其在 libjpeg-turbo 中建立了巨大的价值——包括它的声誉、它的普遍性和它的用户社区,DRC 陷入了矛盾之中,他又不太希望这种收购出现,毕竟 libjpeg-turbo 显然不是摇钱树。
迫于无奈之下,libjpeg-turbo 未来有三条路可走,一是在有充足资金资助下,libjpeg-turbo 更加全面地往前发展;二是被收购或者在可预见的未来将项目置于维护模式;三便是最糟糕的一种,基于现在这种情况持续下去,直接没有以后。
用“爱”发电的开源开发者,路该怎么走?
令人唏嘘的是,DRC 的经历并不是开源社区中偶然存在的事件。
2021 年底,一场基于 Java 的日志记录工具 Apache Log4j2 的高危漏洞席卷互联网,甚至将其背后的项目维护者推上了舆论之巅。Log4j2 维护者之一的 Volkan Yazıcı 在忍无可忍之下于 Twitter上吐槽,「Log4j2 维护者只有几个人,他们无偿、自愿地工作,没有人发工资,也没人提交代码修复问题,出了问题还要被一堆人在仓库里留言痛骂。」
2022 年,开源库「faker.js」和「colors.js」的作者 Marak Squires 带来严重的“删库跑路”事件,留下的一句「恕我直言,我不想再用我的免费工作来支持财富 500 强(和其他小型公司),以此为契机,向我发送一份六位数的年度合同,或者 fork 项目并让其他人参与其中」,诉说自己心中的不满。
2023 年 2 月,core-js 作者 Denis Pushkarev 发布长文写道,在放弃高薪工作,全职从事 core-js 的开源开发后发现,免费开源软件的底座已崩塌,更是直言 “开源 core-js 也许是我一生中最大的错误”。
据《2022-2023 中国开发者大调查》报告显示,63% 的开发者表示未曾在开源中获得收入,18% 的受访者称很少获得收入。
为此,该如何有效改善纯靠“用爱发电”的开源现状?
其实很多组织也意识到了问题所在,开始采取改善措施。如 CSDN 之前报道过的:
瑞典流媒体巨头 Spotify 推出了 100,000 欧元(105,000 美元)的免费和开源软件基金,以支持小型“独立”项目维护者。
开源后端服务初创公司 Appwrite 为开源项目维护者推出了一个专门的基金开源软件基金,该基金将在去年向开源维护者支付 50,000 美元。
当然,这些措施虽已实施,但是还需要整个行业以及更多的企业行动起来。而对于个人开发者而言,究竟该如何做?我们对此也询问了 ChatGPT,它汇总分享了以下几年主动出击的建议供参考:
开源赞助平台:开源项目可以通过开源赞助平台来获取资金支持。平台如GitHub Sponsors 和 Open Collective 等提供了直接向开源项目进行赞助的机制。开源维护者可以在项目中设立赞助计划,并向支持者提供一些额外的福利,如独家访问、技术支持或特殊的认可等。
顾问和咨询服务:开源开发者可以提供顾问和咨询服务,将他们在项目开发和维护方面的专业知识转化为收入来源。他们可以提供技术咨询、定制开发、培训等服务,以帮助其他组织或个人在特定领域中应用开源技术。
专业支持和维护服务:开源项目可以提供专业的支持和维护服务,以获得收入。这包括为企业提供定制开发、升级和维护等服务,以确保他们能够在生产环境中顺利使用开源软件。
产品和插件开发:开源开发者可以基于开源项目构建自己的产品或插件,并通过销售这些产品来获得收入。他们可以为特定行业或用户群体开发特定的解决方案,并提供定价模型,如许可证费用或订阅模式。
参与雇主赞助:开源开发者可以与雇主合作,以在工作时间内继续贡献开源项目。一些公司鼓励员工参与开源项目,并将其视为技术成长和品牌推广的机会。
开源基金会和组织:加入或与开源基金会和组织合作,这些组织通常有资金支持计划,旨在资助开源项目的开发和维护工作。这些基金会可以为开发者提供资金、资源和网络支持。
商业伙伴关系和赞助商:与企业建立商业伙伴关系,寻求赞助和合作机会。企业可能对与开源项目相关的领域有兴趣,愿意提供赞助、广告支持或合作伙伴关系,以促进他们的业务。
需要注意的是,开源项目的可持续性和成功并非仅靠单一的收入来源,而是需要综合多种方法和策略。开源开发者可以探索并结合适合自己项目和社区的多种收入模型,以确保项目的可持续发展并为自己带来收入。此外,社区和行业的支持也非常重要,包括各种赞助、奖励和认可措施,以鼓励和赞扬开源开发者的贡献。
参考:
https://groups.google.com/g/libjpeg-turbo-announce/c/YZ2wRgB0zIE/m/UOjrm9quBQAJ
https://www.phoronix.com/news/libjpeg-turbo-3.0-Released