使用这些步骤来为你的第一个或接下来的项目打下坚实的基础。
开源 是一个蓬勃发展且有益的生态系统,它通过分散模式和社区贡献开发的软件,公开解决社区和行业问题。
随着这个生态系统的爆炸式发展,许多开发者想要参与并且构建新的开源项目。问题是:如何成功实现这一目标呢?
这篇文章将会揭秘开源项目的生命周期与结构。给你一个对开源项目内部运作的概述,并根据我个人的经验,向你展示如何构建一个成功和可持续发展的项目。
对开源的简单概述
开源促进会 Open Source Initiative (OSI)提供了对“ 开源 Open Source ”的正式、详细的定义,但是维基百科提供了一个很好的总结:
开源软件是指根据许可证发布的计算机软件,版权持有人授予用户使用、研究、更改和向任何人、为了任何目的分发软件和它的源代码的权利。
开源软件通常在网络上有公开的代码,它由多人合作或一人开发。这就需要与来自不同地区、不同文化和不同技术背景的人合作,而且往往是远程合作。
开源项目的构成
就像人类的身体,一个开源项目由多个结构组成,这些结构构成了整个系统。我认为它们是两个分支:人员(微观)和文档(宏观)。
分支一:人员
通常,一个开源项目包括以下人群:
- 创建者:创建项目的人
- 维护者:积极管理整个项目的人
- 贡献者:为项目做贡献的人(像你一样的人!)
- 用户:使用这个项目的人,包括开发者和非技术客户
- 工作组:将贡献者分成特定领域的小组,专注于围绕特定主题领域(如文档、指引、测试、DevOps、代码审查、性能、研究等)的集合。
- 赞助人:为项目提供资金支持的人
当你准备构建一个新项目时,你需要考虑以上列表中的每一个群组。你对他们每个人有什么计划?
- 对于维护者,请确定任用维护者的标准。通常,积极的贡献者就是最适合的维护者。
- 对于用户和贡献者,你需要准备可靠的文档、引导流程和他们使用你的项目取得成功所需的一切。
- 对于工作组,请确定你是否需要它们,以及你的项目将来如何有逻辑地拆分。
- 最后,对于赞助人,你必须提供足够的数据和有关你项目的信息,以便他们选择赞助你。
你不必在你项目的起始阶段解决上面所有问题。然而,在早期阶段思考它们是很明智的,这样你就能打下正确的基础,确保未来的扩建项目能够站稳脚跟并取得成功。
分支二:文档
开源项目通常包括下列文档,通常为纯文本或 markdown 格式:
- 许可证(
License
): 这份法律文件解释了如何以及在何种程度上可以自由使用、修改和共享本项目。OSI 网站上有 OSI 认可的许可证列表。如果没有明确的许可证,你的项目在法律上就不是开源的! - 行为准则:该文件概述了任何决定以任何方式参与项目的人的规则、规范、可接受做法和责任(包括当有人违反任何规则时会发生什么)。贡献者公约 是一个很好的示例,它是开源的(采用知识共享许可协议)。
- 自述文件(
README
):这个文件向新用户介绍你的项目。在很多 Git 托管网站上,比如 GitLab、GitHub 和 Codeberg,自述文件会显示在仓库的初始文件列表下。这里通常会提供文档,以及其他必要文档的链接。 - 文档(
Documentation
):这是一个包含所有本项目文件资源的文件或目录,包括指南、API 参考、教程等。 - 贡献指南(
Contributing
):包含一份说明如何为项目做出贡献的文件,包括安装指南、配置等。 - 安全(
Security
):包括一个解释如何提交漏洞报告或安全问题的文件。
此外,一个项目通常有用于议题、支持和协作的网页。
大致包括:
- 议题或错误报告:用户可以报告错误的地方。该页面还为开发人员提供了一个地方,让他们可以分配自己的任务来修复一个或多个错误。
- 拉取或合并请求:提供功能增强建议和错误解决方案的地方。这些补丁可以由任何人创建,由维护者审核,然后合并到项目代码中。
- 讨论:维护者、贡献者和用户讨论开源项目的地方。它可以是一个专门的网站,也可以是协作编码网站中的一个论坛。
大多数项目还通过在线聊天的形式为社区成员之间的对话和互动提供交流渠道。
许可证
许可证 也许是创建开源项前需要考虑的最简单但也是最重要的标准。许可证定义了允许使用、修改和共享项目源代码和其他组件的条款和条件。
许可证包含大量的法律术语,很多人并不完全理解。我使用 choosealicense.com,它可以帮助你根据你的目标社区、你从使用你的代码的人那里获得补丁的愿望,或者你允许别人使用你的代码而不分享他们对你的代码所做的改进来选择许可证。
这为何时使用 MIT 许可或 GNU GPLv3 许可提供了指导。它还建议为社区做出贡献的人们使用该社区所偏好的许可证。该图表还指出,还有更多许可证可供选择。网站 choosealicense.com 有一个基于文本的版本,可以链接到更详细的信息。
创建一个开源项目的 13 个阶段
现在是关键问题:如何开始开源软件项目?
以下是我所认为的开源项目的各个阶段。
随着项目的进展,对项目的不同部分进行评估非常重要。这将为你提供可用于评估和未来发展战略的数据。
现在开始一个项目吧!
我希望这篇文章能帮助你推进你一直在考虑的项目。
你可以将其用作指南,并在构建你的一流开源软件项目时填补我遗漏的任何空白。
(题图:MJ/a22b4011-9b1e-41e6-a73f-bdeac4858007)
via: https://opensource.com/article/22/9/build-open-source-project
作者:Bolaji Ayodeji 选题:lkxed 译者:wcjjdlhws 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出