力量,金钱和开源。 讲述社区如何与Apache Ignite合作



上一次在莫斯科举行的Apache Ignite社区会议上,我谈到了:

  • 开源社区;
  • 开源中的力量和金钱;
  • 如何成为贡献者和提交者,以及为什么需要它。

报告时间有限,不允许我举更多的例子,因此我将扩展版本发布在Habré上。 以上所有内容均基于我的个人经验,并非任何公司或组织的正式职位。

什么是社区?


这看起来似乎很明显,但是仍然让我们澄清一下社区的含义。 首先,我们正在谈论一个在线社区。 这是人们相互交流的一种平台。 如果社区致力于健康,健身和类似活动,则其任务可能是支持其成员。 或者社区可以创造公共物品。 开源软件开发社区就是这种情况。 此外,如果您希望开发某种软件,那么就不太可能找到具有类似观点的人员,例如在您的着陆点或下一个入口处。 有这样的项目,但通常是学生项目。 在线社区消除了各大洲和时区之间的障碍,使您可以找到更多的发烧友。

Apache基金会


Apache的历史始于1999年的HTTPD Web服务器:一群人开始开发Web服务器,用户开始接触他们,其中一些人开始发送补丁程序是因为他们想改进该产品或修复bug。 开发人员逐渐开始为该社区中最活跃的成员分配推送到存储库的权利,现在称为提交权。

将相同的方法应用于开源开发中,Apache现在已成为最大的组织(基金会),该组织开发开源软件。 该组织分为319个(到目前为止)多元化项目,其中约200个是顶级项目。 所有项目没有一个单一的过程,所有参与者都是志愿者,他们的工作永远不会由组织支付。

毫无疑问,Apache要求所有项目都具有:

  • 法律政策;
  • 品牌使用政策;
  • 投票通过发布;
  • 使用邮件列表;
  • 信息安全。

阿帕奇孵化器


为了建立社区,所有Apache项目都必须通过Apache孵化器。 这不仅是项目的开发,而且是社区的发展的中间阶段。 Apache中没有人会决定要使用哪种技术。 而且,他们甚至不会提示选择什么决定。 Apache Incubator的目标是建立一个共同制定决策的社区。 参与者了解决策的方式和人员,在哪里可以说出来,在哪里可以听到他们的声音,这非常重要。 组织ASF可以通过在项目中附加一名指导者来提供帮助。

顶级Apache项目


如果某个项目离开了Apache Incubator,那么它可以成为顶级项目。 Apache帮助该项目参加会议,提供所有可能的品牌推广帮助,并支持基础架构。

顶级项目社区向用户保证:

  • 该代码可以合法使用;
  • 高质量代码;
  • 遵守信息安全性规定:例如,所有版本均已签名;
  • 该项目将始终对用户可用。


开源和力量


现在,让我们谈谈权力和金钱,以及如何制定决策。 即使对于社区成员来说,这也不总是很明显。 Apache项目中有几个角色,与它们对应的几个邮件列表:

  • 用户(user@project.apache.org);
  • 开发人员(dev@project.apache.org);
  • 提交者(dev@project.apache.org);
  • PMC(private@project.apache.org);
  • PMC主席(private@project.apache.org)。

此外,您可以在Apache Software Foundation的框架内成长,成为项目的指导者,帮助其他项目建立社区。

角色越高,执行该角色的人就越少,即倒金字塔形:用户最多,PMC最少。 通常每个人都对参与者的成长和扮演更高的角色感兴趣。

与商业公司不同,在商业公司中,员工和成长受到预算的限制,开放源代码则没有此限制,没有任何东西限制商务人士或PMC的数量。 该小组独立地进行自我调节。

用户名


用户就是我们所有人。 当然,你们每个人都使用某种开源软件。 对于社区而言,重要的是,用户不仅要使用或以错误报告或功能请求的形式提供反馈,还应帮助其他人。 也就是说,从社区的角度来看,参与者只有在订阅并响应用户列表并帮助其他人掌握产品,分享其知识时才成为用户。

开发者/贡献者


如果用户准备为该项目做出贡献,那么在进行首次贡献时,他将自动成为贡献者或开发人员-这些都是同义词。 该贡献者参加了开发人员新闻通讯,该通讯讨论了与社区贡献有关的所有内容。 所有开发人员都会影响社区决策,都会批评决策并提供其他选择。

提交者


如果社区认为此人已经做出了足够的贡献,那么他有权将其推送到存储库中,即将其代码审阅者的最小数量减少为零(尽管在Apache Ignite中,提交者有时仍会进行代码解析)。 提交人签署ICLA( 个人贡献者许可协议 )。 但是,也可以在收取佣金之前对其进行签名。 提交者会在apache.org上收到一个邮箱,可以做出与对该项目的每个贡献有关的决策。

PMC会员


