
掌握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 工作模型。
开源贡献意味着以任何方式改进开源项目。你可能对贡献有误解的是,你需要单独为源代码做出贡献。实际上,这并非全部。
为开源项目的源代码做出贡献只是您可以做出的一种贡献。但是,您还可以为其他领域做出贡献,例如,
以上都是重要的开源项目贡献。
开源贡献为开发人员带来了许多好处。一些主要优点是:
因此,我们现在了解了开源模型及其优势。接下来我们要学习的是如何从开源贡献开始,既可以作为项目的贡献者,也可以作为维护者。
在我们这样做之前,让我们澄清一下关于开源的某些误解。
❌ 误区:我不知道如何编码。开源不是我的菜。
✅ 事实:开源不仅仅是编码!您有很多机会为改进文档、测试、创建媒体、创建内容等做出贡献。因此,不要退缩,认为缺乏编码会阻止您为 OSS 做出贡献。
❌ 误区:我知道怎么编码,但我不熟悉这个开源项目中使用的技术。我不能做出贡献。
✅ 事实:相反,这是学习您尚未了解的东西的绝佳机会!开源生态系统有足够的耐心为您提供这些时间,以便您可以学习和做出贡献。
❌ 误区:开源没有维护企业级标准。
✅ 事实:完全不是这样的。事实上,如今许多企业软件都由开源软件提供支持。假设开源项目不关心质量和标准是不正确的。
❌ 误区:开源项目不容易维护。
✅ 事实:开源项目由贡献者提供支持。维护者的一个重要方面是奠定基础、创建路线图、建立社区并保持更高的动力。
对于许多开源项目,维护人员甚至不必编写代码。贡献者可以运行该节目,前提是维护者提供必要的支持。
❌ 误区:开源软件永远是免费的。
✅ 事实:它们中的大多数都是免费的,但并非所有 OSS 都是免费的。它由项目使用的许可证类型驱动。某些许可证具有限制性,可以免费以任何方式使用和分发代码。您需要特别注意项目的许可信息,以了解 OSS 将提供 “多少” 免费。
❌ 误区:开源适合初学者。
✅ 事实:许多开发人员认为 OSS 适合初学者和学生。事实上,我们欢迎每个人都做出贡献。主题专家利用他们的知识和经验来增强开源项目是有意义的。
开发人员需要了解一些基本知识才能快速开始使用开源项目。这些是可选的先决条件,但如果您意识到这一点,您将享受到更好地为开源做出贡献的乐趣。
如果您已经了解 Git 的概念及其主要用途,那么您就已经取得了显著的进步。在开源世界中,Git 无处不在,是不容忽视的重要工具。
您至少需要了解这些主题,
GitHub 上有 128M+ 公共仓库。这些存储库的很大一部分是开源项目。您要参与的开源项目也可能在 GitHub 上。因此,您应该学习如何在 GitHub 上处理相关事务。
作为开源项目的贡献者,您必须了解:
作为项目维护者,您必须知道,
您可以关注下面的 Twitter 帖子。它为您逐步解释了所有内容,
分叉是另一个需要理解的重要概念。大多数项目不允许贡献者直接在仓库上创建分支。相反,贡献工作流程可能如下所示:
根据我与许多贡献者合作的经验,他们中的大多数人都觉得分叉的概念有点挑战性。
询问开发人员对解决合并冲突的看法。虽然这并非易事,但经验越多,技巧越熟练。了解解决合并冲突的过程、如何考虑以及如何解决合并冲突。
文档是任何开源项目的关键需求之一。一个文件解释了项目、设置、运行和部署等。Readme.md 文件讨论了如何为项目做出贡献。Contributing.md 文件描述了对贡献者的行为和参与的期望。当然,你可以根据你的项目需求编写许多其他文件,如CODE_OF_CONDUCT.md。md 代表Markdown,它是用于在GitHub中进行文档记录的语法。最好学习基本语法,以便你可以无缝地参与文档编写。md 是一个提供Mark Down语法以复制和使用的开源项目,你可能想要看一看:
https://github.com/atapas/markdown-cheatsheet
开源是许多开发人员共同工作、学习和构建的绿色领域。作为贡献者,您的技术技能可能不足以充分享受开源体验。
让我们讨论一下开发人员必备的一些软技能。
现在让我们看看如何开始使用开源贡献。下面的列表提供了链接和资源,供您立即开始开源贡献。
GitHub Explore 根据您的兴趣显示存储库。您可以设置通知以获取有关项目的通知。
此外,您还可以按主题和趋势搜索存储库。使用 GitHub explore 找出与您的技能、需求和抱负更相关的项目。您可以在此处找到它: https://github.com/explore/
这个来自 freeCodeCamp 的仓库绝对是一颗宝石。它为您提供了许多资源,以及开始使用开源的指针。您可以在此处找到它: https://github.com/freeCodeCamp/how-to-contribute-to-open-source
该网站可帮助您提供可供选择的编程语言列表——JavaScript、HTML、Rust、Go 等等。您将获得可供选择的存储库卡。这是一个简单的起点。您可以在此处找到它: https://contributor.ninja/
这是一个庞大的开源项目列表,可供搜索和筛选。他们还有一个指导良好的入门文档。您可以在此处找到它:https://firstcontributions.github.io/
CodeTriage 是一个包含未解决 Issues 的庞大项目列表。它显示了要分类的问题和文档的分离。该网站非常有用。您可以在此处找到它:https://www.codetriage.com/
这是根据您的兴趣可供选择的开源项目的完整列表。您可以在此处找到它: https://up-for-grabs.net/#/
如果您以前从未为开源项目做出贡献,并且刚刚开始,请考虑阅读此页面。
你可能会看到我们已经讨论过的许多来源,但这个页面充满了动机。您可以在此处找到它:https://www.firsttimersonly.com/
你这个星期五或下个星期五要做什么?花几个小时为您使用和喜爱的软件做出贡献怎么样。请查看并注册。您可以在此处找到它: https://opensourcefriday.com/
我希望这些资源对您有所帮助。此外,请随时查看此 Twitter 线程和回复,您可能会找到有关它的更多信息。
到目前为止,我们已经探讨了开源贡献者的角色。如果不提及开源项目维护者的标准,这篇文章将显得不完整。
作为项目的维护者,您必须遵循某些标准,以便其他人了解并为您的项目存储库做出贡献。
Readme.md
文件来说明项目目标、如何使用、如何设置等。如果源代码是存储库的核心,那么 README 文件就是它的表面。就这样!我们已经到了本文的结尾。我希望你觉得这篇文章很有见地,并且它给了你足够的动力来开始为开源做出贡献。
在结束之前,我想提几个开源项目和存储库供你研究。
这个列表可以继续增长,但我就此打住。如果您喜欢阅读本文或有任何疑问,想要联系,您可以在以下位置找到我:
原文链接:https://www.freecodecamp.org/news/a-practical-guide-to-start-opensource-contributions/