社区重要还是代码重要?

news2024/12/23 17:17:07

Apache Software Foundation,简称ASF,是世界范围内知名的软件基金会。旗下有很多世界知名的开源软件,比如Apache HTTP Server、Subversion、Hadoop等。ASF在社区治理上也有自己独特的理念,其中有一条中国开源软件圈子比较熟知,就是Community Over Code,通常中文会翻译为社区大于代码。

在Apache基金会官网上可以查到对这一条的解释:The maxim "Community Over Code" is frequently reinforced throughout the Apache community, as the ASF asserts that a healthy community is a higher priority than good code. Strong communities can always rectify problems with their code, whereas an unhealthy community will likely struggle to maintain a codebase in a sustainable manner. ASF的观点认为健康的社区比好的代码更重要,强大的社区总是可以纠正代码中的问题,而不健康的社区可能会难以以可持续的方式维护代码。

中国最近这几年也有不少项目捐献给了ASF,国内的开源社区在谈论到开源治理的时候,也常常会提到ASF的社区大于代码这一理念。那么如何来理解这一理念呢?我在网上做了一些搜索,找到了ASF的董事Shane的一个分享:《The Apache Way - Effective Open Source Project Management》。在这个PPT里面Shane阐述了The Apache Way,他分享的内容比较多,我重点说一下和社区大于代码这一部分相关的内容:

他开篇就讲到,Apache Way 是 ASF 开发的一套行为和实践,聚焦于通过稳定治理和鼓励新贡献者来促进开源项目的长期成功。谈到社区这个概念,他认为社区包含了开发者、内容创作者、测试者、用户。社区是属于大家的,不属于某一个人。和社区相对立的,是Jerks,翻译过来就是混蛋。在ASF看来,社区是不能有混蛋存在的。他为此作了一些解释:

  • Apache社区鼓励集体的贡献,而非独狼式的贡献者;
  • 多元化的社区才能吸引到更多的贡献者;
  • PMC成员组里面不允许有仁慈的独裁者;
  • 以个体的身份而非雇员的身份参与到开源项目中;
  • 企业是不允许参与到ASF的;
  • 每个项目都是独立的;
  • 每一个志愿者的权力都是相同的;
  • 每一个人需要作出贡献来获得相应的Merit(不是很好翻译,类似于功绩、影响力);
  • Merit可以带来一些权力,比如代码的提交权限、投票权等等;
  • 做得越多,可以有更多的权力;
  • ……

更具体的大家可以参考: https://shaneslides.com/apachecon/TheApacheWay-Intro-ApacheConNA2017.html

我尝试来总结一下,ASF的目的是希望通过一系列社区、民主、自治的游戏规则来保证某一个开源项目不被某一个人或者组织所控制,从而实现长期发展的目的。从这个角度来讲,他们所提的社区大于代码也就很容易理解了。哪怕你是这个项目最开始的发起人,但当你把代码捐献给ASF之后,你就要按照ASF的游戏规则来玩。如果你想推动一些事情来发展,你需要做各种的贡献来获得相应的权力。用一张图来表示这种模型的话,大概是这样一个倒金字塔的形状:

最基础也是最核心的是代码的核心作者,然后是代码贡献者,然后是Bug的提交者,再其次是用户。所以从这个角度来讲,确实也是社区大于代码,因为社区是在代码之上的。:)

那我们来看看ASF旗下的项目实际的运作情况如何呢?我从ASF的github仓库里面查询了几个比较有代表性的项目,来看他们的贡献者的活跃度:

Apache Kylin是第一个中国人主导的顶级项目,我还有幸参加过他们的宣讲会。自Kylin以后才陆续有中国的开源项目捐献给ASF。但从数据来看,这个项目已经基本上不更新了。排名前两位的关键提交者已经基本上不参与这个项目了。

再来看看Echarts项目,情况稍好一些,但2023年更新也明显减少了。

当然也有项目会比较活跃,比如kafka。但无一例外,都是很少数的几位关键Commiter贡献了绝大部分的代码。

最起码有几点是可以达成共识的:

  • 即使按照Apache之道来运营,也没有办法保证项目的长久健康运营。
  • 运营比较活跃的项目,核心的贡献也是由少数的几位贡献者完成的。 
  • 世界上也有更重量级的项目不是按照Apache之道来运作的,比如Linux。

