关于开源，你需要知道些什么
一份用简单直白的语句来解释开源的新手指南。
开源
一份用简单直白的语句来解释开源的新手指南。
![](/data/attachment/album/202301/30/110936lhhk216wajijdh22.jpg)



> 
> 一份用简单直白的语句来解释开源的新手指南。
> 
> 
> 


要是你想要（或需要）知道 [开源](https://opensource.com/resources/what-open-source) 的意思究竟是什么。我会介绍开源的一些基础，无论你是对项目贡献感兴趣，还是在想要融入的新工作圈子里总是听到这个名词，因为这个词总是被人不断的提起。


我坦白，我这个人没什么技术经验，在极具技术性的开源社区中从事着内容设计的边缘工作。考虑到我原来的背景是营销与传播，我决定换工作时感觉就像离了水的鱼儿。[Git](https://opensource.com/resources/what-is-git)、数据科学、软件的来龙去脉……直到一年后的今天，我依然感到难以消化。


但这正是为什么我要写这篇文章。我想要让开源变得不那么令人生畏。毕竟，开源的中心是一个支持型的学习社区 —— 这个社区对所有人开放，无论你是否有技术经验。


我会从基础中的基础开始。


### 什么是开源？


在此声明，业界对开源的定义可以在 <ruby> <a href="https://opensource.org/osd">  开放源代码促进会 </a> <rt>  Open Source Initiative </rt></ruby> 的网站找到。


然而，大众对“开源”软件的认知通常为它不用花钱，它的源代码是公开的，任何人都可以对其贡献，你可以重新发布它或者用它做任何你想做的事。


这里面有些是真的，而有些则属于常见的误解，其中之一就是关于花费。


#### 开源只要 0 元


这是真的吗？大部分情况下是，但不是所有情况。开源软件的本质在于代码的公开性，所以获取软件本身确实不需要花费。但是，依赖开源项目营利的公司也确实存在。但如果软件不需要花钱，开源公司又是如何生存的？他们该如何盈利？


拥有“免费产品”这个概念本身是反直觉的。但你要知道：一个公司不一定要靠出售软件来赚钱，它也可以从产品的管理，数据的储存，以及对客户的支持中获利。


很多公司都采用了订阅模式，他们提供客户支持服务以帮助客户解决软件问题并为客户解答疑惑。数据储存也并非免费，这也是能为公司带来收入的另一领域。从这个角度来说，在销售的“产品”不是软件，而是订阅服务。


* **开源代码是公开访问的**：这是真的吗？是的，永远都是。“开源”一词的先决条件正是这份公开性。源代码必须允许被查看、使用、修改和重新发布。
* **你可以用这份代码做任何你想做的事**：这是真的吗？依情况而定。许可证条款会对你对代码的使用方式作出限制，但你通常都可以用代码做你想做的事。无论是调整该项目以满足特殊需求，还是以此为基础做些别的，开源软件允许你和其他所有人对其修改。
* **任何人都可以贡献开源项目**：这是真的吗？是的，但有限制。所有有 [合适技能](https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code) 的人都可以贡献开源。但是，这不意味着所有的贡献都会被接受和采纳。


比如说，你对一个目标是对地球上所有的鸟类进行分类的项目感兴趣。你恰好很喜欢恐龙，特别是那些最终进化成如今的鸟类的恐龙。于是，你为所有最像鸟类的恐龙提交了条目。项目所有者在看到这些后可能会想：“不错，这都是些很棒的史前鸟类。”但他们也可能会认为：“嗯……这些恐龙看起来像鸟，但他们还不是鸟，因此他们不属于鸟类百科。”


幸运的是，项目里的工作通常有法可依。开源项目通常有着贡献指南和行为准则，所以你不用担心你会加入什么使得项目脱轨的东西。


### 为什么选择开源呢？


那么，在众多贡献之后（如果这些贡献完成的话），为什么人们愿意免费赠送他们的软件？如果有那么多人为此付出了时间与精力，他们为什么不能联合起来为软件明码标价？


这个问题有很多回答。我在这里给出了一些：


* 创业是艰难的，如果你开发的项目展现不出赚钱的潜力则尤其如此。召集一群志同道合的人，没有承诺也没有对薪水的期望，相对而言要简单得多。
* 大部分开源社区的成员对软件的改进或者实现感兴趣，但他们没有时间或者不愿意将项目作为他们的全职工作。有时候开源代表的是热情驱动的项目、极客组成的团体，还有凝聚众人智慧对恼人问题的解决方案。
* 围绕各种规模的开源项目形成的团体促进了支持型社区的成形，在这里贡献者与旁观者都可以练习他们的技能，改进他们常用的软件，互教互学，并为发声被听到而感到振奋。很多开源社区本质上就是高度集中的线上爱好者俱乐部。


### 我该如何参与呢？


现在你可能会问你自己：“我知道了这些信息又可以做些什么呢？我能贡献开源项目吗？如果我不够优秀的话该怎么办？”


不要害怕 —— 即便是 [新手](https://opensource.com/article/18/4/get-started-open-source-project) 也欢迎为开源项目做贡献。在与社区一起朝着更大的目标共同努力的同时，你也得到了一个磨练技能的绝佳机会。况且，正如我之前所说，最坏的情况也不过是你的提交不被“鸟类百科”所接受（而这也是因为项目的所有者看不到你对鸟类百科的愿景，那是一片关于鸟类知识的网络天地，鸟与他们的祖先在那里愉快地共存）。


你需要会写代码来贡献开源吗？与大众认知相违的是，[你不需要](https://opensource.com/article/22/8/non-code-contribution-powers-open-source)。项目“需要举全村之力”以兴旺，这意味着他们需要来自不同背景的人的贡献。视觉设计师、撰稿人、营销、评审、翻译、主题爱好者，甚至只是最终产品的用户，都是可贵的贡献者。他们不仅是帮忙搭建并改进了产品，他们也识别出了漏洞，提出了修改建议，为项目做出宣传，最终使得社区强大。


简单来说，不论你的背景是什么，经验有多少，只要你对开源或是某个特别的项目感兴趣，你几乎可以保证会被张开双臂欢迎。


### 现在就加入开源吧


还是不确定应该从哪开始？这里有些能帮助你的想法和资源：


* [Up For Grabs](https://up-for-grabs.net/?ref=hackernoon.com#/) 是一份“专门为新贡献者策划任务的开源项目清单。”这里很适合新贡献者们来寻找简单的初次 PR 机会，这次机会也能让你探寻你更喜欢哪种贡献。
* 来看看 GitHub 上的这份 [新手友好项目](https://github.com/MunGell/awesome-for-beginners) 列表吧。
* 如果你还是缺乏灵感，考虑一下[贡献](https://github.com/patternfly)（或一起“飞”） <ruby> 红帽 <rt>  Red Hat </rt></ruby>的开放设计系统 [PatternFly](https://www.patternfly.org/v4/get-started/design)。
* LCTT 夹带私货：你还可以通过参与 LCTT 的翻译工作来首次体验如何参与开源，这几乎简单到你只需要懂一点点英文和一些热情，本文就是由开源贡献者翻译贡献而成的。入口在此： <https://linux.cn/lctt/>




---


via: <https://opensource.com/article/22/11/get-started-open-source>


作者：[Katie Edwards](https://opensource.com/users/kaedward) 选题：[lkxed](https://github.com/lkxed) 译者：[yzuowei](https://github.com/yzuowei) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

