掌握ChatGPT插件与自定义GPT
开源手册:为开发者提供的初学者手册
当你听到开源这个词时,你会想到什么?在编程领域,开源是开源软件 (OSS) 的通用术语。开源软件建立在源代码之上,每个人都可以查看、更改、扩展和分发。
本文将探讨开源软件及其生态系统的多个方面,包括开始为开源做贡献所需的条件、必备技能、如何维护开源项目、面临的挑战、可用资源以及一些激动人心的项目。
在开始之前,我想分享一些关于我自己以及我对开源世界的热情。
我每天都使用并贡献于多个开源项目和服务,这不仅提升了我的技能,也让我有机会回馈社区。此外,我还维护着一系列开源项目,旨在帮助初学者学习Web编程。
您可以通过查看我的GitHub个人资料来了解我所维护的开源项目。
通过这篇文章,我将与您分享我的经验,希望能帮助您开始参与开源(如果您还没有这样做的话)。
开源如何运作?
开源项目由以下人员和元素组成:
Project Maintainer(s)
:维护者是启动开源项目、管理项目、做出决策、集思广益以及与贡献者、用户和营销平台密切合作的一个或多个人。
项目维护者将拥有额外的访问权限和特权来控制项目的各个方面。
Project Contributor(s)
:当维护者启动一个开源项目时,他们成为最初的贡献者。随着项目的发展和知名度的提高,愿意为其做出贡献的人数也会增加。
随着项目的发展,该项目的贡献者会越来越多。任何人都可以查看项目代码、修改它、请求审查并将更改导入项目。
Source Code and Documentation Repository
:维护者将项目源代码保存在一个集中的源代码仓库(例如 GitHub)中。它帮助所有贡献者获得对代码的必要访问权限来做出贡献。
Project License
:每个开源项目都必须指定一个分发许可证,以便其用户/消费者清楚。
存在各种许可证类型,维护者可以根据适合项目的方式选择一种。一些广泛分布的分发许可证是 MIT、Apache 许可证 2.0、GNU 通用公共许可证 (GPL) 3.0 等。
Contributing Guide
:OSS 项目的维护者创建一个贡献指南,以帮助贡献者了解拉取请求流程、标准、范围等。
Code of Conduct Guide
:行为准则指南讨论了各种准则、协作方式、贡献者的行为期望,以及如何升级和解决问题。
Project Culture
:项目文化随着项目社区的发展而发展。虽然维护者在其中扮演着重要角色,但贡献者们同样承担着维护一个健康、促进学习、分享和成长的文化的责任。
Community
:随着项目的发展,社区会围绕它进行建设。GitHub Discussions 和 Discord 等工具以组织基于社区的互动而闻名。
Distribution
:开源项目应该有办法接触到其最终用户和消费者。应该有一个分发模型来帮助将代码转换为最终产品以进行交付。
Users/Customers
:用户或客户是开源团队使用源代码构建的产品的使用者。
现在让我们看看下图。在这里,我们看到了一个开源项目社区,包括维护者和贡献者。
源代码位于集中式存储库中。贡献者(我们稍后会学习的术语)会提交他们的代码作为贡献。贡献结束后,项目将通过 main 分支进行维护。在这个过程中,fork、upstream repository 和 merges 是与版本控制系统密切相关的重要概念。
如果您不熟悉 fork、branch、merge 等术语,请不要担心。我们很快就会在本文中学习它们。请继续阅读。
现在让我们了解一下开源软件是如何交付给用户 / 客户的。
下图显示了高级别众多可能性之一。开源项目应具有使用持续集成和持续部署 (CI/CD) 流程的构建-打包-部署机制。
每当代码在main分支中发生更改时,CI/CD工作流会自动启动。它会构建源代码、打包源代码并部署它,以便最终用户和目标客户可以访问。
请注意:CI/CD 或任何其他部署机制并不是开源软件开发的绝对组成部分。但是,了解它有助于端到端地了解 OSS 工作模型。
开源贡献是什么意思?
开源贡献意味着以任何方式改进开源项目。你可能对贡献有误解的是,你需要单独为源代码做出贡献。实际上,这并非全部。
为开源项目的源代码做出贡献只是您可以做出的一种贡献。但是,您还可以为其他领域做出贡献,例如,
- 改进项目的文档,以便更多的贡献者和用户发现。
- 测试应用程序,发现问题,并在问题管理系统中创建问题。
- 参与代码审查,以帮助项目制定更好的编码标准。
- 编写单元测试、端到端测试,并提高应用程序质量。
- 创建文章和视频等内容以传播对项目的认识。
- 帮助建立社区。
以上都是重要的开源项目贡献。
开源贡献的好处
开源贡献为开发人员带来了许多好处。一些主要优点是:
- 有机会提高自己的技能。
- 使用代码和文档使软件/应用程序变得更好。
- 结识志同道合的人,建立网络和社区。
- 了解应用程序开发和维护周期。
- 从 Pull Request 反馈中学习。
- 了解如何以开源方式管理代码。
开源神话
因此,我们现在了解了开源模型及其优势。接下来我们要学习的是如何从开源贡献开始,既可以作为项目的贡献者,也可以作为维护者。
在我们这样做之前,让我们澄清一下关于开源的某些误解。
❌ 误区:我不知道如何编码。开源不是我的菜。
✅ 事实:开源不仅仅是编码!您有很多机会为改进文档、测试、创建媒体、创建内容等做出贡献。因此,不要退缩,认为缺乏编码会阻止您为 OSS 做出贡献。
❌ 误区:我知道怎么编码,但我不熟悉这个开源项目中使用的技术。我不能做出贡献。
✅ 事实:相反,这是学习您尚未了解的东西的绝佳机会!开源生态系统有足够的耐心为您提供这些时间,以便您可以学习和做出贡献。
❌ 误区:开源没有维护企业级标准。
✅ 事实:完全不是这样的。事实上,如今许多企业软件都由开源软件提供支持。假设开源项目不关心质量和标准是不正确的。
❌ 误区:开源项目不容易维护。
✅ 事实:开源项目由贡献者提供支持。维护者的一个重要方面是奠定基础、创建路线图、建立社区并保持更高的动力。
对于许多开源项目,维护人员甚至不必编写代码。贡献者可以运行该节目,前提是维护者提供必要的支持。
❌ 误区:开源软件永远是免费的。
✅ 事实:它们中的大多数都是免费的,但并非所有 OSS 都是免费的。它由项目使用的许可证类型驱动。某些许可证具有限制性,可以免费以任何方式使用和分发代码。您需要特别注意项目的许可信息,以了解 OSS 将提供 “多少” 免费。
❌ 误区:开源适合初学者。
✅ 事实:许多开发人员认为 OSS 适合初学者和学生。事实上,我们欢迎每个人都做出贡献。主题专家利用他们的知识和经验来增强开源项目是有意义的。
开始使用开源需要了解的内容
开发人员需要了解一些基本知识才能快速开始使用开源项目。这些是可选的先决条件,但如果您意识到这一点,您将享受到更好地为开源做出贡献的乐趣。
了解 Git 基础知识
如果您已经了解 Git 的概念及其主要用途,那么您就已经取得了显著的进步。在开源世界中,Git 无处不在,是不容忽视的重要工具。
您至少需要了解这些主题,
- 什么是 Git,它是如何工作的?
- 什么是存储库?
- 如何克隆仓库?
- 如何暂存/取消暂存更改?
- 如何提交更改?
- 如何编写更好的提交信息?
- 如何解决合并冲突?
- 如何将更改推送到远程仓库?
- 如何从远程仓库拉取更改?
熟悉 GitHub
GitHub 上有 128M+ 公共仓库。这些存储库的很大一部分是开源项目。您要参与的开源项目也可能在 GitHub 上。因此,您应该学习如何在 GitHub 上处理相关事务。
作为开源项目的贡献者,您必须了解:
- 如何使用fork 仓库?
- 如何找到克隆仓库的 URL?
- 如何创建 Pull Request?
- 如何审查 Pull Request?
作为项目维护者,您必须知道,
- 如何创建存储库?
- 如何将 License 信息添加到项目中?
- 如何创建 Contributing guide 和 Code of Conduct 指南?
- 如何设置创建议题和拉取请求的标准?
- 如何合并拉取请求?
您可以关注下面的 Twitter 帖子。它为您逐步解释了所有内容,
了解如何复刻仓库
分叉是另一个需要理解的重要概念。大多数项目不允许贡献者直接在仓库上创建分支。相反,贡献工作流程可能如下所示:
- 复刻存储库。
- 克隆 fork 的存储库。
- 执行更改。
- 从 UPSTREAM 获取更改。
- 创建从 fork 仓库到基本仓库的拉取请求。
根据我与许多贡献者合作的经验,他们中的大多数人都觉得分叉的概念有点挑战性。
了解如何解决合并冲突
询问开发人员对解决合并冲突的看法。虽然这并非易事,但经验越多,技巧越熟练。了解解决合并冲突的过程、如何考虑以及如何解决合并冲突。
学习 Markdown 语法
文档是任何开源项目的关键需求之一。一个文件解释了项目、设置、运行和部署等。Readme.md 文件讨论了如何为项目做出贡献。Contributing.md 文件描述了对贡献者的行为和参与的期望。当然,你可以根据你的项目需求编写许多其他文件,如CODE_OF_CONDUCT.md。md 代表Markdown,它是用于在GitHub中进行文档记录的语法。最好学习基本语法,以便你可以无缝地参与文档编写。md 是一个提供Mark Down语法以复制和使用的开源项目,你可能想要看一看:
https://github.com/atapas/markdown-cheatsheet
培养您的软技能
开源是许多开发人员共同工作、学习和构建的绿色领域。作为贡献者,您的技术技能可能不足以充分享受开源体验。
让我们讨论一下开发人员必备的一些软技能。
- 耐心:是开发人员必备的技能。当您学习新事物、调试复杂问题、与他人合作、与某人谈判以及获取/提供反馈时,它是必需的。有时,事情可能不会按照您预期的速度发展,因此您需要有耐心并评估情况。
- 好奇心:在为开源项目做出贡献时,这种好奇心可以激发无限的可能性。它不仅是解决技术难题的动力,也是促进团队协作的重要因素。
- 响应式:在开源生态系统中,您可能无法每天与人见面和交谈,但工作必须继续进行。您需要参与查询、任务、请求以及您负责的任何事情。许多伟大的举措仅仅因为缺乏人们的响应而夭折。
- 保持谦逊:谦逊是成功的关键。知识渊博但不谦虚的人往往无法作为一个团队工作。
如何开始为开源项目做出贡献
现在让我们看看如何开始使用开源贡献。下面的列表提供了链接和资源,供您立即开始开源贡献。
GitHub 探索
GitHub Explore 根据您的兴趣显示存储库。您可以设置通知以获取有关项目的通知。
此外,您还可以按主题和趋势搜索存储库。使用 GitHub explore 找出与您的技能、需求和抱负更相关的项目。您可以在此处找到它: https://github.com/explore/
如何通过 freeCodeCamp 为开源做出贡献
这个来自 freeCodeCamp 的仓库绝对是一颗宝石。它为您提供了许多资源,以及开始使用开源的指针。您可以在此处找到它: https://github.com/freeCodeCamp/how-to-contribute-to-open-source
Contributor Ninja
该网站可帮助您提供可供选择的编程语言列表——JavaScript、HTML、Rust、Go 等等。您将获得可供选择的存储库卡。这是一个简单的起点。您可以在此处找到它: https://contributor.ninja/
首次贡献
这是一个庞大的开源项目列表,可供搜索和筛选。他们还有一个指导良好的入门文档。您可以在此处找到它:https://firstcontributions.github.io/
CodeTriage
CodeTriage 是一个包含未解决 Issues 的庞大项目列表。它显示了要分类的问题和文档的分离。该网站非常有用。您可以在此处找到它:https://www.codetriage.com/
见者有份
这是根据您的兴趣可供选择的开源项目的完整列表。您可以在此处找到它: https://up-for-grabs.net/#/
仅限初次体验者
如果您以前从未为开源项目做出贡献,并且刚刚开始,请考虑阅读此页面。
你可能会看到我们已经讨论过的许多来源,但这个页面充满了动机。您可以在此处找到它:https://www.firsttimersonly.com/
开源星期五
你这个星期五或下个星期五要做什么?花几个小时为您使用和喜爱的软件做出贡献怎么样。请查看并注册。您可以在此处找到它: https://opensourcefriday.com/
我希望这些资源对您有所帮助。此外,请随时查看此 Twitter 线程和回复,您可能会找到有关它的更多信息。
开源项目维护者
到目前为止,我们已经探讨了开源贡献者的角色。如果不提及开源项目维护者的标准,这篇文章将显得不完整。
作为项目的维护者,您必须遵循某些标准,以便其他人了解并为您的项目存储库做出贡献。
- 提供项目的明确名称和描述。您还应该添加与您的项目相关的主题。
- 添加一个清楚的
Readme.md
文件来说明项目目标、如何使用、如何设置等。如果源代码是存储库的核心,那么 README 文件就是它的表面。 - 建立社区档案。它可以帮助开源存储库维护者审查工作并学习如何帮助其发展。
- 制定行为准则。
- 创建 Contributing Guide。
- 确定 Issue 模板。
- 创建 Pull Request (PR) 模板。
- 激活 GitHub Sponsors。
在我们结束之前…
就这样!我们已经到了本文的结尾。我希望你觉得这篇文章很有见地,并且它给了你足够的动力来开始为开源做出贡献。
在结束之前,我想提几个开源项目和存储库供你研究。
- EddieHub
- ReactPlay
- Hacktoberfest
- First Contributions
- The Hive
这个列表可以继续增长,但我就此打住。如果您喜欢阅读本文或有任何疑问,想要联系,您可以在以下位置找到我:
- 在 Twitter 上关注
- 在 LinkedIn 上联系
- 在 GitHub 上了解我的工作
- 订阅我的 YouTube 频道
原文链接:https://www.freecodecamp.org/news/a-practical-guide-to-start-opensource-contributions/