那么我们抛开具体的场景来谈社区大于代码,就有些空泛,会让开源软件的核心作者有些无所适从。既希望核心作者努力更新代码,保证软件更新,又要遵循Apache之道来约束自己的权力。那带来的问题就是核心作者做事就会受各种约束,很难快速决策、快速行动。长久以往,核心作者的热情和动力如何保证呢?很难!Shane的分享里面也专门提到了,Apache社区里面是不允许独狼存在的,也不允许仁慈的独裁者存在。但真正让改变发生,推动历史进程的,往往就是少数关键人

如果我们从社区形成的先后顺序来看,也许这个问题就更容易有答案。一个开源项目的缘起往往是某一个人在自己的工作过程中发现了一些问题,然后写了一些代码来解决这些问题。然后他将这些代码开源出来,形成了一个项目。然后这个项目陆续被有相同问题的用户发现,然后围绕这个项目逐渐形成了社区。社区重要不重要?重要。代码重要不重要?重要。但更重要的是核心的作者。因为只有核心的作者才能真正推动项目进展,才能保证代码的更新。持续更新的项目,才能为用户带来价值,才能形成社区。所以如果只是空泛地谈社区大于代码,就好像抛开了基础需求谈人的高层次需求一样,不切合实际。

所以我更希望把前面的倒金字塔旋转九十度,一个好的社区一定由核心的贡献者来带领,吸引更多的贡献者和用户来参与,这样才是一个健康发展的路子。然后话题就回到,如何保证核心的贡献者的持续输出呢?我的答案就是一定要做商业化的运营。大家可以看我之前公众号文章写得关于开源商业化方面系列的文章。

备注:封面图片来自https://www.apache.org/foundation/press/kit/community_over_code_logo.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1633643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

M2 Mac mini跑Llama3

前言 在4-19左右,Meta 宣布正式推出下一代开源大语言模型 Llama 3;共包括 80 亿和 700 亿参数两种版本,号称 “是 Llama 2 的重大飞跃”,并为这些规模的 LLM 确立了新的标准。实际上笔者早就体验过,只不过自己电脑没什…

分享三款可以给pdf做批注的软件

PDF文件不像Word一样可以直接编辑更改,想要在PDF文件上进行编辑批注需要用到一些专业的软件,我自己常用的有三款,全都是官方专业正版的软件,功能丰富强大,使用起来非常方便! 1.edge浏览器 这个浏览器不仅可…

使用 Tess4J 实现本地与远程图片的文字识别

pom: <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>5.11.0</version></dependency> 部分代码: package com.zy.datapickcli.sys.controller;import net.sourceforge.tes…

等保测评有那些流程?为什么要做等保

根据《网络安全法》规定&#xff0c;网络运营者应当按照国家的网络安全技术标准和要求&#xff0c;采取技术措施保障网络安全&#xff0c;避免网络安全事件的发生。而等保测评是国家对企事业单位进行信息系统安全等级评定的一项重要制度&#xff0c;通过等级测评&#xff0c;可…

Java 面向对象—重载和重写/覆盖(面试)

重载和重写/覆盖&#xff1a; 重载&#xff08;overload&#xff09;&#xff1a; Java重载是发生在本类中的&#xff0c;允许同一个类中&#xff0c;有多个同名方法存在&#xff0c;方法名可以相同&#xff0c;方法参数的个数和类型不同&#xff0c;即要求形参列表不一致。重载…

场景文本检测识别学习 day07(BERT论文精读)

BERT 在CV领域&#xff0c;可以通过训练一个大的CNN模型作为预训练模型&#xff0c;来帮助其他任务提高各自模型的性能&#xff0c;但是在NLP领域&#xff0c;没有这样的模型&#xff0c;而BERT的提出&#xff0c;解决了这个问题BERT和GPT、ELMO的区别&#xff1a; BERT是用来…

笑铺日记:为啥她家的顾客都爱办会员?

现在这个年代&#xff0c;做啥生意都要有自己的会员体系&#xff0c;不然生意很难做长久&#xff0c;哪来的那么多新客&#xff1f; 很多老板们想做会员营销&#xff0c;不过都停在了第一步——会员卡发不出去。推荐办卡&#xff0c;顾客一看到实体卡就反感&#xff0c;就连免…

网络安全之文件上传漏洞(上篇)(技术进阶)

