其他分享
首页 > 其他分享> > 拥抱开源指南

拥抱开源指南

作者:互联网

本文作者:Likyh

个人主页:https://github.com/likyh

拥抱开源指南

近年来,开源正在变得越来越火,在很多开发者眼中,「开源」也是非常极客的体现。同时参与开源项目也能给职业发展带来巨大的好处。可一些小伙伴却因为不知道参与的方法和途径没能参与,这里就向大家介绍一下作为开发者,可以怎么拥抱开源软件,以及怎么成为大家认可的开源贡献者。

当然,本文会更多的从大的背景知识上进行叙述,关于代码提交的详细步骤,可以看看这一篇文章:https://mp.weixin.qq.com/s/b1mKPgOm1mnwsBbEBDRvKw

什么是开源软件

开源是源代码可以任意获取的计算机软件,任何人都能查看、修改和分发他们认为合适的代码,但这并不意味着可以使用源代码而没有任何著作权或发行权的约束,我们接触到的开源软件一般都有对应的开源许可证(Open Source License)对软件的使用、复制、修改和再发布等进行限制。许可证即授权条款,开源许可证就是说明这些限制的文件,常见的开源许可证主要有 Apache、MIT、BSD、GPL、LGPL、MPL、SSPL 等。

下面,我们通过一张表来简单了解一下常见宽松开源许可证之间的区别:

常见开源许可证之间的区别

