Github 开源项目贡献指南:领导和管理社区

这是【Github 开源项目贡献指南】系列的第六章,原文【Open Source Guides——Best Practices for Maintainers】

学会管理成长中的项目

你们的项目正在成长,也有人参与进来,你们承诺保持这样的状态。在这个阶段,你们可能想知道如何将常规项目贡献者纳入你们的工作流程,无论是否给他们提交权限或者解决社区辩论。如果你们有疑问,我们给出了答案。

在开源项目中使用正式角色的示例有哪些?

许多项目遵循类似的贡献者角色和认可结构。

这些角色实际上意味着什么,完全取决于你。这里有一些你可能认识的角色类型:

  • Maintainer(维护者)
  • Contributor(贡献者)
  • Committer(提交者)

对于一些项目来说,”maintainers”是在项目中有提交权限的人。在其他项目中,他们是作为维护者被名字被列在README中的人。

维护者不一定要是为项目编码的人。他可能是为你们项目的宣传做了很多工作的人,或者是为项目编写文档以方便其他人使用的人。无论他们每天做了什么,维护者是对项目的方向有责任感以及致力于改善项目的人。

一名“contributor”可以是任何评论过issue或者pull request的人,给项目带来价值(无论是对issues进行分类,编码,或者组织活动)的人,或者任何合并过pull request的人(可能是贡献者最狭隘的定义)。

[对于Node.js来说,]项目社区中的每个人都参与评论issue或者提交代码。这意味着他们从用户过度到了贡献者。 — @mikeal, “Healthy Open Source”

术语”提交者”可能是用于区分提交权限,它是一个有着明确责任的角色类型,来自其它形式的贡献。

虽然你们可以以任何你们想要的方式定义项目角色,但请考虑使用更广泛的定义来鼓励更多来自其他形式的贡献。你们可以利用管理者的身份认识为项目做出特别贡献的人,不论他们的技能是什么。

你们可能认为我是Django的“发明者”…但事实是当她诞生一年后我才参与这份工作。(…)人们怀疑我成功了,因为我的编程技能…但我最多只是个普通的程序员。 — @jacobian, “PyCon 2015 Keynote” (video)

我如何正式化这些领导者角色?

正式化你们的领导者角色能够帮助人们有归属感并告诉社区中的其他成员他们可以向谁寻求帮助。

对于小项目来说,指派领导者可以和将他们的名字添加到你们的README或者CONTRIBUTORS的文本文件中一样简单。

对与比较大的项目来说,如果你们有网站,可以创建一个团队网页或者将你们项目的领导者们排列在上面。例如PostgreSQL有一个详细的团队页面并有每个贡献者的简单信息。

如果你们的项目有个非常活跃的社区,你们可能形成一个维护者的“核心团队”,甚至拥有来自不同issue领域(例如:安全,issue分类或者社区准则)的人组成的小组委员会。让大家自己组织并志愿选择他们喜欢的角色,而不是分配给他们。

[我们]补充了核心团队和几个“子团队”。每个子团队专注于一个特定领域(如:语言设计或者库)。整个项目的协作和强大,每个团队的愿景要与整个项目愿景保持一致,每个子团队由一名来自核心团队的成员领导。 — “Rust Governance RFC”

领导者团队可能想要创建一个指定的通道(像IRC)或者定期会面来讨论项目(像Gitter或者Google Hangout)。你们甚至可以组织这样的公开会议以便其他人参与。例如,Cucumber-ruby每周办公时间

一旦你们建立了领导者角色,请记得以文档的形式记录告诉大家如何联系他们!给大家如何成为你们项目的一名维护者或者仅仅是加入一个子委员会建立一个清晰的流程,并将之写进你们的GOVERNANCE.md中。

有些工具像Vossibility可以帮助你公开跟踪谁给项目了贡献(或者没有)。记录这些信息可以避免社区认为维护者是一个团体,可以私下作出决定。

最后,如果你们的项目在GitHub上,请考虑将你们的项目从个人账号转移到一个组织并添加至少一个备份管理员。GitHub组织

我什么时候应该给一些人提交权限?

一些人认为你们应该给所有参与贡献的人提交权限。这么做能够让更多的人对项目有归属感。

