扩展和管理开源社区

我已经为开源iOS社区做出了大约一年的贡献,并参与了诸如MessageKitMoya SwifterSwiftIBAnimatable 。 这些项目无疑使我成为了一个更好的iOS开发人员,但是影响最大的项目是Moya,即Moya管理社区的方式。

如果您要构建一个相当大,持久且广泛使用的开源项目,则将需要一些额外的帮助。 与维护实际的代码库相比,通过维护示例文档,管理文档以及响应GitHub问题而积累的工作量可能更耗时。 对于成熟的项目尤其如此,因为代码库的更改频率较低。 我想讨论一下我从Moya中学到的教训,以便围绕一个项目建立一个大型社区,以维护该项目。

有同情心

对开源做出的贡献可能会令人恐惧-特别是对于初次贡献者。 人们常常不愿做出贡献,因为害怕受到批评或看上去无所事事。 不言而喻,您绝不应轻视任何贡献或尝试作出贡献。 您的项目应采用的首批文件之一是行为准则。 Moya遵守《贡献者公约》的行为守则。

如果潜在的贡献者正在努力做出贡献,请采取一切必要的措施来帮助他们完成任务,无论是指导他们完成拉取请求过程还是编写补丁的后备单元测试。 重要的是,每个项目都必须有一份有助于指导的文档,该文档讨论项目的开发过程及其对贡献者的期望。 这样可以确保新的贡献者感到舒适,并使贡献尽可能容易。 您应该总是感到受宠若惊,以至于有人足够关心以帮助您改进项目。 您永远不会知道,将来,该贡献者可能最终为您的项目做出一些最重要的贡献。

提供主人翁意识

绝大多数开放源代码项目都由捐赠时间提供支持。 重要的是,人们在帮助构建的东西上要有主人翁感。 我了解到有几种方法可以做到这一点:

将您的项目托管在组织中。

如果您的项目开始越来越引起社区其他成员的认可,则应高度考虑将所有权移交给组织。 这使您可以在项目周围形成社区,并让其成员在其GitHub个人资料上显示组织徽章。

在第一个合并的合并请求之后邀请用户加入您的项目。

莫亚(Moya)采取了这项政策,并取得了奇迹。 目前,该组织有126个成员,所有成员都对该项目具有写权限。 听起来很疯狂,但是我们锁定了master分支,要求通过状态检查和代码审查。 还没有一个问题。 Moya甚至还开发了一种名为Aeryn的工具来自动执行邀请过程。 您可以在此处查看采用Aeryn的其他组织的列表。

不要使用您自己的名称采用项目前缀。

建立成功的项目是团队的努力。 您应该避免使用引用您自己的名称的项目前缀或采用任何其他种类的个人品牌。 它暗示您是该项目的唯一所有者,并减少了其他贡献者的价值。 就个人而言,我不会使用此命名约定来涉及项目。

通过表彰杰出贡献者为核心团队来奖励他们。

所有贡献者都是宝贵的,但是不认识那些特别致力于维护项目和长期健康的人是错误的。 这可以像在GitHub组织内创建核心团队一样简单,也可以通过在正式文档中收集贡献者的姓名来实现。 尽管每个项目都有不同的要求,但您可以参考Moya如何确定核心团队成员及其职责。

分配责任

根据Ash Furrow的说法:…开源维护者应尽早分配其权力和职责。 因为事实是,最终您准备好进行下一个项目。 作为维护者的目标实际上应该是创建一个对您的兴趣超过其兴趣的项目。

作为一个控制狂,这对我来说很难。 但是,在开发MessageKit时,我真正地了解了这一点的重要性。 最近,我因积极从事该项目而精疲力尽,以至于我停止了将近一个月的捐助。 在我缺席之前,我已经将制作新版本的权力分配给了前两名贡献者,然后返回发现他们已经修复了多个错误,提供了新功能,甚至发布了重要版本。

视力

在正式文档中概述项目目标很重要。 这有助于贡献者了解范围之内和之外。 这对于年轻项目的进展尤其重要,因为优柔寡断会导致开发快速过时。 权力的分配固然重要,但最终必须由某人作为决定因素。

公开讨论

这是Moya特别擅长的领域。 与代码库的开发,项目管理和问题有关的所有讨论都通过GitHub问题公开进行。 如果讨论发生在GitHub之外,那么通常会写正式的讨论内容。 这鼓励人们参与讨论,无论他们是当前的贡献者还是有志于成为的人。 最重要的是,公开讨论是自我记录。 您不仅会积累大量的已回答问题,还会记录某些设计决策,以帮助将来的维护人员。

自动化

考虑到管理开源项目所需的大量时间,重要的是尽可能减少工作流的时间。 在Moya,我们冒着危险来规范和自动化对请求请求进行的代码审查。

我们进行了几项检查,以警告您缺少变更日志条目,保持文档为最新状态,甚至传播SwiftLint问题。 这有助于标准化我们的工作流程,并确保我们继续交付高质量的更改。 您可以在Moya的危险文件中查看所有被视为的检查。

最后

如果您对这个主题有更多的兴趣,我可以查看Ash Furrow关于建立在线社区的博客文章,或者他有关建设富有同情心的软件的演讲。 我从他那里学到了本文中讨论的价值观。 您可能还需要考虑查看Felix Krause的有关扩展开源社区的博客文章。 如果您需要有关发展自己的开源社区的建议,那么所有这些信息都可以在Moya贡献者仓库中找到,不要犹豫,在Twitter上与我联系。