开源项目阶段之间的转换

还没有读者喜欢这个。
A diagram of a bug.

Opensource.com

在最近的一次培训课程中,我讨论了承诺梯度——在项目内部的每个参与阶段之间转换需要付出多少额外的努力。课程结束后,有人向我询问承诺梯度的一些例子,以及如何使其更平缓,从而使人们更容易在项目中取得进展。

A desireable project

此图表示理想的承诺梯度。从了解项目到使用和讨论项目,这一步相当简单。报告错误需要一些额外的知识,例如使用错误跟踪器,但这并不是一个明显更难的步骤。提交补丁稍微难一些,因为它需要编程语言的知识以及对编码风格等方面的了解。最后,进入领导角色需要付出大量的额外努力,因为领导者需要了解项目的所有方面,包括理解治理模型,并获得其他社区成员的信任。

使用软件

A hard installation

此图表示一个项目,该项目的软件非常难以安装,以至于您需要对项目有深入的了解才能使其正常运行。例如,如果配置设置是硬编码的,则设置软件需要语言知识、更改代码,然后在开始之前自行编译。到这时,您对软件非常了解,以至于后续阶段几乎不需要额外的努力,但是大多数人不会费心,您的用户群将会遭受损失。

为了降低此阶段的承诺梯度,项目应使其输出易于获取、安装和配置。例如,在目标平台的软件存储库或应用商店中提供打包版本可以使安装更容易。在不适合使用打包版本的情况下,可以使用需要较少技术知识的自动化安装程序(例如 WordPress 使用的安装程序)作为初学者的选项,并为更有经验的用户提供更可配置的“专家模式”。对于配置,能够通过软件的界面而不是在代码或配置文件中更改设置会很有帮助。

讨论项目

A hostile community

此图表示一个项目,该项目的软件易于使用,但社区具有精英主义态度,并且对新人不友好。对问题的回答假定对软件有深入的技术理解,并且不具备这种理解的人需要自行查找答案,然后再与那些具备理解的人互动。

解决此问题的方法是提倡一种节制和指导文化,以确保讨论以容忍的方式进行,从而使新人能够学习。

此阶段的另一个问题可能是所使用的技术——例如,如果所有用户支持都在 Usenet 新闻组上进行,则许多人将不知道如何访问它们,或者他们应遵循的约定。使用新用户更熟悉的渠道(例如 Web 论坛或社交媒体)可以帮助降低此处的承诺梯度。

报告错误

从讨论项目到报告错误的步骤可能很高,如果项目使用复杂的错误跟踪器,访问跟踪器需要复杂的流程,并且收集提交有用的报告所需的信息需要对软件有深入的了解。

Ubuntu 项目通过使用 ubuntu-bug 实用程序降低了此阶段的梯度。任何用户都可以运行命令:ubuntu-bug <软件名称>,并生成一个模板错误报告,其中包含有关其环境的所有必需信息,以及任何相关的日志或崩溃报告。然后,他们需要做的就是编写问题的描述。同样,节制和指导文化在这里也很有用,可以帮助指导人们编写有用的报告。

提交补丁

提交补丁不可避免地需要付出更多的努力,因为贡献者需要充分了解编程语言、源代码、开发环境等等。但是,如果期望贡献者遵循复杂或文档不完善的编码风格,如果期望他们在提交之前进行大量手动测试,并且如果实际提交过程很深奥,则承诺梯度可能会变得过于陡峭。

降低此处梯度的主要方法是文档化,以及尽可能自动化。编码风格应明确定义并记录在案。应使用单元测试工具自动化测试。提交过程应有完善的文档,使用众所周知的工作流程(例如 GitHub 的拉取请求)可以有所帮助。

Moodle 社区有一个名为“代码检查器”的工具,该工具打包为 Moodle 插件,使开发人员能够分析其代码,以确保其符合项目的编码风格。这使他们能够快速识别和修复提交前的任何问题,并使审阅者能够快速指导他们如何修复任何差异。

掌控全局

同样,此阶段的巨大进步是不可避免的,并且在某些方面是可取的,因为项目可能不希望由没有表现出足够承诺的人来领导。负责人可能还需要遵守法律要求。

但是,对于一个人如何在项目中获得投票权的过度或不明确的要求可能会使此步骤过大,因此这些要求需要公平且有完善的文档。此外,领导者还需要很好地了解项目的治理模型及其决策过程,因此这些也需要有完善的文档。

如果一个项目足够大,则可以在此阶段允许不同程度的承诺,因此并非每个对技术问题有发言权的人都必须做出预算决策。

作者:Mark Johnson,最初发表于 OSS Watch。根据 Creative Commons 重新发布。

User profile image.
OSS Watch 是一项独立的、非倡导性服务。我们是免费和开源软件方面的专家,但我们并不坚持将其作为解决每个问题的方案,也不受任何特定解决方案或提供商的束缚。

2 条评论

非常有趣的文章,我会分享,谢谢。它似乎假设自然的进步路径仅适用于开发人员。作为一名在开源领域工作的非开发人员,我一直参与到错误报告员的程度,但随后转向编写文档、管理插件开发、组织社区活动,甚至写书。一个项目需要吸引各种角色才能蓬勃发展,因此将这种承诺模型扩展到非开发人员角色将是一项有趣的练习。该模型是一个很棒的想法,我参与了一个新的开源项目 learning locker.net,所以会将其转发给团队!

嗨,Mark,
您说得对,我上面描述的内容主要是针对开发人员的,并且一个项目吸引各种角色非常重要,因此感谢您提出这一点。但是,我认为我描述的原则与促进所有形式的贡献相关,它们可能只需要以不同的方式应用。

例如,对于文档,您仍然需要能够提出有关现有文档的问题并提交改进的文档,为此,您需要简单、文档完善的流程以及来自社区其他成员的支持。

对于更多以社区为导向的角色(如活动组织),拥有一个开放的论坛来提出想法和改进建议可以帮助降低第四阶段的梯度,而指导文化(如代码贡献)则有助于降低第五阶段的梯度。在这种情况下,除了编码风格之外,您还需要考虑社区文化等因素,可能要确保行为准则有完善的文档记录,以便可以遵守。文档也很有帮助,记录过去哪些方面效果良好以及哪些方面效果不佳可以帮助为未来的组织者提供信息。

非常感谢
Mark

Creative Commons License本作品根据知识共享署名-相同方式共享 3.0 未本地化许可协议获得许可。
© . All rights reserved.