5W1H聊开源之Who和How——谁、如何参与开源?
上次Who的主体是谁“发明”了开源,这一次主体转换,来看看开源发明之后,还有哪些人为开源做贡献?作为普通程序员的我们,又能以怎样的形式参与到开源项目中?
很多人都以为参与开源是一件很高门槛的事情,必须要通过代码贡献才算是开源项目的参与者或贡献者,其实这是一个很大的理解误区。一个开源项目其实就是一个社区,在社区里面会包含各种各样的角色,开源项目的角色有Contributor(贡献者)、Committer(提交者)、Maintainer(维护者)、User(用户)。大多数人对参与开源的理解可能局限在狭义的前两者,而对于这个问题第一反应可能也是直接参与到开发中,才是参与了开源项目。
User
实际上,除了最直接的Contributor和Committer,其他人也可以通过各种各样的方式对项目作出贡献。如禅道项目管理软件的用户们,就是以User的身份参与到了禅道这个开源项目中,对禅道的使用、标记、推荐乃至提交Bug、提供使用反馈,都是一种对开源项目的参与和贡献。
比如在 Linux 内核开发中,到 5.9 版本发展到现在已经有 2.4 万开发者参与其中。没错,他们当时都是这个开源项目的参与者。
Contributor
开源项目的代码、文档和作品都是由项目社区的成员创建、测试、使用、讨论和优化构成。这些过程可划分为各种任务,需要不同技能、不同参与程度及不同技术专长水平。所以,如果想要参与到开源项目中成为真正的贡献者,有很多个活动可选择。比如对该项目发出过pull
request并合并到项目、测试和报告或者修复 Bug、编写和更新软件、撰写或更新文档、翻译、向他人推荐该项目、组织线下活动等。
Committer
Committer通常在项目日常运营过程中通过各种贡献积累,得到项目核心维护团队的提名和认可,最终从一般贡献者成为提交者,并且在开源项目中拥有更高的权限,他们是拥有代码仓库写操作权限的开发者。一般情况
Committer 有代码仓库的权限可以直接提交代码,通常也有权 Review
(检视)别人的代码决定是否可以合并提交。作为一个开源项目的参与者,能够成为 Committer
本身就是一种荣誉,也是鼓励大家能够持续参与、并保持社区健康的很重要的原因。比如成为Apache的Committer可能是很多开源项目工程师的小梦想。
Maintainer
致力于一个项目并促进该项目发展的用户。常常是该开源项目的发起者或owner,也可以是一个团队。他们在开源项目中拥有对此项目的最高决策权,决定项目的功能、战略、发展方向。在
Apache 软件基金会的组织架构体系中,每个项目都有独立的 PMC(项目管理委员会)进行管理,PMC
成员为项目提名并选举新提交者(Committer),PMC 成员还负责提名并投票新的 PMC 成员等。
参与开源的方式
- 直接参与开源项目的开发
- 参与开源项目的测试
- 为开源项目提交Bug、修复Bug
- 开发开源项目的插件
- 参与开源项目推广
- 参与开源项目的文档翻译
除了以上开发者作为个体参与的方式,还可以在商业公司参与开源项目,这样在为开源做出贡献的同时,也可以得到物质报酬,不至于陷入经济窘境。有很多商业公司就是开源项目的发起者或者主要参与者。比如近期很火的OpenHarmony就是由开放原子开源基金会(OpenAtom
Foundation)孵化及运营的开源项目,华为是项目发起者。那么华为公司参与到这个开源项目中的人员,同时也都是开源项目的参与者。
开源这个术语起源于软件开发的语境,用于指定创建计算机程序的特定方法。然而,今天,“开源”可以理解为一种更广泛的价值观——开放交流、协作参与、快速原型设计、透明、任人唯贤和面向社区的发展原则。在其他领域开源精神依然存在,开源的精神本质,就是“我做了一个东西,大家来用吧!”这样一种Geek的精神,同时也有让世界变得更加美好的愿望。
If you find it terrible, make it perfect.
5W1H聊开源之Who和How——谁、如何参与开源?的更多相关文章
- 2017云计算开源峰会 你是想听Linux谈开源还是想听OpenStack谈开源?
2017年,善于把握机遇的企业们不是正在开源,就是走在去开源的路上-- 开源是不是就意味着免费? 开源企业就是要当"活雷锋"? 开源项目究竟如何运作?如何参与开源社区? 如何获得最 ...
- 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
注意:有网友提出部分项目停止更新的事情,这个问题我特意注意过,很多都是小功能组件,功能稳定,没有bug,没更新是正常的.够用就行了.其次技术支持的事情,对开源免费来说,不能太强求,这里发布的都是小功能 ...
- SourceTree的基本使用---团队开发/参与开源
1.实践入门-团队开发 如果你看到第二部分关于“参与开源”的内容,而你的需求是团队开发,你会发现几个不方便的地方: 1.1.组长建项目,组员每次提交,都需要组长审查同意merge 如果你觉得麻烦,组长 ...
- HTTPDNS开源 Android SDK,赋能更多开发者参与共建
为赋能更多开发者参与共建,阿里云HTTPDNS开源 Android SDK,iOS SDK也在做开源准备,不久也将开放给开发者.HTTPDNS是阿里云移动研发平台面向多端应用(移动端APP,PC客户端 ...
- 如何参与开源项目 - 细说 GitHub 上的 PR 全过程
目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...
- 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金🏆!这份《OpenTiny 开源贡献指南》请收好🎁!
大家好,我是 Kagol. 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作. 这里给大家简单介绍下开源之夏. 开源之夏是由中科院软件所& ...
- 从热爱到深耕,全国Top10开源软件出品人手把手教你如何做开源
摘要:DTT直播邀请到管雷鸣与广大开发者分享"如何在开源领域找到适合自己的路". "想象一下,你写的代码被越来越多的人使用,并极大地帮助他们提高了开发效率和稳定性.&qu ...
- 积极参与开源项目,促进.NET Core生态社区发展
今天早上在微信群里聊天聊到百度的SDK 已经支持.NET Core, 百度已经在3月份就支持了,想起当时还是我在他们的github上提的issue: https://github.com/Baidu- ...
随机推荐
- Spring rce CVE-2022-22965
原理大致是这样:spring框架在传参的时候会与对应实体类自动参数绑定,通过"."还可以访问对应实体类的引用类型变量.使用getClass方法,通过反射机制最终获取tomcat的日 ...
- webrtc 渲染音频时遇到的问题
有用户反馈连麦时,直播间会有电流声,后面排查发现是 webrtc 内部播放器渲染音频时,用户的播放设备不支持 48000hz 采样率(我们传输的音频采样率都是 48000hz),导致音频数据受损而出现 ...
- GDI实现透明菜单位图
case WM_CONTEXTMENU: { m_hMenu = CreatePopupMenu(); g_BitMap = (HBITMAP)LoadImage(NULL, L"1.bmp ...
- 【Android逆向】frida 破解 jwxdxnx02.apk
apk 路径: https://pan.baidu.com/s/1cUInoi 密码:07p9 这题比较简单,主要是用于练习frida 1. 安装apk到手机 需要输入账号密码 2. 使用jdax 查 ...
- Python2升级到Python3
操作系统环境:CentOS Linux release 7.4.1708 (Core). 系统默认Python版本为2.7. 升级前的版本信息: [root@cch-spider-web1 ~]# l ...
- deque双端队列
# 支持从任意一端增加和删除元素 d = collections.deque() d.extend('abcdefg') d.append('h') d.extendleft(range(6)) # ...
- python装饰器保留原有函数名称和属性functools.wraps()
# python装饰器在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,python的functools包中提供了一个叫wraps的decorator来消 ...
- 扣子(coze.cn)| 由浅入深,手把手带你实现Java转型学习助手
扣子(coze.cn)是一款用来开发新一代 AI Chat Bot 的应用编辑平台,无论你是否有编程基础,都可以通过这个平台来快速创建各种类型的 Chat Bot,并将其发布到各类社交平台和通讯软件上 ...
- 【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided
问题描述 在App Service For Linux 中,部署NodeJS应用,应用启动失败. 报错信息为: 2023-08-29T11:21:36.329731566Z RangeError: I ...
- 【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
问题描述 使用 azure-spring-boot-starter-storage 来上传文件到 Storage Blob中,并把应用部署到Azure 中国区的Spring Cloud服务后,调用上传 ...