如何维护开源软件项目
介绍
当您维护一个开源软件存储库时,您就是在扮演领导角色。 无论您是某个项目的创始人,该项目向公众发布以供使用和贡献,还是您在一个团队中工作并维护项目的一个特定方面,您都将为更大的用户提供重要的服务开发者社区。
虽然来自开发者社区的通过拉取请求 的开源 贡献对于确保软件对最终用户尽可能有用至关重要,但维护者对塑造整个项目有真正的影响。 存储库维护者非常参与他们管理的开源项目,从日常组织和开发,到与公众互动,并为贡献者提供及时有效的反馈。
本指南将向您介绍一些维护开源软件公共存储库的技巧。 作为开源项目的领导者,需要承担技术和非技术责任,以帮助培养项目周围的用户群和社区。 担任维护者的角色是一个向他人学习的机会,获得项目管理经验,并随着用户成为投资贡献者而观察项目的发展和变化。
编写有用的文档
详尽、组织良好并服务于项目目标社区的文档将有助于扩大您的用户群。 随着时间的推移,您的用户群将成为您的开源项目的贡献者。
由于您无论如何都会仔细考虑您正在创建的代码,甚至可能会记下笔记,因此值得将文档作为您的开发过程的一部分,同时让您记忆犹新。 您甚至可能要考虑在代码之前编写文档,遵循文档驱动的开发方法的理念,即首先记录功能并在写出它们将要做什么之后开发这些功能。
除了您的代码之外,您还需要将一些文档文件保存在您的顶级目录中:
README.md
文件,提供项目和目标的摘要。CONTRIBUTING.md
包含贡献说明的文件。- 您的软件的许可证,可以鼓励更多的贡献。 在此处阅读有关选择开源许可证的更多信息。
文档可以有多种形式,可以针对不同的受众。 作为文档的一部分,根据您的工作范围,您可以决定执行以下一项或多项操作:
- 向用户介绍项目的通用指南
- 教程 引导人们了解不同的用例
- FAQs 解决用户可能遇到的常见问题
- 故障排除指南帮助用户解决问题
- API 参考 为用户提供快速查找 API 信息的方法
- 发布说明 包含已知错误,让用户了解每个版本的预期内容
- 计划功能 跟踪和解释未来的发展
- 视频演练 为用户提供多媒体方法来使用您的软件
您的项目可能比其他项目更适合某些类型的文档,但提供不止一种软件方法将帮助您的用户群更好地了解如何与您的工作进行交互。
在编写文档或为视频录制语音时,尽可能清晰是很重要的。 最好不要对听众的技术能力做出任何假设。 您还需要自上而下地处理您的文档——也就是说,在详细介绍之前,以一般方式解释您的软件的功能(例如,自动执行服务器任务、构建网站、为游戏开发制作动画精灵)。
尽管英语已成为技术领域的通用语言,但您仍然需要考虑您的预期用户是谁以及如何接触他们。 英语可能是获得广泛用户群的最佳选择,但您需要记住,许多人正在以非英语母语人士的身份处理您的文档,因此请努力使用不会混淆读者的易于理解的语言或观众。
尝试编写文档,就好像您正在写给需要加快当前项目速度的合作者一样; 毕竟,您需要鼓励潜在的贡献者向项目提出拉取请求。
组织问题
问题 通常是一种跟踪或报告错误,或请求将新功能添加到代码库的方法。 GitHub、GitLab 和 Bitbucket 等开源存储库托管服务将为您和其他人提供一个界面,以跟踪存储库中的问题。 在向公众发布开源代码时,您应该期望有用户社区公开的问题。 组织和优先处理问题将为您提供项目即将开展的工作的良好路线图。
因为任何用户都可以提交问题,所以并非所有问题都会报告错误或功能请求; 例如,您可能会通过问题跟踪工具收到问题,或者您可能会收到对用户界面进行较小改进的请求。 最好尽可能多地组织这些问题,并与创建这些问题的用户进行交流。
问题应该代表需要在源代码上完成的具体任务,并且您需要相应地确定它们的优先级。 您和您的团队将了解您或贡献者可以投入到提交的问题上的时间和精力,并且您可以一起协作做出决策并制定可行的计划。 当您知道您将无法在短时间内解决特定问题时,您仍然可以对该问题发表评论,让用户知道您已阅读该问题并且您会在可能的情况下解决它,如果可以的话,您可以提供一个预期的时间表,以便您可以再次查看该问题。
对于功能请求或增强的问题,您可以询问提交问题的人是否能够自己贡献代码。 您可以将它们定向到 CONTRIBUTORS.md
文件和任何其他相关文档。
由于问题通常并不代表具体的任务,因此对问题进行评论以礼貌地将用户引导至相关文档可能是保持互动专业和友善的好选择。 如果此问题的文档不存在,现在是添加相关文档的好时机,并感谢用户发现此疏忽。 如果您通过问题收到很多问题,您可以考虑在您的文档中创建一个常见问题解答部分,或者创建一个 wiki 或论坛以供其他人参与问答。
每当用户报告问题时,请尽量表现得友善和亲切。 问题是用户喜欢您的软件并希望使其变得更好的指标!
努力组织问题,您可以使您的项目保持最新并与其用户社区相关。 删除项目范围之外或过时的问题,并优先考虑其他问题,以便您能够不断取得进展。
自动化任务
您可以通过自动化维护任务和测试来提高项目的效率和质量。 自动化维护和测试可以持续检查您的代码的准确性,并为批准贡献者提交提供更正式的流程。 这有助于腾出时间,以便您可以专注于项目中最重要的方面。 最好的消息是已经开发了很多工具,可以满足您项目的需求。
- 通过 要求状态检查 来设置传入贡献的自动测试。 确保在
CONTRIBUTING.md
文件中包含有关如何为您的项目进行测试的信息。 - 查看为自动化维护任务而开发的 工具 。 几种可能性包括自动化您的发布和代码审查,或者如果作者在请求信息时没有回复,则关闭问题。
请记住,少即是多。 有意识地处理您选择自动化的流程和任务,以优化您的项目、您自己和贡献者的效率、生产和质量。
做出贡献奖励
您越是欢迎贡献者加入您的项目并奖励他们的努力,您就越有可能鼓励更多的贡献。 为了让人们开始,您需要在存储库的顶层包含一个 CONTRIBUTING.md
文件,并在您的 README.md
文件中包含一个指向该文件的指针。
一份关于贡献的好文件将概述如何作为开发人员开始从事该项目。 您可能希望提供分步指南,或提供供开发人员遵循的清单,解释如何通过拉取请求成功地将他们的代码合并到项目中。
除了有关如何为项目做出贡献的文档外,不要忘记始终保持代码的一致性和可读性。 通过注释易于理解的代码以及清晰一致的用法将大大有助于让贡献者觉得他们可以参与到项目中。
最后,维护一份贡献者或作者列表。 您可以邀请贡献者将自己添加到列表中,无论他们的贡献是什么(即使修正错别字也很有价值,并且可以在未来带来更多贡献)。 这提供了一种方法,可以以他们可以指出的面向公众的方式识别贡献者在项目中的工作,同时也让其他人意识到贡献者的待遇如何。
建立你的社区
通过文档授权用户、对问题做出响应并鼓励他们参与,您已经在围绕您的开源项目建立社区的道路上很好。 让您满意的用户以及您视为合作者的用户将反过来推广您的软件。
此外,您可以通过各种途径推广您的项目:
- 写博客
- 发布概述或演练视频
- 维护邮件列表
- 活跃于社交媒体渠道
- 与类似或相关项目合作并交叉推广
您需要根据您的项目范围以及与您合作的活跃团队成员和贡献者的数量来调整您的促销活动。
随着社区的发展,您可以为贡献者、用户和维护者提供更多交互空间。 您可以考虑的一些选项包括:
- 可以提供在社区级别维护的文档的 Wiki
- 讨论可能的功能和回答问题的论坛
- 用于基于电子邮件的社区参与的列表服务
在推出这些潜在空间之前,请考虑您的核心用户群和项目范围(包括维护项目的人数和可用资源),并从社区寻求对他们有用的反馈。
最重要的是,在与社区的所有互动中保持友善并表现出一些爱是很重要的。 成为一个亲切的维护者可能很困难,但它会为您的项目带来回报。
结论
存储库维护者在更大的开源社区中非常重要。 尽管这需要大量投资和辛勤工作,但它通常是一种有益的体验,可以让您成长为开发人员和贡献者。 作为一个平易近人且善良的维护者可以大大促进您关心的项目的开发。