目录 一&#xff0c;什么是文件上传漏洞&#xff1f;文件上传漏洞会造成什么危害&#xff1f; 二&#xff0c;文件上传靶场upload-labs闯关 Pass-01 Pass-02 Pass-03 Pass-04 Pass-05 Pass-06 Pass-07 ​Pass-08 Pass-09 Pass-10 总结 一&#xff0c;什么是文件上传漏洞&…

学习Java,下载Java和工具

下载Java地址Java17 https://www.oracle.com/cn/ 下载notepad 的博客 https://blog.csdn.net/xnxqwzy/article/details/132243264 环境变量配置

【服务器部署篇】Linux下快速安装Jenkins

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

2024LarkXR新增功能系列之五 | 单端口支持多并发

实时云渲染技术在为虚拟现实、游戏、和各种应用程序提供强大的渲染支持的同时&#xff0c;也带来了一些网络和运维上的挑战。在传统的设置中&#xff0c;实时云渲染推流技术需要为每个视频流单独占用服务器的一个端口。这种方法在多用户同时访问的情况下可能会导致端口资源的快…

为什么选择誉天云服务HCIE课程

誉天云服务HCIE课程亮点&#xff1a; 深度融合云原生 包含原生K8s和docker内容&#xff0c;引入isito和ASM功能进行微服务治理&#xff0c;结合Linux功底设计云上性能优化&#xff0c;和架构设计。师资力量强大 课程由两名5HCIE认证讲师授课&#xff0c;认证辅导由已通过HCIE-C…

flash_attn安装

flash_attn安装 1. cuda-nvcc安装 https://anaconda.org/nvidia/cuda-nvcc2. torch安装 # https://pytorch.org/ # 找到对应cuda版本的torch进行安装 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1213. flash_attn安装 访问…

头条系统-01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)

文章目录 环境搭建、SpringCloud微服务(注册发现、服务调用、网关)1)项目介绍2)项目概述2.1)学习到的技术内容2.2)项目课程大纲2.3)项目概述2.4)项目术语2.5)业务说明 3)技术栈4)nacos环境搭建4.1)虚拟机镜像准备注&#xff1a; 4.2)nacos安装 5)初始工程搭建5.1)环境准备连接G…

LT1964ES5-5 低压差稳压器 200mA 贴片SOT-23-5 使用案例

LT1964ES5-5 微功耗 线性稳压器 LT1964ES5-5 是一款微功耗、低噪声、低dropout的负电压线性稳压器。它的功能是将输入电压转换为稳定的负输出电压&#xff0c;范围在-1.22V到-20V之间&#xff0c;最大输出电流为200mA。该器件特别适用于需要精密调节和低噪声电源的电路中&#…

[详解]Spring AOP

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Spring学习之路&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 什么是AOP? Spring AOP 快速入门 Spring AOP核心概念 切点(Point…

普乐蛙元宇宙VR体验馆设备集体亮相VR文旅景区展

普乐蛙全国巡展又双叒叕开始了! 这次来到的是“好客山东”↓↓ 山东2024休闲旅游产业展 4月25日至27日&#xff0c;2024休闲旅游产业展在临沂国际博览中心举办。本次展会以“潮购文旅好品&#xff0c;乐享时尚生活”为主题&#xff0c;汇聚全国文旅产业上下游500多家企业、上万…

SkyWalking 自定义Span并接入告警

图容易被CSDN吞掉&#xff0c;我在掘金也发了&#xff1a;https://juejin.cn/post/7361821913398837248 我就是这么膨胀 最近在做 OpenAI API 套壳&#xff0c;当我使用 okhttp-sse 这个库进行流式内容转发的时候&#xff0c;我发现有些回调方法 SkyWalking 不能抓取到。这就…

Java---数据类型与变量

1.字面常量 字面常量就是我们经常所说的常量&#xff0c;常量即在程序运行期间&#xff0c;固定不变的量。且常量是无法改变的&#xff0c;如果我们的代码有改变常量的操作&#xff0c;程序就会报错。 1.1字面常量的分类 字符串常量&#xff0c;整型常量&#xff0c;浮点数常…

Windows命令行基本命令

目录 什么是相对路径和绝对路径&#xff1f; 一、目录&#xff08;文件夹&#xff09;和文件操作 1.cd命令 用于切换目录 2.dir命令 用于显示目录和文件列表 3.md或mkdir命令 创建文件&#xff0c;也可以创建多级子目录 4.rd命令 用于删除目录 5.move命令 用于移动…