开源完整指南 - 简单 100 倍
我从事开源事业已经超过 500 天了。
我在 GitHub 上回复了超过 35 个讨论(其中 300 多个是积极参与的),成功合并了超过 200 个 PR,获得了超过 500 个 Star,并为超过 40 个代码库做出了贡献。我拥有足够的知识来指导他人。
别担心。
如果您不了解条款也没关系;我们会涵盖所有内容。
还有很多其他博客可供选择,但它们可能无法涵盖所有内容,而这正是本文的主要目的。
我当时是跟着流程学的,没有学习任何课程或资源。
所以,我花了很长时间才理解所有内容。
不过你不需要。
每个人处于不同的阶段,因此我创建了一个目录,概述了每个部分涵盖的内容。
如果您了解这些部分或非常有信心,请跳过它们并进入下一个部分。
注意:
请按顺序阅读并跳过各个章节。前面的章节对于后续章节至关重要,并且其结构也与前面的章节相符。
我建议阅读所有内容!
我会把我的所有经历都倾注到这篇文章里。
开始吧!希望你会喜欢!
目录
- 开源的概念。
- 为什么你应该为开源做出贡献?
- 贡献意味着什么。
- 典型的开源项目中有哪些角色?
- 先决条件(Git + GitHub + Markdown)。
- 常规提交。
- 开源贡献的基本流程。
- 优秀开源项目的标准指南。
- 如何找到好的开源项目。
- 为开源做出贡献的理想方式。
- 如何在 Pull Request 中建议/解决代码请求更改。
- 开源的法律方面。
- 额外资源。
1.开源的概念。
想象一下,你有一个很酷的项目,比如一款超级好玩的游戏。现在,只有你能玩,因为你掌握了秘密规则(代码)。现在,如果你把规则告诉你的朋友,他们开始在你的游戏里添加新内容,会怎么样?这就像开源一样!
开源意味着与所有人共享你的项目规则(代码)。就像你分享游戏规则一样,其他人可以查看、学习,甚至添加新功能。例如,想象一下,如果谷歌分享他们制作谷歌地图的过程。人们可以通过修复问题和添加有趣的内容来帮助改进它。
这就像一个大团队免费互相帮助!如果你也帮忙,就像获得一枚特殊的徽章,上面写着:“我参与制作了这个很酷的东西!”
想象一下,如果你可以告诉每个人,“我帮助制作了谷歌地图!”这就是为什么开源真是太棒了。
你不必是技术专家。开源适合所有人,即使是不懂编程的人。没错,甚至适合你 :)
我希望你对开源有一点了解。
开源路线图
即使你问开源领域的资深人士,也没有这样的路线图。可以有一个通用的流程,但我向你保证,每个人都有自己参与开源的方式。
刚开始的时候,我只是想了解一下 GitHub,甚至对开源一无所知。所以,如果你是新手,不用担心。
尽情探索,享受乐趣吧!
2. 为什么你应该为开源做出贡献?
开源不仅仅是合并 PR。
在这个我们比以往任何时候都更加紧密联系的世界里,成为开源社区的一部分可能是开启新机遇和实现个人成长的关键。
你编码。协作。网络。
你不需要工作。
你不需要经验。
你不需要成为一名技术人员。
您无需任何准备即可开始使用。
开源社区也给予了大力支持。
你将学到什么?
你将获得实用知识。
你将掌握现代开发实践。
你将获得信誉,并结识新朋友。
最重要的是。
我们永远欢迎你。
而且你随时都能和经验丰富的人互动。🔥
您应该为开源做出贡献的原因有很多:
-
学习、教授和获得几乎任何你能想到的技能的经验。
-
公开所有内容会增加您个人资料的可信度。
-
建立您的声誉并帮助您发展事业。
-
如果需要的话,可以寻找一位导师,或者建立一个强大的网络。
-
它能带来个人满足感,而且你永远不知道谁在看着——可能是你的下一个雇主或合作伙伴。
提示:为了获得长期利益,请选择好的组织而不是单独的存储库。
3. 贡献意味着什么。
如果您是开源新手,这个过程可能会让您感到畏惧。
人们对此感到困惑。
如何找到合适的项目?
如果不懂编程怎么办?
如果出了问题怎么办?
你不必贡献代码
我已经说够了,再说一遍。
关于为开源做贡献,一个常见且致命的误解是你必须贡献代码。
相信我,你不必这么做。
-
如果您喜欢策划活动。
- 为项目组织研讨会或聚会。
- 帮助社区成员找到适合演讲者的正确媒介
-
如果你喜欢设计。
- 改进设计以提高可用性。
- 您可以制作一个开发人员可以遵循的样式指南,以实现一致的视觉设计。
- 您了解可用于提出变更的 UX 法律。
- 创建新标识并提升品牌影响力。
-
如果你喜欢写作。
- 改进文档和贡献指南
- 撰写教程并推荐新闻通讯。
不要低估文档的力量。
-
你喜欢编码吗?
- 解决技术问题。
- 建议新功能。
- 改进测试和其他代码标准。
现在,您需要找到一个好的软件项目,对吗?
哎呀,不行!
还有更多精彩!亲自探索。
4. 典型的开源项目中有哪些角色?
这很重要,每个人都需要熟悉这些角色。
贡献者:
这些人以各种方式为项目做出贡献。他们遵循contributing guidelines
这些指导,了解如何做出贡献并帮助项目发展。
维护者:
每个优秀的开源项目都有很多事情要做,而这些人负责推动项目的愿景和目标。他们审查代码,并提出功能建议和考量。
他们更像是团队的内部部分。
不同的团队负责不同的任务。
有些维护人员会指派人员处理问题,有些则负责代码审查,并完成其他工作。
我也是 LinksHub 的开源维护者。
作者:
创建项目的个人或组织有权招募维护者、分配新角色,并且是主要权威。
项目业主:
对组织或项目拥有管理所有权的个人(不一定与原作者相同)
社区成员/用户:
这些社区成员可以提供有关产品的反馈、建议错误或改进等等。
这些人既不是贡献者也不是维护者,只是产品的用户。
5. 先决条件(Git + GitHub + Markdown)。
开源社区在 GitHub 上,因此您需要了解一些有关 Git 和 GitHub 的知识。
让我们逐一介绍一下。
GitHub:
想象一下,GitHub 就像一个巨大的、神奇的玩具箱,里面存放着人们最喜欢的玩具(代码)。每个人都能看到这些玩具,甚至还能玩它们!
假设你有一个很酷的玩具(代码),比如一个机器人。你想让它变得更好,所以把它放进了 GitHub 玩具箱。现在,你的朋友们可以看到你的机器人,提出建议,甚至添加新的酷炫功能!
GitHub 帮助朋友们(开发者)一起开发玩具(代码),让它们更加精彩。它就像一个游乐场,大家分享玩具,互相帮助,享受无穷乐趣!
您可以在官方网站上了解有关GitHub 的更多信息。
- 您可以通过 YouTube 教程或Google 课程了解它,大约 3 年前我就是通过 Google 课程学习的。
Git:
想象一下,Git 就像你电脑上的一个神奇背包。当你在电脑上绘图时,Git 会帮你保存不同版本的绘图。所以,如果你想回到昨天的绘图状态,GitGit
可以帮你实现。
这就像是给你的电脑绘图装了一台时光机!
这其中还涉及很多其他概念,但这就是人们说 Git 是一个“版本控制系统”时的意思。
我从一个流行的免费 Udacity 课程中学习了 Git 。
我可以向你保证,这是最好的短期课程之一,它不会让你觉得自己像个白痴,并且会深入解释一切。
降价:
Markdown 是一种易于阅读、易于编写的格式化纯文本的语言。
它用于在 GitHub 上交流一切。你必须了解它的基础知识。
如果您以前使用过 HTML,那么这很简单。
这份Markdown 速查表涵盖了所有内容。我至今仍在使用它。
这是另一个markdown 备忘单,您可以通过 cheatography 来参考。
您可以使用Dillinger作为在线编辑器,预览最终输出的效果。
6. 常规提交。
如果你对 Git 有所了解,你就会明白。
提交信息至关重要,它可以区分初学者和经验丰富的开发人员。这些约定使提交的类型一目了然。
您应该每次都遵循这些惯例。
您必须注意的一个方便的规则是:我们在编写提交消息时只使用现在时。Added ..
这是不正确的提交消息。
其中涉及很多技术术语,但您可以仅仅为了约定而使用它。
7. 优秀开源项目的标准指南
对此没有正确答案,但每个好的开源项目都必须有明确的指导方针来帮助您HOW
为他们的项目做出贡献(contributing.md
)以及其他一些要求。
让我们深入讨论一下每一个。
贡献指南(Contributing.md)
如果您希望其他人为您的项目做出贡献,这无疑是最重要的方面。
贡献指南因项目而异,除非在自述文件中定义,否则必须回答以下问题:
- 如何开始该项目。
- 清晰地说明所有在本地设置项目的选项
- 清晰的分步说明,说明他们可以用项目做什么以及他们可以在哪里做出贡献
- 它还可以包括代码质量标准和测试
- 值得注意的是,并非每个项目都
contributing.md
取决于他们想要如何做出贡献。
我遇到的最好的贡献指南来自Simple Icons。我的开源之旅就是从 Simple Icons 开始的 :)
您还可以查看LinksHub中的其他一些示例,我与其他维护人员一起对其进行了个人贡献并不断改进。
自述文件
用 markdown 编写的文件README.md
是提供有关项目信息的最重要的文档,包括其目的、安装说明、技术堆栈和使用示例。
自述文件在不同项目中可能有所不同,但好的自述文件总是能吸引更多的贡献者。
例如,您可以看到简单图标、处理多个问题、全栈 MongoDB 项目和Dailydotdev的自述文件示例。
行为守则
行为准则为参与者的行为制定了基本规则,并有助于营造友好、热情的环境。
该文件的名称应该是,您可以在此处CODE_OF_CONDUCT.md
查看示例。
您还可以查看GitHub 社区行为准则。
描述
项目描述可以提高曝光度,并影响算法,从而在 GitHub 上展示你的项目Explore more repositories
。这是人们看到你的项目时会看到的内容。
执照
根据定义,每个开源项目都必须有一个开源许可证。如果一个项目没有许可证,它就不是开源的。
然而,开源是一种特殊情况,因为作者期望其他人能够使用、修改和共享其作品。但由于法律默认的版权仍然是独占性的,因此他们需要通过许可证明确授予这些权限。
您可以参考官方指南,了解应该为您的项目选择哪种许可证。
在这里找到所有许可证。
安全策略
阅读有关向存储库添加安全策略的官方文档。
GitHub 存储库涉及大量包和依赖项,这可能会导致安全漏洞。
这将很有帮助,因为每当有人在您的存储库中创建问题时,他们都会看到与您的项目相关的安全策略的链接。
我喜欢并推荐Novu 的安全策略。
问题和问题模板
问题用于跟踪与项目相关的错误、功能请求和其他任务。
任何人都可以打开问题,并用它来跟踪和确定需要完成的工作的优先级。
问题可以分配给特定的团队成员,使用标签进行标记,并可以进行相关的讨论。
一般情况下,Issue 模板都是 markdown 格式。
但新的版本(目前处于测试阶段)就像问题表单一样,可以提高一致性,并且人们可以轻松地做出贡献。怎么做到的?
问题表单比 Markdown 模板更加用户友好,特别是对于不熟悉 Markdown 语法的贡献者而言。
使用问题表单,您可以确保所有问题都以一致的格式创建,并且每次都包含相同的字段和所需信息。这让维护人员能够更轻松地快速审核和响应问题。
您可以创建这些问题模板,贡献者在尝试创建新问题时会看到它们。
您可以在 GitHub 中创建一个文件:.github/ISSUE_TEMPLATE/file_name.yml
您可以在我之前创建的这个要点中找到问题表单列表。
拉取请求和拉取请求模板
当您对项目的代码库进行更改并希望审核这些更改并最终将其添加到项目中时,您可以创建一个拉取请求。
简单来说,拉取请求(PR)是一种提出项目变更以最终解决特定问题的方式。
阅读如何创建拉取请求。
拉取请求模板
它的作用是,每当有人创建拉取请求时,他们都会收到一个带有示例格式的预定义模板。这有助于他们提供有关拉取请求的清晰信息。
阅读有关为您的存储库创建拉取请求模板的官方文档。
例如,查看此pull_request_template.md及其预览。
您可以创建多个拉取请求模板,为不同类型的拉取请求提供所需信息的选项。
然而,很多人可能不知道这个功能,这可能会让初次贡献的人感到困惑。据我所知,问题表单中没有类似模板的选项,而且只支持 Markdown 格式。
在一些代码库中,你可以找到一个 Wiki,作为项目的额外指南。具体做法取决于项目,但一个好的 Wiki应该是这样的。
您知道您可以将社交图片添加到您的存储库吗?
您可以在设置中找到该选项。
8.开源贡献的基本流程。
你不愿意也没关系,我会解释的!
每个好的开源项目都遵循一个基本流程,如果您不遵循它,大多数情况下您将被视为垃圾贡献者。
a. 第一步是阅读您可以在Contributing.md
或有时 中找到的贡献指南Readme.md
。
b.现在,您可以创建一个新问题,或者查找尚未分配给任何人的未解决的问题。您可以在 GitHub 上了解如何创建问题。
您可以直接评论,看看该问题是否可处理。
不过,在申请分配之前,请确保您能够解决该问题。
c. 被分配后,您可以创建拉取请求,将更改提交到其他分支,并正确链接问题,以便在合并拉取请求时关闭链接的问题。阅读如何创建拉取请求。
d. 您应该及时处理评审中的变更(详见第 11 节),如果遇到重大问题,可以向提出变更建议的人寻求帮助。
另外,您需要将变更推送到创建 PR 的同一分支,否则变更将自动显示在拉取请求中。
什么是垃圾公关?一定要避免!
以下情况将被视为垃圾邮件:
- 发出拉取请求但未被分配。
- 对分配给其他人的问题发出拉取请求。
- 任何不遵守基本开源礼仪的行为。
如果你犯了这些错误也没关系;有些维护人员可能没时间向所有人解释所有事情。只要确保以后不再犯就行了。
例如,专注于数据结构和算法(DSA)或 JavaScript 代码库的项目,如果不遵循这些规范,实际上会使情况变得更糟。创建垃圾拉取请求是不可接受的。
9.如何找到好的开源项目。
这无疑是人们最常问的问题之一。
我总是告诉你,你应该选择一个让你兴奋的项目,而不是仅仅追随技术栈。
我已经在🎁 快捷方式中介绍了所有内容,以 100 倍的速度查找开源项目。
这篇文章的浏览量已超过 2 万次,我是经过深思熟虑并响应众多请求后才写这篇文章的。
不过,为了给你一份有用的代码库列表,你可以在 2024 年不容错过的 20 个开源项目中找到。这些项目都与我息息相关。
查看300 多个不同类别的开源项目。每日更新✅
希望这篇文章能帮你找到你正在寻找的项目!开源见!
10. 为开源做出贡献的理想方式。
正如我所说,开源没有路线图。
这取决于每个人以及他们如何对待它。
但我是一名开源维护者,我可以告诉你我更喜欢贡献者为我的项目做出贡献。
三个简单的步骤,注重长期承诺:
a. 贡献者应阅读指南并了解贡献者的基本工作流程。避免在未进行充分研究的情况下提出问题,因为这会给人留下错误的印象。
b. 加入社区,观察正在进行的活动,并确定您可以轻松做出贡献的领域。下一步是与维护者沟通,了解他们对项目发展的期望。他们的愿景是什么,看看您是否能提供帮助。通过沟通巩固想法和建议。
c. 创建一个问题,清晰地写下你的计划(不要从 ChatGPT 复制粘贴),并概述你打算做什么。一旦分配到任务,请提交拉取请求 (PR),并及时处理请求的变更。保持 PR 处于活跃状态;如果 PR 过期,请务必告知他们原因。
了解有关开源项目中有效沟通的更多信息。
我不太严格,但在大型组织中管理大型项目确实很有挑战性。尊重每个人的时间至关重要。持续贡献,慢慢地你就会成为项目的重要组成部分。
11. 如何在 Pull Request 中建议/处理代码请求变更。
我见过一些贡献者在 Pull Request 中提出修改请求后就立即放弃了他们未完成的工作。相信我,如果你养成了这种习惯,维护者就不太可能给你分配问题了。
无论如何,您可以通过多种方式请求更改。
例如,请参阅LinksHub 的 PR #1152和Dailydotdev 的 PR #864。
您可以清楚地看到所要求的更改以及详细的审查。
如果他们建议了更改,你也可以直接提交,这是 GitHub 的一个实用小功能。在 freecodecamp 上详细了解如何为维护者和贡献者提供有效的代码反馈评审。
12. 开源的法律方面。
然而,开源是一种特殊情况,因为作者期望其他人能够使用、修改和共享其作品。但由于法律默认仍然是专有版权,因此您需要通过许可证明确授予这些权限。
这些规则也适用于有人为您的项目做出贡献的情况。如果没有许可证或其他协议,任何贡献均归其作者独家所有。这意味着任何人——甚至您自己——都不能使用、复制、分发或修改他们的贡献。
公开您的 GitHub 项目与授权您的项目不同。
为了使其他人能够使用、分发、修改或回馈您的项目,您必须添加开源许可证。
例如,除非您明确授予他们使用您 GitHub 项目的任何部分的权利,否则其他人不得在其代码中合法使用您的 GitHub 项目的任何部分,即使该项目是公开的。
您可以参考官方指南,了解应该为您的项目选择哪种许可证。
我主要使用MIT 许可证,因为它很容易理解,即使您对许可证不太了解也可以使用它。
我的项目是否需要额外的贡献者协议?
您可以在此处阅读有关此内容的更多信息。
您可以使用CLA 助手,它非常简单。
例如,您可以在 dailydotdev 中查看我的Pull Request 864 。
您必须使用 GitHub 进行注册,这非常安全。
那么一切就都好啦。
13. 额外资源。
这些是我推荐阅读的一些资源。
这些是我在我的开源之旅中发现的,它们提供了不错的视角。
-
官方指南- 涵盖所有内容的官方指南,例如:
- 如何为开源做出贡献
- 启动开源项目
- 维护人员的最佳实践
- 为您的项目寻找用户
- 建设热情的社区等等......
-
Pradumna 开源指南- 包含学习和入门开源、Git 和 GitHub 的资源和资料。它是一份全面的指南,在 GitHub 上已获得 800+ 星赞。
-
如何为开源项目做出贡献 - Freecodecamp - 本指南概述了开源项目中的角色、基本要素以及开始开源之旅所需的一切。
-
开源活动- 每月收集开源活动和黑客马拉松。
-
精彩的 GitHub 个人资料自述文件- 😎 精选的精彩 GitHub 个人资料自述文件列表 📝
-
GitHub Profile Generator - 以最佳方式创建完美的 GitHub Profile ReadMe。包含众多功能和工具,全部免费!
-
GitHub 社区指南- 官方指南,旨在建立一个强大、开放、热情的社区,支持在适当的数字空间中进行协作。
-
参与开源社区- 来自 Linux 基金会的强大指南和有用见解。
相信我。
现在,你已经拥有了开启开源之旅所需的一切。
我花了很长很长的时间来写这篇文章!
很长很长的时间。
还有很多内容需要讲解,比如共同提交或分支规则,但这些对初学者来说并非必需。以后有机会再讲!
每当有人问起如何开启开源之旅时,分享这篇文章,瞧!
希望大家以后可以参考一下。
如果我发现任何足够好的东西,我会每三个月更新一次。
我不太喜欢社交媒体,但偶尔会在LinkedIn上分享一些开源相关的内容。我就是在那里用了那几张图片 :)
我为开源社区投入了大量精力,并计划继续这样做。如果你想支持我,可以在 GitHub 上赞助我。别有压力,我不是那种人。哈哈!
如果你有兴趣赞助这篇文章,请给我发邮件至anmolbaranwal119@gmail.com或在 Twitter 上联系我!🚀
如果您喜欢本指南,请关注我的 GitHub 和 Twitter 来支持我。
多写,多启发。
