开源会走上违心之路吗?

简介: 开源项目越“成功”,它给维护者带来的压力就越大。

2021 年年底,Log4j 安全漏洞又一次将开源世界面临的挑战推到了聚光灯下。Mike Melanson 在他的 New Stack 专栏中写道:

这场危机就好像有人在对开源社区说“我早就说过会这样”——开源社区原本以为自己几乎不花什么钱(甚至完全不花钱)就可以一直支持和维护各种项目,这一次可是露馅儿了。

虽然开源面临着各种各样的问题,但它对许多开发人员来说终归是非常重要的一部分。甚至对于一些人来说,开源一直是他们职业生涯中的一个关键环节。

“如果当初我没有为开源软件做出贡献,我真的不会从事 Web 开发事业,”软件开发人员和 O'Reilly 的两本著作(jQuery 和 Vue.js 主题)的作者 Callum Macrae 通过电子邮件告诉 The New Stack:“如果当初我换了一条路径接触 Web 开发工作,我的职业生涯肯定会非常不一样(而且可能没有现在这么好)。”

Macrae 显然非常看重开源对他这样的开发人员的意义,但他也对开源的未来持怀疑态度,至少从维护者的角度来看不怎么乐观。

“我认为目前的开源模式对于参与者来说是不可持续的,”他说:“这种模式要求人们竭尽所能地去做贡献,却几乎不要求任何回报,在上一个人精疲力尽的时候还得指望有人来接手他的工作——而且总有人能接得上!”

开源项目越“成功”,它给维护者带来的压力就越大。开源现在已经成为全球经济的一个基本组成部分,所以在过去五年中,业界很自然地出现了很多旨在帮助那些开源软件开发者的计划,例如 GitHub Sponsors 和 Tidelift。但总体而言,人们在开源社区所做的大部分工作仍然是无偿的。

开源行业有了哪些变化?
开源项目办公室正在崛起

有很多人在问开源行业的下一步应该何去何从。数量越来越多的开源项目办公室(OSPO)表明,企业对开源的内涵及其涉及的内容也越来越重视。

根据 The New Stack、Linux Foundation Research 和 TODO Group 在 9 月发布的一项调查,已启动 OSPO 的组织中有 77%报告说,这些办公室对它们的软件开发工作产生了积极影响。

但需要注意的是,OSPO 这一趋势还只是刚刚起步,还有很大的发展空间。上述调查也调研了没有开设 OSPO 的组织,其中 35%的受访企业说他们没有考虑过这件事,28%的受访者说他们并没有看到这方面的商业价值,19%的受访者则表示他们从未听说过这个概念。

这些统计数据应该能让我们管中窥豹,并让我们意识到摆在面前的任务有多大规模。

除了关于 OSPO 普及度的问题之外,这些调查结果还让我们就组织内部鼓励和支持开源的方式提出一些更基本的问题。9 月份研究的统计数据是一个警告,表明我们可能在退步:

42%的受访者表示,他们组织的工程师经常或有时为上游开源项目做出贡献,这一数字低于 2020 年的 48%。

36%的受访者表示他们会培训工程师为开源项目做出贡献,低于去年的 42%。

这表明支持开源产业的各种新机制和机构的发展,与实际的工作之间存在脱节。部分原因可能是因为宣传语和现实情况之间存在差距,但也可能是因为这场“运动”的价值观和独立性正在消失。

“有趣的部分大都消失了,但压力和期望却增加了,”Macrae 说到。开源运动如何保持其创造力和协作精神,同时确保这个世界所依赖的那些基础软件的维护者获得他们需要的支持呢?

成为开源贡献者/维护者的意义发生了变化

这些年来,成为开源贡献者或维护者的意义有了变化。

2019 年,技术作家和研究员 Nadia Eghbal 在 Increment 的一篇文章中指出,2010 年代后期的研究表明,开源社区不是在整合,而是在分裂。Eghbal 认为,在一定程度上这一现象是由 GitHub 的性质造成的:

通过标准化版本控制、开发人员身份识别机制和良好的用户体验,GitHub 让开发人员更容易进入各个项目并提交贡献。结果,项目现在获得了更多贡献者,但其中许多贡献者与项目的交互变得更肤浅了。

2016 年对 GitHub 上热门项目的一项研究发现,样本中近一半的贡献者只贡献了一次,占总提交量的不到 2%。

这种演变导致了几种后果。一方面,它存在技术影响。DataStax 开发者关系副总裁 Patrick McFadin 告诉 The New Stack,虽然“较小的贡献可能有价值,但较​​大的贡献,例如新特性,需要更长的专注时间。”

但影响不止在于技术层面。如果贡献更加零星和“肤浅”,那么可以毫不夸张地说,开源行业的社区意识正在减弱,而这种意识曾深刻影响了为开源项目做出贡献的活动。

这是 Macrae 所暗示的:“虽然大多数项目过去都是由社区主导的,但现在让人感觉它们经常得到大公司的支持——最明显的例子就是 React/Facebook。”

今天的世界中,开源已经被宣传为速度和创新的另一大关键要素,而上述观点则很容易被忽视。