一方面,特别是对于比较大,很复杂的项目,你们可能只想把提交权给那些已经表示了忠心的人。这种事没什么对错,你们开心就好!

如果你们的项目在GitHub上,你们可以利用受保护的branches管理谁可以在什么情况下像某个特定的branch进行push。

无论什么时候有人向你们发送一个pull request,请给他们你们项目的提交权限。虽然这听上去非常愚蠢,但是使用这样的策略能够让你们充分利用GitHub的优势。(。。。)一旦大家有了提交权限,他们就不用再担心他们的补丁没有合并了…造成他们浪费了大量的时间。 — @felixge, “The Pull Request Hack”

开源项目的一些常见治理结构有哪些?

这里有三个与开源项目有关的常见治理结构。

  • BDFL: SDFL表示”Benevolent Dictator for Life(仁慈的独裁者的生活)”。在这个模式下,只有一个人(通常是项目的作者)对项目的主要决议有最终得决定权。Python就是一个经典的示例。小项目一般默认是BDFL,因为他们只有一两个维护者。如果是公司的项目可能也会使用这中策略。
  • Meritocracy(精英): ( 注意:这个术语”meritocracy「精英」”对一些社区来说带有消极的意味,同时用有一个复杂的社会以及政治历史)。在精英模式下,活跃的贡献者(展示”价值”的人)被赋予了一个正式的决策者角色。决议通常是通过纯投票的形式抉择。这个权威的概念是由Apache Foundation首创;所有Apache的项目都是精英。贡献仅由他们个人提供,而不是公司。
  • Liberal contribution(自由贡献):在自由贡献模式下,做最多工作的人被认为是最有影响力的,但是是以现在的当前工作为基准而不是过去的贡献。项目的主要决议都是通过寻求共识的方式得到的,而不是以纯投票的形式,并努力考虑社区中更多的观点。使用自由贡献模式非常流行的示例包括:Node.js和Rust。

你们应该选择哪种?这取决于你们!每种模式都有有点以及需要权衡之处。虽然咋一看他们有着很大的不同,但是他们的共同点要比看上去的多。如果你们有兴趣采用其中的一种模式,可以浏览这些模板:

当我的项目启动时我需要编写管理文档吗?

虽然没有合适的时间写下你们项目的管理文档, 但一旦你们看到你门的社区动态表现,它就容易定义了。开源管理的最好(最难的)部分是它是由社区塑造的!

一些早期文档不可避免的是用于你们项目的管理。所以,开始写下你们可以写的。例如,在你们项目启动的时候你们可以清晰地说明期待什么样的行为,或者你们的贡献者如何处理工作。

如果你们是参与公司开源项目启动的成员,在项目发布之前,你们有必要进行内部讨论,了解你们的公司如何保持并决定项目的进展。你们也可以公开解释贵公司将如何(或不会)参与该项目的任何事情

我们分配小团队来管理GitHub上的项目,他们实际上在Facebook工作。例如,React是由一位React工程师管理。 — @caabernathy, “An inside look at open source at Facebook”

如果公司的员工开始提交贡献会发生什么?

成功大开源项目会被很多人和公司使用,以及甚至有些公司的收入会与这些项目有关。例如,公司可能使用开源项目中大代码作为他们商业服务的一部分。

随着项目被广泛地使用,会需要更多具有专业知识的人,你们可能就是他们中的一个!同时,有时大家在为项目工作时会得到报酬。

重要的是平常心对待商业活动,并且将之视作其他资源发展的动力。当然,不应该区别对待有报酬的开发者和其他无薪酬的;每个贡献都应该根据其技术特点进行评估。然而,大家应该开心地参加商业轰动;同时当争论对项目有利时,大方地陈述他们的用例。

“商业”和“开源”是兼容的。“商业”仅仅是意味着有金钱的参与,软件被用于商业,这有利于项目的发展和推广。(虽然非开源产权中使用了开源软件,但整个产品依然是“专利”软件。开源可以用于商业或者非商业目的。)

和任何人一样,具有商业动机的开发者也是通过他们贡献的质量和数量提高影响力的。很明显,得到报酬的开发者可能会比没有报酬的做的更多,但这是被允许的;金钱只是影响一些人做少事情的很多因素中的一个。让你们的项目讨论侧重于贡献,而不是关注使人们能够做出贡献的外部因素。

