社区经理关心社区的增长,但发展开发者社区是一项艰巨的任务。 开发者很少会开始向他们以前从未接触过的项目贡献代码——更常见的情况是,你的开发者也是(或仍然是)该项目的用户。
所以,这很简单,对吧? 扩大用户社区,开发者社区也会随之增长。 但是,如何扩大呢? 吸引用户也不容易——这就是我们有市场营销的原因。 除非你拥有大量预算用于活动、材料、广告等,否则扩大用户社区的难度并不比扩大开发者社区容易多少。
因此,我们在吸引用户方面的选择有限,而对于开发者而言,几乎没有选择。 我们还剩下什么? 嗯,对于想法,我们可以看看用户成为开发者的途径。
你总是会有一些注定会成为贡献者的人——他们具备领域知识、兴趣/动力和编程技能的正确组合。 但还有一大部分人渴望解决一些小问题,但可能不太有信心深入整个代码库。 这些是我们需要瞄准的人。作为证据,以下是来自最新 Foreman 社区调查(我所在的社区)的一些数据,显示近 三分之一 的 160 名受访者希望做出贡献,但不知道从哪里开始。

Foreman 社区调查 2018:你是否为 Foreman 做出贡献?
这些人中的许多人希望做一些事情,例如报告错误或进行翻译,但 有些人会想编写代码。
插件来拯救
插件在这里非常合适。 借助适当的工具来帮助新的作者入门,它们提供了一种让人们习惯项目内部运作方式的方法,而无需受到审查流程、发布节奏、持续集成 (CI) 系统以及其他可能使项目贡献令人望而却步的流程的束缚。
考虑到这一点,以下是一些关于实施插件支持以鼓励对项目做出贡献的想法。
要做:拥有一个模板
这是首要要求,而且(在我看来)绝对不能妥协。 新作者需要你尽可能多的帮助,而插件模板可以大量提供这种帮助。使其易于启用(在我们的项目中,通过 git clone 然后向主项目配置文件中添加一行来完成)。 确保有很多方法可以更改核心项目(UI 更改、系统逻辑更改、编排添加——无论什么有意义)的示例。 我见过将其作为每个示例一个 git 分支或一次性完成(这就是我们所做的)。
为了帮助你入门(如果你使用 Rails),这是指向 我们的插件 的链接。
要做:拥有良好的文档
与模板几乎同样重要的是你的文档。 新作者要做的第二件事是尝试更改模板,因此他们需要找到在哪里影响他们想要完成的事情。
Redmine 在其文档中提供了一些 很棒的示例。
要做:提供内部 API
这个教训来自于经验之谈。
一些编程语言会在它们的工作方式中强制执行这一点——不可能对核心代码进行运行时更改。 但是,某些语言可以轻松地更改几乎任何内容(Ruby 以此而闻名;请参阅 alias_method_chain)。 如果你不提供连接到应用程序适当部分的方式,作者将以其他方式执行此操作。 当项目发展并且这些 hack 崩溃时,他们会责怪你(即使他们一开始不应该使用该 hack)。 事实证明,即使是插件开发也是有政治性的。不要:违背你的承诺
与此相关的是,一旦你提供了 API,就要兑现它们。 不要随意更改它们——在几个版本中干净利落地弃用,并确保与作者的反馈循环有效。 你不希望他们不得不放下一切并 立即 修复插件,因为内部 API 发生了更改。
不要:使安装插件变得困难
如果插件难以运行,人们就不会使用它们。 这对用户也很重要,但对于作者而言,它重要两倍——他们必须轻松地启用正在开发的插件,并且必须轻松地将其部署到生产环境。
“轻松”对你的项目意味着什么会有所不同。 在我们的项目中,我们将插件作为 RubyGems 发布(还将 gems 打包为 RPM 和 DEB 以方便安装),这些插件通过配置文件中的一行加载。 这是因为我们的项目面向系统管理员,他们通常喜欢从软件包管理器安装东西。 其他项目使用应用内方法(例如,Nextcloud,可以将软件包下载到其目录中)或通过更改容器配置(例如,Discourse 插件)。 无论你选择什么,它都必须对项目的用户有意义。
要做:保持沟通
上述策略可以增加你的开发者社区——现在大约有 100 个可用的插件 可用于 Foreman,并且还有其他未公开发布的插件; 但是,这些都不是一劳永逸的事情。 随着你的核心项目的发展,你需要与你的插件作者保持联系,既要让他们了解可能会影响他们的核心变更,又要了解他们希望改进的痛点。 这项工作永无止境,但 是 值得的!
Greg Sutcliffe 将在 欧洲开源峰会 上发表关于 通过插件扩展你的开发者社区 的演讲,该峰会于 10 月 22 日至 24 日在苏格兰爱丁堡举行。
评论已关闭。