然而,如果你看一看开源软件诞生时的软件世界——充满对立,甚至是政治对抗的气氛——你就应该知道,在科技行业的和谐表面下存在一些关键的紧张要素。这些问题如果不能解决,可能会让行业的未来更加无趣,人们的参与和协作变得更少。

开源与开发者关系
开源是一个学习知识的去处

致力于支持和推广开源的组织 TODO Group 的项目经理 Ana Jiménez Santamaría 说,参与开源项目有助于开发人员学习知识——学的不仅是编码。

她说,通过为开源项目做出贡献,“人们不仅有机会提高他们的代码技能,还可以提升他们的软技能,比如学习如何在协作环境中工作。”

Macrae 早期为开源软件做出贡献的经验可以验证这一观点。“我以前从未写过 PHP 或 HTML/JavaScript,不知道 SVN 和后来的 Git 是什么,没有任何计算机科学知识,”他回忆道。

他学习过程中的一个关键部分是社区:“我有一个社区帮助我学习,同时也为成千上万人使用的东西做出贡献。”

如果我们眼睁睁看着开源社区陨落,它们还会是开发人员可以学习知识的空间吗?答案可能是在其他地方寻找更好的培训和支持,比如说寻找在线学习资源,或者在真正在乎你的技能和职业的组织中找到工作。

但这种替代品并不能完全让人满意:只要开源还是参与性的,在那里的学习过程也会是一样的。你不是在学习什么课程或技能清单;你正在学习如何与其他人一起构建、修复和改进某些东西。

开发者关系的影响

过去几年开发者关系的增长可以被视为“传统”开源社区衰落的一种症状。这也表明企业对围绕特定工具参与社区和培养社区的必要性有了更高的认识。

为了完成数据科学硕士学位,Santamaría 研究了开发者关系在开源社区中的运作机制。

“它的主要目标是创建一个模型,根据不同渠道执行的活动来描述不同类型的开发人员,”她说,并补充说,“这种分析的商业价值是获取一组可以被 DevRel 专家使用的指标,通过以社区为中心的模式报告他们的工作。”

这无疑是很有趣的,但想想这对于 30 年前从事自由软件工作的开发人员来说会有多么陌生吧。

这并不是说这种理念有多么新颖;毕竟社区管理现在是各个领域中现代化工作机制的一部分。相反,它要指出的是,我们眼中的“社区”已经从非常有机和有趣的事物转变成了井井有条,更具生产力和效率的事物。

然而,也许正是把社区在某种程度上看作是“有机的”理想主义,造成了我们今天在开源软件中看到的许多问题。

“开源世界是一个众多社区组成的社区,因此它需要专家来培育和发展这些社区,这是项目可持续性的一部分,”Santamaría 说。

“随着组织内开源采用率的增长,我认为‘开源’开发者关系现在是关键,一是教育开发人员在内部和外部开源代码,二是成为组织与他们关心的开源项目之间的枢纽。”

有趣的是,这个模型与 Eghbal 眼中开源的发展历程是一致的,也就是少数维护者负责项目的大部分工作。该行业可能正在从大众参与的状态转向某种托管文化。

这可能是件好事。但它也产生了新的问题:这种方法会破坏真正的“开放性”吗?它可以扩展以应对我们面临的根本挑战吗?

入门开源

将开发者关系模型引入更多开源工作的好处之一是,它可以帮助解决为开源做出贡献过程中的最困难的问题之一:简化入门过程。

“尽管网上有很好的初学者指南和课程,但没有清晰的职业道路,”Santamaría 说。

当开发人员需要不断提高知识水平,以应对在技术等快速发展领域的就业压力时,毫无疑问,为项目做出贡献并不是许多新人的首要议题。

可以说,我们现在处于最糟糕的境地。曾经帮助很多高级开发人员学习编程的那么多社区都不在了,也没有更规范的基础支持设施可以帮助人们在行业中找到方向。

然而,Santamaría 确实提出了一些可能的前进方向:一条结构化的开源职业道路,包括“为新一代倡导良好的开源实践”,并提高高级管理层对开源的认识,以“节省开发人员的工作时间”来探索开源项目。

其他地方提到了职业生涯节点这个概念。在一篇回应 Log4j 故事的博客文章中,谷歌开发人员 Filip Valsorda 写道:“你不能从初级维护者开始,接受培训,获得经验,并期望自己最终能成长为薪酬更高的高级维护者。在今天这是行不通的。”

这些变化需要时间。在短期内,像 GitHub 上的 First Contributions 这样的项目可以为想要参与开源的人们提供一个入门渠道。

开源与“公地悲剧”

很明显,企业需要在开源中发挥更多作用。正如 Valsorda 在同一篇博文中指出的那样,“开源可持续性和供应链安全的概念出现在了每个人的幻灯片、博客和新闻稿中。大公司迫切需要开源生态系统走向专业化。”

支持使用开放技术的非盈利组织 OpenUK 的首席执行官 Amanda Brock 表示赞同:“我们不仅需要最优秀的软件——全球协作和多样化的开源软件就是这样的——而且还提供了适当的资金,以确保那些构建所有这些基础软件的人们能够维护和支持这些软件的安全性。”