(图片来自: https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

其中,Apache 许可证(Apache License)是目前全球最大的开源软件基金会之一ASF (Apache Software Foundation) 发布的License。这是一个最初为 Apache http 服务器而撰写。此许可证最新版本于 2004 年 1 月发布,并要求所有ASF的项目均采用此项License。

寻找运行良好的开源项目

目前,开源项目主要是两类,一类由团队自行维护,一类由特定的基金会运行。现在大部分项目均托管在 GitHub 上,因此在GitHub上直接搜索点赞较高较活跃的项目,往往就是一个不错的选择。比如想参与数据分析相关的项目,可以在GitHub搜索 data analyzes,注意观察项目最近的提交时间和issue数量,更新快说明项目成员活跃,有issue说明是一个正在快速发展的项目,更适合参与。

image

第二种寻找方式,由开源基金会维护的运行良好的项目,还可以在对应的开源基金会官网找到。

比如Linux基金会的项目地址:https://www.linuxfoundation.org/projects/

Linux基金会的项目地址

比如CNCF的项目页:https://landscape.cncf.io/

CNCF的项目页

比如ASF的项目页:https://projects.apache.org/projects.html

ASF的项目页

最后,还有一些第三方的评估面板,从一些独特的视角了解现存的开源项目。 比如ossinsight:https://ossinsight.io/collections/open-source-database ,可以了解本月点赞最多的项目有些什么, ossinsight 再比如从 DevLake 的 OSS 项目面板 更加深入的了解项目,这都是了解开源项目运行状况的有效途径。 devlake oss

Apache开源软件基金会

因为笔者更了解 ASF ,所以这里就对它做一些更详细的介绍。

Apache 开源基金会目前维护着380余个开源项目,但一年的开销仅一百多万美元左右。这是一个非常低的数(而其他基金会比如Linux基金会,每年开销在上亿美元),平均每个项目仅2000余美元,这就决定了Apache的开源项目更依赖社区和开源贡献者,在Apache社区中,「Community over Code」即社区先于编码体现得淋漓尽致。Apache 基金会每年的支出其中80%用在基础设施,其余会用在营销、宣传和品牌管理服务,研讨会和发展社区,法律咨询等方面,而其他诸如日常维护、编码等工作均由各个项目的成员维护。

Apache开源项目中,一般有如下几个基本的角色:

参与项目讨论

一旦选择好一个开源项目后,我们又该如何找到组织呢?

首先是阅读官方文档,全面了解该项目的架构设计文档和解决的问题,之后可以尝试参与项目日常的讨论。尽管在微信群中提问很方便,但 Apache 项目的大部分讨论需要公开地在邮件列表中进行,方便所有人查看及查询,因此我们也需要了解如何参与 Apache 的邮件讨论。

Apache下面的每一个项目都有自己的邮件列表,同时分不同的邮件组,以Apache DevLake为例,有如下订阅列表:

邮箱 用途
user-subscribe@devlake.apache.org 订阅该邮件可以参与讨论普通用户遇到的问题
dev-subscribe@devlake.apache.org 订阅该邮件可以参与讨论开发者遇到的问题
commits-subscribe@devlake.apache.org 所有的代码的提交变动信息都会发到该邮件

具体操作是首先给dev-subscribe@devlake.apache.org发一封邮件,等收到确认邮件后再次确认即可。

添加后就可以收到所有开发讨论的信息了,另外也可以关注官网的 maillist(https://lists.apache.org/list.html?dev@devlake.apache.org) 查看全部历史邮件。

另外,大部分项目会有一些线上的聚会,往往可以在Readme页面找到,参与线上聚会可以更直接的获取所需的信息,也能有机会和项目PMC直接交流。

向开源项目反馈问题

如果在项目的使用中,遇到了 bug,或者希望撸起袖子修改某个功能点,但这个功能点需要进一步讨论。可以在前面的邮件中发起讨论,当然也可以在 GitHub 的 issue 中做一个较正式的记录。

一般的项目都会针对不同的目的,提供一些 issue 创建的模板。

create issue

常见的类型有:

提出一个清晰明了的 issue 往往会让社区的其他成员更愿意响应你的号召,相信我,这会是一个非常享受的过程~

成为项目的贡献者

在参与讨论的基础上,只要能在 GitHub 社区中帮助验证一些发布的新功能或者提一些建议或者缺陷,或者修改源码,就能成为该项目的贡献者(Contributor)。

刚参与项目时,可以考虑编写文档,或完善一些模块的单元测试,或者进行一些简单编码工作。比如可以在 GitHub Issues 列表中寻找带有good first issue标记且暂未被认领的事情,这往往是社区维护者为了引导贡献者专门创建的issue,很适合作为第一个提交。完成第一个提交后,可以再去看看其他open的issue并解决。

目前开源项目一般采用 Git 来管理源代码,如果你从未使用过代码管理工具的话,可以现在网上寻找教程了解,比如:https://www.liaoxuefeng.com/wiki/896043488029600 。一般的提交流程是:先 fork 对应的项目,在 fork 项目提交代码后,向开源项目发起代码合并请求等待合并。

需要注意的是,任何代码提交后,都不会立刻合并,需要寻找社区维护者 Review 后才会进入主干。

编写好代码的注意事项

图片来自网络

代码不是写完就好,还需要其他人阅读的。因此,写出赏心悦目的代码很值得点赞,当然,水平的提升总是有一个过程,因此任何开源项目都是鼓励尝试与提升的过程。这里就只说几点更容易得到社区成员帮助的注意事项:

  1. 写完代码提交 PR 后,注意在 PR 描述中补充完善的编码思路和背景知识,这会让其他成员更容易了解修改目标;
  2. 注意控制 PR 的大小,一个小的 PR 更容易让其他人了解全部修改项,如果有一个大的功能,可以按照模块拆成几个能分别运行的 PR;
  3. 注意补充适当的单元测试,因为 Reviewer 并不负责确定代码能跑,只负责看代码设计思路是否正确。因此增加合适的测试,能让 Reviewer 确定这段代码是可以运行的。有时 Reviewer 也会针对容易出错的地方提出补充测试的建议。

图片来自网络,超大的提交会让 Reviewer 欲仙欲死的 <p><strong>标签:</strong><a href=指南,项目,issue,apache,开源,https,Apache,拥抱
来源: https://www.cnblogs.com/DevLake-DevStream/p/16527804.html