PMC(项目管理委员会)成员-项目管理委员会成员。 该社区成员已经为产品开发做出了巨大贡献,并有权做出长期的开发决策,控制项目,监控多个方面,尤其是联合决策。 它可以帮助社区成员达成共识。 PMC在Apache中负有很多责任,例如,它可以投票接受该版本。 提交者和贡献者也可以,但是与他们不同,PMC具有约束力。 PMC可以提议提交者或新的PMC。

PMC主席


PMC主席是Apache软件基金会之间的桥梁。 相比PMC成员,也许PMC主席没有太多权力。 但是他必须解决问题,并向Apache董事会报告该项目的状态。

决策:专制


Apache由专制原则(do-ocracy,简称do-“ do”)主导。 您做得越多,您要做的机会就越多,对项目的影响就越大。
如果一项决定需要所有参与者的协调立场,则进行表决。 每个人至少需要72个小时才能投票。

选民投票:

+1:“作决定。”
0:“我不在乎。”
-1:“反对决定”。 在这种情况下,您需要提出其他建议并详细说明您为什么反对。

投票还有其他类型:

0:“我不太喜欢这个主意,但是很适合我。”
-0:“我不会干涉,但最好不要这样做。”
-0.5:“我不喜欢这个主意,但是我找不到合理的理由反对”。
++ 1:“超级,做吧!”
-0.9:“我不喜欢它,但是如果每个人都愿意,我不会把操纵杆放进去,继续前进。”
+0.9:“这个主意很酷,我喜欢,但我没有时间/知识来提供帮助。”

懒惰共识


有一个决策政策,例如懒惰的共识,或通过沉默的批准。 此过程也至少持续72小时。 如果有人明确写出:“我想通过一个懒惰的共识来通过此决定”,那么即使没有人回答,三天之内,该决定也被社区接受。

多数批准和协商一致批准


投票更积极:在这种情况下,多数社区成员的批准是必要的:三项具有约束力的投票(来自PMC)“赞成”,“赞成”多于“反对”。
共识是最好的选择:所有人都赞成,至少有三个PMC。

否决权


合格的贡献者(通常是PMC成员)可以否决它。 他以-1票通过修改代码,并写了详细的解释。 没有人能解决这种PMC成员解决方案。 您无法否决发行版,但是,例如,如果编辑非常差,它会造成安全漏洞或极大地降低性能,则PMC可以投票-1。 并且在他撤回否决权之前,无法应用修改。

功权主义


接近专政的另一个原则。 从字面上看,“功勋主义”是指“有钱人的力量”。 在开放源代码中,这意味着如果用户(如组所相信的那样)为社区做了大量工作,那么他将被提升为提交者。 您可能会问这个决定有多公平,它总是绝对诚实和平衡吗? 这是该社区中所有PMC极为主观的决定。 在大型社区(例如Apache Ignite)中,可以或多或少地将此政策正式化。 某些人的贡献很重要,请确保积极参与开发人员的新闻通讯。 但是,“充足性”是由每个项目单独确定的。

重要的一点是参与者的人文素质。 阿帕奇政策明确指出,该人与其他参与者的互动经过评估,如果他不同意他的意见,他的举止如何。 为了将成员提升为提交者或PMC,其他PMC必须在私有列表中投票,并且不得有“否”票。

开源和金钱


这个重要的主题以一种或另一种方式出现:如何使用Apache Software Foundation产品赚钱。 该组织提供了所有现有产品中对商业最友好的许可证。 您可以出售基于Apache的产品或对Apache产品的支持,也可以在商业产品中使用它们。

一个重要的要求:应该始终免费使用Apache产品。 他们不受商业利益的管理。 PMC正在对此进行监视。

专员可能会从第三方组织获得款项以对该项目做出贡献。 专员可以由第三方雇用。 最近,社区成员在Habr中告诉了他们如何与Sberbank Technologies中的开源社区Apache Ignite一起工作。 但是Apache基金会从不付钱给提交者。 这是原则立场。 对于Apache,提交者始终是志愿者和个人。 也就是说,该公司不能参加Apache项目,只有一个开发人员可以。

为什么以及如何加入开源


为什么值得为开源项目做出贡献?


这是提升您的技能并赢得专业声誉的好机会。 商业公司很欣赏参与开源。 许多著名的开发商参与了各种项目,成为了委员会和PMC。