Brock 列举了一些在英国的类似案例。例如,她提到了能源数字化工作组的工作。该政府组织“建议数字化能源部门的支柱应该基于开源软件打造。英国的国民健康服务体系现在也有一种开源软件优先的方法来编写它的代码,并且在不断增加对开源的依赖。”

然而,虽然基础设施项目采用开源软件方法是对这一模型的明确认可,但它们不一定能解决现有项目面临的问题,或支持那些负责维护它们的开发者。

Brock 的观点是很有说服力的,他说我们需要“改变将开源软件视为公地的观念,而是将其视为公众利益”。然而,在某些方面,这里的“公地悲剧”在于我们未能认识到“公地”和“公众利益”实际上可能是一回事。

希望开源世界仍然是一个让有创造力、思想独立的人们学习和探索的空间,同时也能创造出可以造福所有人的东西。如果我们对开源可持续性的解决方案破坏了这种核心精神,那么开源又有什么意义呢?

原文链接:https://thenewstack.io/can-open-source-sustain-itself-without-losing-its-soul

目录
相关文章
|
自然语言处理 语音技术 开发者
微软NaturalSpeech语音合成推出第三代
微软推出NaturalSpeech 3,第三代文本到语音(TTS)系统采用创新的因子化扩散模型,无需先例样本即可生成自然、高质量语音。该技术通过分解语音为内容、韵律等属性并独立处理,实现更精细控制,提高语音自然度。使用神经编解码器和因子化向量量化,以及新的因子化扩散模型,增强了语音合成的可控性和质量。在大规模训练基础上,NaturalSpeech 3在多项指标上超越现有TTS系统,并具备数据和模型扩展性。微软已通过开源项目分享研究成果,推动行业进步,但未来仍需解决多语言、少数据场景的挑战及技术伦理问题。
517 5
微软NaturalSpeech语音合成推出第三代
|
域名解析 自然语言处理 API
如何使用PageAdmin CMS网站管理系统搭建网站?
CMS(内容管理系统)是一种位于网站前台界面与后台数据库之间的软件系统,能够实现网站内容的发布、编辑、管理、维护等操作。使用PageAdmin CMS网站管理系统搭建网站,先在官网上填写相关资料,注册一个会员账户,选择模版中心选择一个...
408 3
|
人工智能 自然语言处理 算法
GPT-4 Turbo 和 GPT-4 的区别
GPT-4 vs GPT-4 Turbo: 探索OpenAI的顶级模型,GPT-4以其出色的文本生成和理解闻名,适合高端内容需求,但成本高;GPT-4 Turbo,优化版,提供相似性能但更高效、经济,适用于大规模商业应用,尤其在速度和资源效率上展现优势。用户可根据质量、效率和成本需求选择合适模型。
563 4
|
Java 测试技术 API
使用System.currentTimeMillis获取当前时间
使用System.currentTimeMillis获取当前时间
|
前端开发 JavaScript 安全
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
1685 4
|
缓存 监控 网络协议
移动端常见白屏问题优化之网络优化篇
本文将要分享的是得物技术团队针对移动端最常见的图片加载导致的端侧白屏问题,而进行的的移动网络方向的技术优化实践,希望能带给你启发。
229 2
移动端常见白屏问题优化之网络优化篇
|
人工智能
最近很火的人工智能ChatGPT可以实现“ 连续对话”机制
这篇文章介绍了人工智能ChatGPT实现连续对话机制的方法,包括如何通过传递特定的参数如conversation_id来保持对话的连续性。
最近很火的人工智能ChatGPT可以实现“ 连续对话”机制
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与未来展望
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,重点分析了神经网络模型如循环神经网络(RNN)、长短期记忆网络(LSTM)和Transformer等在文本生成、语义理解及情感分析等任务中的卓越表现。通过具体案例展示了这些模型如何有效解决传统方法难以处理的问题,并讨论了当前面临的挑战及未来可能的发展方向,为进一步研究提供了新的视角和思路。
579 5
|
XML 缓存 Java
Spring FactoryBean 的常见使用场景总结
FactoryBean 是 Spring 框架中的一个重要接口,用于自定义 Bean 的创建逻辑。常见使用场景包括: 1. **复杂 Bean 的创建**:如数据源配置。 2. **延迟实例化**:按需创建资源密集型对象。 3. **动态代理**:为 Bean 创建 AOP 代理。 4. **自定义配置**:根据特定配置创建 Bean。 5. **第三方库集成**:利用 FactoryBean 封装外部库的创建过程。
326 0
|
人工智能 边缘计算 安全
边缘计算与AI的融合:未来智能系统的关键
【5月更文挑战第24天】随着人工智能(AI)和物联网(IoT)技术的迅猛发展,数据的产生和处理需求呈指数级增长。边缘计算作为一种新兴的分布式计算范式,旨在通过在数据生成的源头即边缘设备上进行数据处理,来降低延迟、提高效率并保护隐私。本文探讨了边缘计算与AI技术结合的必要性,分析了其在实现智能化系统方面的优势,并讨论了在融合过程中面临的挑战及潜在的解决方案。