我需要一个法律顾问来支持我的项目吗?

你们不需要法律顾问来支持你们的开源项目,除非涉及到金钱。

例如,如果你们想创建商业业务,你们将要建立C Crop或者LLC(如果你们位于美国)。如果你们只是做与你们的开源项目相关的合同工作,你可以作为独资经营者接受金钱,或设立一个LLC(如果你在美国)。

如果你们的开源项目想要接受捐赠,你们可以设置一个捐赠按钮(例如使用PayPal或者Stripe,还有中国的支付宝和微信支付),除非您是符合条件的非营利机构(如果您在美国),否则这笔钱不会免税。

很多项目为了省去建立非盈利机构的麻烦而去找一家非营利机构赞助他们。非营利机构代替你们接受捐赠,但你们需要给他一定比例的捐款。自由软件保护, Apache基金会, Eclipse基金会, Linux基金会Open Collective都是为开源项目提供赞助的组织。

我们的目的是提供可被商业持续使用的基础设施,因此创造一个每个人(包括贡献者,支持者,赞助者)都能受益的环境。 — @piamancini, “Moving beyond the charity framework”

如果你们的项目与某种特定的语言或者生态系统联系紧密,那么你们可以和与之相关的基金会合作。例如,Python软件基金会帮助支持用于管理Python包的PyPINode.js基金会帮助支持一个Node基础框架项目Express.js

原文链接:

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

Unix版权史

1. 这几天,我在读《Unix编程艺术》。 ? 书中介绍了Unix的发展历史。我发现,这是一个很好的例子,说明现行版权制度具有阻碍社会发展的负面作用。 2. U...

3124
来自专栏华章科技

编程能力的四种境界

网址:http://www.vaikan.com/the-four-stages-of-programming-competence/

591
来自专栏华章科技

会写程序还不够,硅谷杰出软件工程师都有的 5 种能力

曾任职于Google和Quora等公司、现任Quip软件工程师的Edmond Lau,于 《The Effective Engineer》 一书中访问任职于Fa...

682
来自专栏企鹅号快讯

研究一下数据分析与挖掘的关系

我就在这里等你关注,不离不弃 ——A·May 数据分析和数据挖掘的区别到底在哪?这个问题还是要想清楚的,最开始,我以为用Python和R这种高级的编程软件做出来...

2655
来自专栏Crossin的编程教室

【读者投稿】数据说话,Python 的就业状况如何

不少读者在学习编程之后,做了一些自己的练手项目,或者积累了一些学习经验和心得,希望可以与更多的学习者交流分享。 因此,我们决定新增一个小栏目,提供给大家一个展...

2876
来自专栏新智元

Github 年度开源报告:TensorFlow 成最受欢迎深度学习项目

【新智元导读】Github 日前发布了 2016 年度的《Octoverse 观察报告》,对开源和社区做了统计,与人工智能开源运动相比,得到一些有趣的结果:印象...

4129
来自专栏DT数据侠

如何快速迈入高薪热门行业,这个技能需点亮!

提到人工智能 (AI) ,无疑是现今全球产业的“当红小生“;论流量,在媒体界也是“扛把子”级选手。从2017年的飞速发展,到如今2018已被称为人工智能元年,语...

740
来自专栏阮一峰的网络日志

自动售书机问世了!

去年年底的时候,我曾经介绍了《财富》杂志评选出2007年最具有创意的十种新产品。其中有一种是类似ATM的自动售书机,只需按几个按钮,一本新书就会自动打印和装订,...

31912
来自专栏小詹同学

Python制作表情包还能去掉马赛克?

在去马赛克教程之前我们先来说说表情包斗图这点事,有没有遇到这种时刻:朋友不断发来有趣又生动的表情包,连连霸屏你的聊天记录,你却半天才发出一句话,无图抵抗的囧态?...

963
来自专栏云计算D1net

OpenStack第十四个版本及14项重要事实

就在上周,OpenStack社区公布了该项目的第十四个版本,即Newton。伴随着一系列新功能、修复与提升,Newton大多个层面迎来了升级。为了庆祝第十四个版...

3685

扫码关注云+社区