是什么使人们无法参与开源?

  • “您必须是拥有20年经验的奥运会或大四学生,否则我做不到。” 其实没有 Apache Ignite是一个复杂的项目,但是即使在这里,您也可以找到简单的任务。 例如,简单的票据和编写文档的任务旨在更好地描述项目。 Apache中没有任何地方说要成为提交者,您需要编写代码。
  • “我需要流利的英语,否则我将无法应付。” 那些参与开发人员名单的人将确认:那里您不需要英语流利。 另外,书面交流根本不是实时的,有时间去思考和撰写平衡的答案。
  • “如果将组件发送给开源,我将永远无法使用它。” 在Apache中不是这样。 您可以继续在商业产品中使用组件,该组件将在Apache许可下的Apache Foundation下简单存在。
  • “每个人都会阅读我在互联网上写的内容。” 即使在Apache Ignite社区中,也不是每个人都阅读我们编写的内容。 这就像是一个关于难以捉摸的乔的玩笑:没人能抓住他,因为没人需要他。 我确定我的朋友和亲戚不会阅读我在开发人员列表中写的内容,因为他们不在乎。
  • “这将花费我所有的空闲时间。” 这在一定程度上是正确的:社区参与会令人上瘾。 如果您开始参与讨论,则将需要一些时间。 随着您的成长,它将需要更多。 您了解得越多,就能说得越多,您参与到用户和dev.list中的参与就越多。 但是,同样,Apache没有义务。 每个人都调节自己的参与。 如果可以制作一个补丁,请制作一个补丁。 然而,没有人会强迫你。 即使任命某人为专员,建议书中也指出,并不需要他参与更多。

如何开始


如果要参与Apache项目,则需要在Github上有一个帐户,一个邮箱,在Apache JIRA中以及在Wiki中进行注册 。 任何社区在Apache Ignite中都有“初学者如何贡献”文章。

这是写欢迎信的好形式: “你好! 我是某某。 我想出票,我在JIRA中的昵称就是这样 这封信对于为用户分配贡献者的角色很重要。

邮件清单


为了与其他成员进行交互,Apache需要使用邮件列表。 我有时会听到不满:为什么这么老套? 有很多聊天,即时通讯工具。 这是因为Apache项目的每个成员都是志愿者。 他可能有自己的家庭,与开源无关的工作,还有他的业余爱好。 他无法在线聊天。 也许他可以每三天检查一次邮件。 在这种情况下,邮件列表可以正常工作。

另外,不要忘记社区成员分散在世界各地。 和男人
向您提出问题的人可能在另一个大陆,并且只会在明天回答。
因此,耐心和礼貌是在邮件列表中进行通信时非常重要的品质。 例如,在Apache Ignite社区中,经验丰富的成员永远不会说出他们与您不同意,他们会说不确定他们是否同意。

示例字母:

嗨,□□□□□□□,我不确定我是否同意,因为...

社区比代码更重要


Apache的原则之一:社区比代码重要。 这意味着Apache项目旨在创建的第一件事是围绕开源项目的社区。 然后魔术开始,出现一个好的代码。 如果您不同意任何信件,请将其推迟4个小时,然后重新阅读并再次推迟。 这样一来,您很有可能会克制地做出回应,而不会用粗心的话语来推动社区的其他成员。 我们都是志愿者,如果人们不舒服,他们将开始离开,对于开源项目,这是非常严重的风险。

对应建议


它们或多或少与普通商务信函中使用的相似。 如果可以用错误的方式来解释任何句子,则将以错误的方式来解释,特别是考虑到社区的规模。 所有建议都归结为三个基本原则:积极,建设性和尊重。

一个不太好的字母的例子:

嗨,□□□□□。
这个解决方案对我来说有点难看。

作为开发人员列表中的一个成员,我的心愿:写简短的字母-三个段落或7个句子。 我们都是技术人员,并希望提供尽可能多的细节。 但是如果它们太多,也许这是写另一篇文章的机会。

走私什么?


每个社区都有当前需要的列表。 Ignite列出了简单的门票。 如果您在使用过程中发现了一个错误并将其修复在自己的叉子中,那么很有可能为此业务创建JIRA问题,提出拉取请求并写入开发者列表。

如何通过代码审查


当您是社区的新手时,您不太可能确定哪个票证是优先事项。 与该组件随附的人员联系可能很有意义,您的帮助对他来说将非常重要。 您还可以在开发人员列表中询问哪些门票更为重要。

如果没有答案,那么我们再次想起每个人都是志愿者。 提醒您三天后要做的事情可能是个好主意。

在包括Ignite在内的Apache项目中,没有项目经理来监视积压,因此也可以在这里找到无关紧要的票据。 建议您首先写入开发人员列表并进行澄清。

Apache的另一个功能:在商业公司中,可能有一个明确的政策,即某个级别的员工可以访问和编辑文档,而下级的员工则不能。 Apache中没有这样的东西。 如果有什么可以借的,没问题。 我认为,在任何项目中,获取访问权限都不会有问题,而且如果该人不是正式的提交者,那也没有关系。

谈论项目


产品文章极大地帮助了社区。 Apache Software Foundation本身可以帮助举行会议。 您不仅可以使用Apache Ignite,还可以描述您的体验。 这可能是一些有趣的用例,学生工作。 它们总是发布在开发人员列表上。

Source: https://habr.com/ru/post/zh-CN419391/


All Articles