上次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——谁、如何参与开源?的更多相关文章

  1. 2017云计算开源峰会 你是想听Linux谈开源还是想听OpenStack谈开源?

    2017年,善于把握机遇的企业们不是正在开源,就是走在去开源的路上-- 开源是不是就意味着免费? 开源企业就是要当"活雷锋"? 开源项目究竟如何运作?如何参与开源社区? 如何获得最 ...

  2. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...

  3. 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  4. 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧

    注意:有网友提出部分项目停止更新的事情,这个问题我特意注意过,很多都是小功能组件,功能稳定,没有bug,没更新是正常的.够用就行了.其次技术支持的事情,对开源免费来说,不能太强求,这里发布的都是小功能 ...

  5. SourceTree的基本使用---团队开发/参与开源

    1.实践入门-团队开发 如果你看到第二部分关于“参与开源”的内容,而你的需求是团队开发,你会发现几个不方便的地方: 1.1.组长建项目,组员每次提交,都需要组长审查同意merge 如果你觉得麻烦,组长 ...

  6. HTTPDNS开源 Android SDK,赋能更多开发者参与共建

    为赋能更多开发者参与共建,阿里云HTTPDNS开源 Android SDK,iOS SDK也在做开源准备,不久也将开放给开发者.HTTPDNS是阿里云移动研发平台面向多端应用(移动端APP,PC客户端 ...

  7. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程

    目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...

  8. 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金🏆!这份《OpenTiny 开源贡献指南》请收好🎁!

    大家好,我是 Kagol. 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作. 这里给大家简单介绍下开源之夏. 开源之夏是由中科院软件所& ...

  9. 从热爱到深耕,全国Top10开源软件出品人手把手教你如何做开源

    摘要:DTT直播邀请到管雷鸣与广大开发者分享"如何在开源领域找到适合自己的路". "想象一下,你写的代码被越来越多的人使用,并极大地帮助他们提高了开发效率和稳定性.&qu ...

  10. 积极参与开源项目,促进.NET Core生态社区发展

    今天早上在微信群里聊天聊到百度的SDK 已经支持.NET Core, 百度已经在3月份就支持了,想起当时还是我在他们的github上提的issue: https://github.com/Baidu- ...

随机推荐

  1. lib,dll的位置

    在添加第三方库的时候需要注意放置的路径,注意区分x86和x64的文件夹路径以及VS的版本,不要放错了 lib的位置:(需要先将lib放到该路径下,不然会说找不到.lib)C:\Program File ...

  2. C++ 析构函数的调用顺序

    如果指针指向基类,但是指针在运行时指向派生类,则该基类必须具有虚拟析构函数,以便破坏派生类.如果没有虚拟析构函数,则只会运行基类的析构函数. 比如: Base* basePtr; basePtr = ...

  3. 好用的OCR文本识别工具

    之所以会用到OCR工具,是因为在看一些扫描版的PDF文档时,有时候需要复制粘贴一些文字,特别是技术性文档,对于一些命令或者代码片段需要复制出来执行验证. 网络上有许多推荐OCR工具的文章,但是大多数都 ...

  4. RK3568开发笔记(一):瑞芯微RK3568芯片介绍,入手开发板的核心板介绍

    前言   目前主流国产芯片为RV11XX.RK33XX.Hi35XX系列,本系列开启RK3568系列的技术教程笔记分享.  本篇主要介绍RK3568芯片和入手开发板的核心板详细介绍.   RK3568 ...

  5. 手动下载sdk及avd

    有时候下载sdk的时候报各种错误导致无法下载,如图 那么可以离线下载,到浏览器或IDM中下载图中提示的url链接,将第一个下载的包即sources的解压后放到SDK目录下的sources目录,并重命名 ...

  6. 【LeetCode递归】括号生成,使用dfs

    括号匹配 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例 1: 输入:n = 3 输出:["((()))","(() ...

  7. 04、Etcd中常见的概念

    本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 上一章节,我们学习了 Etcdctl 的使用,从中窥探了 Etcd 的强大之处.从这一节开始,后面的内容基本上都是偏理论的东西,争取在看 ...

  8. 【Azure 环境】使用 az ad group create 时候遇见 Insufficient privileges to complete the operation

    问题描述 使用China Azure,通过Azure CLI 创建AAD组报错,提示权限不足 Insufficient privileges to complete the operation # 使 ...

  9. 【Azure 应用服务】Azure Durable Function(持久函数)在执行Activity Function时候,因为调用函数名称错误而导致长时间无响应问题

    问题描述 在使用Azure Durable Function函数,调用函数链模式来调用多个Activity Function. 函数链:https://docs.azure.cn/zh-cn/azur ...

  10. Linux_Centos_yum报错总结

    ​ 此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...