开源可能是当今科技界的流行语之一,甚至你都相关的技术领域,你也有可能听到有人提到开源的话题。尽管很多人都熟悉开源这个词,但人们并不总是真正了解这个词的含义。
什么是开源
开源是一种软件类型,其中该软件的源代码是在特定的版权许可下发布的,其他人可以出于任何目的使用、研究、更改和发布该软件 —— 只要它不违反版权许可。用外行的话来说,这意味着当一个公司或一个团队构建一个服务或产品时,他们允许其他人能够使用源代码并改变其中的内容。
为开源项目做贡献有很多好处。它可以帮助你提高技能,结识志同道合者,并为未来的工作建立一个强大的投资组合。另一个好处是,如果你经常为开源项目做贡献,你将在社区中广为人知,因此,从某种意义上说,你将成为一个技术影响者。
无论你是代码新手还是已经有一段时间代码经验的人,都可以开始为开源项目做出贡献。下面我将列出我的 9 步指南 :
1、建立对编程的基本理解
这一步是为那些对开源感到好奇但又没有任何技术背景的人准备的。不要担心!如果你愿意投入时间,那么对开始构建软件没有任何要求。在进入开源领域之前,你需要检查的第一件事是你的基本编程知识,这是开始构建项目所需的基础,确保你对计划贡献中使用的编程语言有一定的了解。
2、熟练掌握 Git
没有 Git,就无法拼写开源。Git 是让开源成为现实的工具,Git 是需要掌握的棘手课题之一。我从事技术工作小有几年了,但我还没有遇到可以完全处理 Git 而不返回文档的人。然而,你无需完全了解 Git 的内部动态即可开始使用开源。
只需要几个命令,如 clone、push、pull、commit,知道何时和如何使用它们,然后,就可以开始了。
3、学习如何寻找你想要的东西
谈到技术领域,一般来说最困难的方面之一是关于任何主题的大量信息。如果你尝试在 Google 上搜索 “data science libraries”,将会被数十万篇谈论这个特定主题的文章所淹没。
对于开发人员或 DBA 来说,一项宝贵的技能是知道如何有效地寻找他们所寻求的答案,无论是通过 Google 搜索还是在文档或教科书中寻找答案。
如果你想得到你所寻求的答案,需要学会提出正确的问题,这项技能将有助于使你的工作更快、更高效。
4、阅读你喜欢的项目文档
在数据科学中使用的大多数知名和常用的包都是开源包,例如 Matplotlib、Numpy 和 Scipy。阅读这些项目的文档可以让你了解这些大项目是如何产生的,它可以让你看到开源的力量。它还会让你知道还需要做什么,以及为这些项目做贡献的机会。
此外,阅读他们的文档将熟悉各种类型的许可证及其差异,这些知识将帮助你了解不同许可证的规则和用法,从而知道在你未来的项目中使用什么。
5、从非代码贡献开始
做第一个贡献时可能会是最畏惧的,帮助我克服这个问题的方法是在我开始做编码贡献之前做了一些非编码贡献。
有很多机会可以为开源做出贡献,而不只是基于代码。如果你是一个编码新手并且对自己的编码技能还不放心,或者根本没有编码技能而你想为开源做贡献,我在这里告诉你,你绝对可以。
许多知名的大型项目对初学者都很友好,不需要以前的开源贡献就可以接受。像 DuckDuckGo 或 Habitica 这样的项目非常欢迎新的贡献者。
7、社区交流
开源是一个由来自世界各地的开发者组成的社区,他们决定共同合作,并建造令人敬畏的东西。当你为开源项目做出贡献时,就基本上表明了你愿意加入这个社区。与其他开源开发者交流会让你觉得自己是社区的一部分,这个社区会在你需要时提供支持,并为你提供许多机会。你可以通过不同的方式与社区联系,可以使用你正在进行的特定项目的 slack 频道,比如 Django、Numpy 的 slack 组,或者一般的 Python 社区 slack。
8、提交你的第一个代码贡献
这是最需要勇气的一步,但也是最令人满意的一步。一旦你适应了 Git 和你想要使用的编程语言,你就可以使用非编码贡献来为项目做出贡献,此时你已经准备好进行第一个代码贡献。
从一个简单的功能或错误开始,也许是一些不紧急的事情。慢慢来,仔细检查你的代码,并测试良好。然后,放手,创建一个 pull 请求。你只需要一个成功的贡献就能给你继续贡献的信心。
9、建立投资组合
当你对项目做出贡献时,不要忘记跟踪你对投资组合的贡献。你做出的贡献越多,你的投资组合就越稳固。
然而有时,重要的不是贡献的数量,而是贡献的质量。这就是为什么我总是建议大家花时间编写风格良好的代码。说到软件贡献,质量在任何时候都胜过数量。
小结
我知道一开始参与开源可能会令人生畏,但是就像生活中的其他任何事情一样,克服恐惧的最佳方法是直接参与其中。无论你使用了解哪种编程语言,无论你的知识水平或专业领域如何,都会有适合的开源项目。所以,要对自己的能力充满信心,寻找让你兴奋的事情,并开始做出贡献。一旦你这样做了,这个过程就会变得更容易,恐惧感也会消失。没有比自己构建东西更好的方法来提高个人技能了。开源是成为更好的开发者、思想更开放的工程师所能做的最好的事情之一。