如何开始第一个开源项目?

简介: 根据Sayan Chowdhury的说法,以下是人们开始开源之旅时提出的常见问题:如何开始开源之旅?我知道x、y、z语言,我应该参与哪个项目?如何筛选出符合我技能水平的项目?

根据Sayan Chowdhury的说法,以下是人们开始开源之旅时提出的常见问题:


如何开始开源之旅?

我知道x、y、z语言,我应该参与哪个项目?

如何筛选出符合我技能水平的项目?

在这篇文章中,我将尝试以一种非常简洁的方式回答这些问题。我还将提供一些资源,可能会帮助到你开始第一个开源项目贡献。


1、什么是开源软件(OSS)?

开源软件顾名思义,源代码是公开的,大家可以修改和添加。这些软件是遵守各种各样的许可方式发布的,如BSD、MIT等。阅读几行由优秀程序员编写的代码会自然地提高你的编码知识,并且能够帮助你了解优秀的编码实践。


2、开源JavaScript组件

你可以选择从对开源社区做一些小贡献(不用完整的项目)开始。比如说从小的、独立、公开可用的JavaScript组件开始。它们可以是简单的JS/NodeJS,也可以是使用React、VueJS、Angular或任何其他流行的库/框架构建的基于框架的组件。


Bit.dev是一个很受欢迎的组件中心,有超过34,000个开源JS组件。这是一个好的办法,从小的开源项目做起,逐渐增加你的开源贡献。它为组件的使用者提供了使用特定组件而不是整个库的自由。


无论何时你构建了一个值得共享的可重用组件(可能是作为私有项目的一部分),你都可以使用Bit在自己的组件集合中发布和为它提供文档。


222.png


在Bit.dev中探索共享的React组件


3、如何为开源软件做贡献?

很多人认为对于开源软件的贡献都是关于编码的。不仅如此,你还可以参与线上、线下推广开源项目活动,修复项目文档,编写或翻译文档等,这些都是为开源软件做贡献的方式,这些都可以帮助改进开源项目。


下图列出了一些可以为Mozilla开源项目做出贡献的途径。

image.png


4、为什么要做贡献?

你要明白,为开源项目做贡献的可以提升你的技术能力。初学者可以从一些小事开始,比如修复Bug、发送pull请求、编写软件文档等参与。


它们还允许初学者学习编写“干净代码”,一种可读性和可维护性更强的代码。对于编程来说,有很多不同的标准可以遵循,团队不同,遵循的标准可能不同。当你在开源项目上工作时,应该遵守项目的规范。


参与开源贡献还有另一个好处是共同打造社区。你有机会成为由志同道合的人组成的社区的一部分。如果你是一个自由职业者,同事你又是个积极的社区贡献者,你很有可能被潜在的老板注意到。


5、在做贡献之前的注意事项

按照Maryna的说法,在做出贡献之前,你应该记住以下三件事。


编程语言:你应该选择一种编程语言来查找开源项目,确保它符合你的技能和品味。

项目类型:一旦你选择了你想使用的语言,你应该把注意力放到你想要做出贡献的项目类型上。Github的所有项目都按照Topic归类到不同的文件夹中。主题的一些例子有“安全”、“虚拟现实”、“文本编辑器”和“CSS预处理器”等。你可以滚动浏览这些类别,选择你感兴趣的主题。

项目的规模 :你应该关注项目的规模,比如说,像VLC这样的项目不适合初学者,因为它非常庞大,当你开始时,建议不要用大型开源项目。请务必注意项目标签,尤其是那些被贴上了“仅限新手”、“初学者”、“容易”的项目标签。


6、我准备好了,接下来做什么?

你已经了解了对开源软件做贡献时的基本事项,接下来让我来帮助你开始使用一些资源,这些资源可以指导你在你最喜欢的编程语言上找到适合初学者的项目。


First Timers Only(仅限新手)网站

这个网站上有很多被认为是“适合新手”的开源项目,提供一些教程,帮助你熟悉GitHub上的贡献工作流程。它还提供了许多小的附加功能,这些功能将帮助你在开源贡献方面迈出满意的第一大步。


我们在Twitter上询问人们,当他们第一次为开源项目做贡献时,他们的感受是什么。回答是:


是的,很可怕。但是很值得!


OpenSource.com

这个网站包含了一个“适合新手”的开源项目列表,你可以从中选择一个开始。它还提供了更多的资源,如OpenHatch,你可以在其中找到更多对初学者友好的项目。


https://opensource.com/life/16/1/6-beginner-open-source


Twitter Profiles

有许多推特机器人被设计用来转发带有诸如“仅限新手”和“适合新手”等标签的推文。这些机器人能很好地让这些推文定期出现在你的主页上,这样你就可以在浏览你的推特订阅源的同时决定要参与贡献的项目。


