整理 | 郑丽媛

头图 | CSDN下载自东方 IC

近年来,全球开源项目数量呈指数级增长,据开源软件安全平台 SourceClear 的调查报告预测,2026 年全球开源项目数量将超过 3 亿。

然而,开源 vs 生存,如何取舍?多年以来,这个问题一直在深深地困扰着业界尤其是个人开源开发者。

截止目前,似乎仍然无解。

因患病长期失业、却仍在坚持维护开源项目

早在 2016 年,JS 红宝书原作者 Nicholas C. Zakas 不幸患莱姆病,而后长期失业,连业余兼职工作也无法进行下去。

然而多年来,他在没工作、没有收入,身患重病的情况下维护着他的开源项目 eslint (https://github.com/eslint/eslint,一款插件化并且可配置的 JavaScript 语法规则和代码风格的检查工具)。

但在现实的压力之下,他不得以在 GitHub 上发起求助(https://github.com/sponsors/nzakas
),并希望在 2020 年的某个时间能够恢复健康,并基于开源重新工作中。

现实压力下开源作者

除了 Nicholas C. Zakas ,仍有不少开源作者身处压力之下。

Bootstrap (开源地址:https://github.com/twbs/bootstrap),由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发的一款开源前端框架。或许你不了解,但全球大约五分之一的网站都在使用它,甚至 Green Day 和 Barack Obama 的 The White House 的网站设计都使用到了 Bootstrap 。

除了简约的风格受人喜爱,Bootstrap 的开源更是它流行的一大原因:任何人都可以免费使用。但与此同时,Jacob Thornton 感受到了前所未有的压力:每周都有无数的人向他和 Mark Otto 报告错误、要求新特性和给予表扬。因此,在辛苦完成白天的工作后,晚上 Jacob Thornton 还要花费四五个小时对 Bootstrap 进行管理,编写新代码。

就这样,Mark Otto 和 Jacob Thornton对Bootstrap 已经持续维护了 9 年,期间也培养了一些核心贡献者,但开源带来的压力依旧庞大,Jacob Thornton 表示,他很想逃离这个困境。

而像 Bootstrap、eslint 这样,即使项目维护者精疲力竭但还在坚持的开源项目已经是个幸事,开源代码被遗弃才是最坏的结果。

无力坚持,放弃却酿成大祸

两年前, event-stream 库的作者 @dominictarr 因缺乏时间和兴趣决定放弃维护这个库,并且将该库转让给了一个完全不认识却又想要接手的陌生人 @right9ctrl ,而 @right9ctrl 利用比特币公司曾使用过这个库的开源代码,对其进行了重写,以试图窃取加密货币。

事情发生后, event-stream 库的作者 @dominictarr 遭到了大量开发者的谴责,控诉他为何要将软件包交给一个陌生人。对此, @dominictarr 回应:起初开发这个库只是因为好玩,并不是为了利他。但开发者将维护的工作全压在我的身上,而我从维护中得不到任何东西,这个库对我来说就不再是兴趣了。并且,一开始我并没有从 @right9ctrl 身上感受到恶意,以为这是一位真心想帮助我的人。

精疲力竭的开源开发者该如何自处?

最近,新媒体 Substack 的作家 Nadia Eghbal 出版了一本书《 Working in Public 》,为了写这本书,她与数百名开源程序员进行了交谈。

从沟通中 Nadia Eghbal 意识到,开源项目代码的编写和修改需要高水平的合作。而事实上,虽然参与开源项目的开发者会有很多,但他们其实只做出了像修复 Bug 这种很小的贡献,无法实现维护项目所需要的高水平合作。因此,开源项目的维护最终还是落在了少数人的肩膀上,他们就像公众人物一样背负着众人的期望与监督,而区别是,他们从中得不到任何物质回报。

研究表明,约有 9.5% 的开源代码已被遗弃,约 25% 的开源项目可能也快被放弃。这个趋势很危险,且不说没人维护的代码易被严重破坏,光是恶意利用这一点就后患无穷。

对此,我们或许没有理由去苛责他们的半途而废,毕竟选择开源就是自发,那放弃也是权利,毕竟持续用爱发电总会有筋疲力尽的那天。

几个月前,阿里巴巴技术副总裁贾扬清在知乎上针对“如何看待国内开源现状”时,回答:

一方面,开源是热情驱动的,但是另一方面,我们绝对不能饿死雷锋。所以一定要有体系化的能力沉淀,有很好的流程,把大家做开源的阻力做到最小。

可目前而言,如同一位网友的评论,开源开发者的保护组织还是不够普及。

关于组织上的,感觉国内现在缺少类似 num focus 这样的专业保护伞组织。大公司做往往还是要为公司着想,缺乏第三方的中立性。最后从高校/机构萌芽的项目就会慢慢死掉或者变成某个公司的项目。

而享受开源代码成果的我们可能能做的就是如亚马逊首席科学家李沐所提到的“契约精神”。

我觉得最大的一点是得有契约精神:我邀请你来用我新鲜出来的代码,那么我会负责回答你的问题,并帮助合并你的代码提交请求。这个也是好几个回答提到的”开源维护“。

最后,开源开发者未来将如何自处,开源的枯竭局面又该如何挽回,这些亟待解决的问题,至今可能还没有行之有效的解决方案。可能给予物质上的补偿会有所帮助,可这又会不会改变了开源的初心?

看到这的你,是否可以提一些建议来帮助疲惫的开源开发者呢?

参考链接

https://www.wired.com/story/open-source-coders-few-tired/

https://www.zhihu.com/question/366370371/answer/975420094

更多精彩推荐
☞“那个工作 10 年没跳槽的人,混不下去了”
☞奔溃啦~有什么软件适合 Java 程序编写?| 每日趣闻
☞任正非:新荣耀要做华为最强竞争对手;迄今最小原子存储单元面世;PHP 8 发布|极客头条
☞赠书 | 新手指南——如何通过HuggingFace Transformer整合表格数据
☞想在边缘运行计算机视觉程序?先来迎接挑战!
☞《中国区块链发展报告(2020)》导读:全球区块链政策及监管重点趋势
点分享点点赞点在看

开源代码却无奈遗弃,濒临奔溃的开源开发者们!相关推荐

  1. 用开源代码如何建立网站_糖尿病患者找到开源并建立自己的医疗设备

    用开源代码如何建立网站 Dana Lewis是2018年开源女性奖的获奖者! 这是她关于开源如何在很大程度上改善她的健康的故事. 达娜患有1型糖尿病,市售的医疗设备使她不及格. 她用来管理血糖的连续葡 ...

  2. 区块链 java 开源_详细介绍Java区块链开源代码背后的内容

    什么是Java区块链开源代码?它是一种分布式分类帐技术,将所有不同的属性放在一起.那么Java区块链开源代码就可以通过不同的共识机制,使所有添加的数据不变.2015年之前,估计大家都知道的区块链的申请 ...

  3. 随想录(开源代码的学习方法)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 一.历史     开源代码作为一种特色的产物,随着物联网的进步得到了前所未有的发展.一开始,很 ...

  4. 命令模式在开源代码中的应用

    命令模式的作用:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开. 案例 JDK 中的线程 java.lang.Thread,使用了命令模式. Thread 类的构造方法可以接收实现 ...

  5. 怎样阅读一份PHP开源代码

    怎样阅读一份PHP开源代码 很多朋友估计都会在网上下载开源的PHP源代码,PHP源代码怎么用很简单:将PHP源代码拷贝到你的环境下,在浏览器中输入地址到源代码的install目录按照步骤安装就OK啦! ...

  6. Mit Mini Cheetah开源代码开发环境搭建

    MIT Mini Cheetah–开源代码仿真环境搭建 摘要 2019年以来,关于四足机器人的报道越来越多,我比较关注的是MIT mini cheetah.Mini Cheetah的外表是很可爱的,它 ...

  7. android 抓取native层奔溃

    使用android的breakpad工具 使用这个工具需要下载Breakpad的源码,然后进行编译,编译之后会生成两个工具 我们使用这两个工具来解析奔溃的位置.这里我们可以下载已经编译好的工具 下载地 ...

  8. 苹果开源代码中惊现“wechat”,老外注释的吐槽亮了!

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 每个科技大厂的开源项目,几乎都是各领域开发者最重要的研究学习 ...

  9. 惊呆,一条sql竟然让oracle奔溃了

    一条sql就能让oracle挂了,真的是不敢相信啊,前几天生产上确实出现了这样一个故障,我们来一起做一个事件回放. 系统介绍 系统架构见下图: application1和application2是一个 ...

最新文章

  1. 工具04_SQL Trace/DBMS_SYSTEM
  2. RPC实现Provider服务端业务逻辑
  3. 10-5 5-5 查询只卖三种不同型号PC的厂商 (20 分)
  4. 张鹏 html 笔记,传智 张鹏 html+css 课程 笔记2(吐血整理)
  5. 维基百科文件解析成中文遇到的变量类型、编码问题
  6. python-字符串基础
  7. 【Spring-AOP】Spring提供的AOP开发方式和底层AOP开发方式
  8. 中国城市公园规划建设行业运行状况与趋势预测展望报告2022-2028年版
  9. VirtualBox
  10. C语言,快速隐藏/显示桌面图标和任务栏
  11. 物联网产品的平台架构
  12. MySQL三个表的连接查询
  13. 搬砖:面向对象六大原则
  14. 南柯服务器压力,从纳兰性德《木兰花》中看网络暴力和舆论压力带来的抑郁现象...
  15. Android IBinder的linkToDeath介绍
  16. 重要的不是你正在做什么,而是你在想什么
  17. 彩云在南,本命年在北(记云南之旅)
  18. requests的session方法
  19. 优秀企业文化学习(学习节选)
  20. Brainstorm + Fieldtrip IEEG定位及分区教程

热门文章

  1. 【知乎热议】没有顶会的CV/NLP方向的博士生毕业出路在哪里?
  2. VS Code上也能玩转Jupyter Notebook,这是一份完整教程
  3. SAP RETAIL MM42进入商品的销售视图系统提示: No basic purchase price relevant to pricing found with schema RM0000
  4. Layman’s explanation of SAP IS Retail concepts: assortments and listing
  5. 智能新经济的AI平台:左手技术,右手行业
  6. 对Reformer的深入解读
  7. 东京奥运会将利用 AI 识别可疑人员
  8. SAP MCH1表和MCHA表更新逻辑
  9. 干货 | 拒当调参师工程师:超参数搜索算法一览
  10. 人工智能不确定性推理,柯南看的懂么?