下面是两个常见的推特资源:Your First PR、first-timers-only


Github

Github有很多开源项目,目前有一些对初学者友好的问题可以解决的项目。它们要么按编程语言排序,要么按难度级别排序:


Awesome First PR Opportunities

Beginner Projects

一旦你选定了你想要做贡献的项目,那么就是开始行动的时候了。这里有两个资源:


GitHub项目新手贡献指南

仅限新手

有几个组织举办的比赛能够激励你参与开源贡献,例如Hacktoberfest和Hacktitude。


Hacktoberfest是一个由DigitalOcean和DEV运营的长达一个月的开源软件庆典。Hacktoberfest对全球社区的所有人开放。一旦你完成了4份PR提交,你就会收到T恤和其他商品作为奖品。


相关文章
|
3月前
|
IDE Java 开发工具
深入探索安卓应用开发:从环境搭建到第一个"Hello, World!"应用
本文将引导读者完成安卓应用开发的初步入门,包括安装必要的开发工具、配置开发环境、创建第一个简单的安卓项目,以及解释其背后的一些基本概念。通过一步步的指导和解释,本文旨在为安卓开发新手提供一个清晰、易懂的起点,帮助读者顺利地迈出安卓开发的第一步。
226 65
|
2月前
|
数据采集 存储 JavaScript
构建你的第一个Python网络爬虫
【9月更文挑战第34天】在数字信息泛滥的时代,快速有效地获取和处理数据成为一项重要技能。本文将引导读者通过Python编写一个简易的网络爬虫,实现自动化地从网页上抓取数据。我们将一步步走过代码的编写过程,并探讨如何避免常见陷阱。无论你是编程新手还是想扩展你的技术工具箱,这篇文章都将为你提供有价值的指导。
88 18
|
3月前
|
存储 Java Android开发
探索安卓应用开发:构建你的第一个"Hello World"应用
【9月更文挑战第24天】在本文中,我们将踏上一段激动人心的旅程,深入安卓应用开发的奥秘。通过一个简单而经典的“Hello World”项目,我们将解锁安卓应用开发的基础概念和步骤。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供一次实操体验。从搭建开发环境到运行你的应用,每一步都清晰易懂,确保你能顺利地迈出安卓开发的第一步。让我们开始吧,探索如何将一行简单的代码转变为一个功能齐全的安卓应用!
|
3月前
|
存储 Oracle Java
深入探索安卓应用开发:从环境搭建到第一个"Hello, World!"
本文旨在为安卓开发初学者提供一个清晰、简洁的入门指南。我们将一步步引导您完成安卓开发环境的搭建,并详细介绍如何创建您的第一个安卓应用程序。通过这篇文章,您不仅能够理解安卓应用开发的基本流程,还能掌握一些实用的技巧和方法,为进一步深入学习打下坚实的基础。
|
8天前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
15 0
|
3月前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
187 7
|
3月前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
4月前
|
数据采集 存储 数据库
构建你的第一个Python爬虫:从入门到实践
【8月更文挑战第31天】在数字时代的浪潮中,数据如同新时代的石油,而网络爬虫则是开采这些数据的钻头。本文将引导初学者了解并实现一个基础的网络爬虫,使用Python语言,通过实际代码示例,展示如何收集和解析网页信息。我们将一起探索HTTP请求、HTML解析以及数据存储等核心概念,让你能够快速上手并运行你的首个爬虫项目。
|
4月前
|
数据采集 存储 JavaScript
构建你的第一个Python爬虫
【8月更文挑战第31天】 本文是一篇入门级教程,旨在帮助初学者了解和实现一个简单的网络爬虫。我们将使用Python编程语言,因为它简单易学且功能强大。通过这篇文章,你将学会如何使用Python的requests库获取网页内容,以及BeautifulSoup库解析HTML。最后,我们将展示如何存储爬取的数据。无论你是编程新手还是想扩展你的技术栈,这篇文章都会为你打开网络数据抓取的大门。
|
7月前
|
存储 自然语言处理 Linux
非常高兴地宣布,我们发布了RunFlow的第一个版本,这是一款全新且强大的效率工具
RunFlow v1 发布!这是一个跨平台的效率工具,类似 Wox、PowerToys、Alfred 和 Raycast。特色包括:跨平台支持(暂不包括Linux)、多语言(默认英/中文,可扩展)、自定义样式与主题、关键字驱动功能、后置匹配技术、实时刷新结果、上下文菜单、工具栏、固定关键字、可交互界面、独立窗口、热点事件、专注模式和数据安全同步。支持插件扩展,开发插件语言无限制,基于JetBrains Compose Multiplatform。
63 1
非常高兴地宣布,我们发布了RunFlow的第一个版本,这是一款全新且强大的效率工具