关于开源，你需要知道些什么
开源
![](/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/) 荣誉推出


OK
So you want (or need) to figure out what ["open source"](https://opensource.com/resources/what-open-source) really means. I'll cover the basics of open source, whether you're interested in contributing to a project or want to be in the loop at a new job where the term keeps getting thrown around.

Full disclosure: I am a person with little technical experience, working in the content-design fringes of a very technical open source environment. Given my background in marketing and communication, I felt like a fish out of water when I made this career switch. [Git](https://opensource.com/resources/what-is-git), data science, the ins and outs of software… It was, and still is a year later, a lot to comprehend.

But that's why I'm writing this piece. I want to help make open source a little less intimidating. After all, at the center of open source is a supportive learning community—built for everyone, technically experienced or not.

I'll start with the absolute basics.

## What is open source?

For the record, the industry definition of open source is available at the [Open Source Initiative](https://opensource.org/osd) site.

However, the popular perception of "open source" software is usually that it doesn't cost anything, the source code is accessible, anyone can contribute to it, and you can redistribute it or do whatever else you want with it.

Some of that is true, and some of it plays into a few common misconceptions, one of which is cost.


### Open source costs $0

Is it true? Usually, but not always. By nature of its code being publicly available, open source software can be obtained at no cost. However, for-profit companies do exist around open source projects. But if the software is available at no cost, how do open source companies even exist? How do they make money?

The concept of having a "free product" is counter-intuitive. But that's just the thing: A company doesn't have to sell software to profit from the management of products, storage of data, and customer support.

Many companies follow a subscription model, offering customer support in case of bugs or general confusion. Data storage isn't free, so that is another area where these companies can bring in income. In this regard, the "product" isn't the software; it's the benefit of a subscription.

**The source code is accessible**: Is it true? Yes, always. This accessibility is a prerequisite for adopting the term "open source." The source code must be available to view, use, modify, and redistribute.**You can do whatever you want with the code**: Is it true? It depends. Subject to licensing terms, there are some limitations on how you can use code, but you can generally use it however you'd like. Whether that means tweaking a project to fit a specific need or using it as the basis for something else, open source software is yours, and everyone else's, to modify.**Anyone can contribute to open source projects**: Is it true? Yes - within limits. Anyone with the[right skill set](https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code)can contribute to open source. However, that doesn't mean all contributions are always accepted and implemented.

For example, say you're interested in a project where the end goal is a catalog of all the types of birds in the world. You're really into dinosaurs, specifically dinosaurs that may have eventually evolved into modern-day birds. So, you contribute entries for all of the most bird-like dinosaurs. The project owners could see this and think, "Sweet, those are some great prehistoric birds." However, they're also allowed to say, "Hmm, those dinosaurs are like birds, but they're technically not birds yet. They probably don't belong on Birdpedia."

Luckily, projects don't usually work under lawless conditions. Open source projects typically come with contribution guidelines and codes of conduct, so you don't have to worry about your additions flying off the rails.

## Why open source?

So, after all the contributions are made (if it's ever actually done), why would people give away their software for no cost? If so many people put their time and effort into creating something, why wouldn't they band together and slap a price tag on it?

This question comes with a lot of answers. Here are a few:

- Starting a business is hard, especially if the project you're working on doesn't form the strong foundation for a money machine. It can be easier to rally a bunch of like-minded people without commitments or the expectation of paychecks.
- Most open source communities consist of people interested in improving software or bringing it into existence but don't have the time or interest to commit to working full-time on a project. Sometimes open source represents passion projects, geek groups, and crowd-sourced solutions to annoying problems.
- The groups that form around open source projects of all sizes foster supportive communities where contributors and onlookers alike can practice their skills, improve software they regularly use, teach and learn from each other, and feel empowered to make their voices heard. Many open source communities are essentially hyper-focused online hobby clubs.

## Where do I get involved?

Now you may ask yourself, "But what do I do with this information? Can I contribute to open source projects? What if I'm not good enough yet?"

Never fear—even [beginners](https://opensource.com/article/18/4/get-started-open-source-project) are welcome to contribute to open source projects. It's a great way to hone your skills while working with a community towards a larger goal. And, as I talked about earlier, the worst that can happen is your changes aren't merged into Birdpedia (and that's because those product owners just can't see your vision of a Birdpedia where birds and their ancestors gleefully coexist in an online world of bird-related knowledge).

**[ Related read Why do we contribute to open source software? ]**

Do you have to know how to code to contribute to projects? Contrary to popular belief, [no, you don't](https://opensource.com/article/22/8/non-code-contribution-powers-open-source). Projects "take a village" to thrive, which means they need input from people of all different backgrounds. Visual designers, writers, marketers, reviewers, translators, subject matter enthusiasts, and even just users of the resulting product are all valuable contributors. Not only do they help build out and improve products, but they identify bugs, suggest improvements, spread the word about the project, and generally strengthen the community.

In short, no matter what your background or experience, if you're interested in open source or a specific project, you're nearly guaranteed to be welcomed with open arms.

## Get started with open source now

Still not sure where to begin? Here are some ideas and resources to get you started:

[Up For Grabs](https://up-for-grabs.net/?ref=hackernoon.com#/)is a "list of open source projects which have curated tasks specifically for new contributors." This is a great place to find an easy first PR opportunity, which is a great way to find out what kind of contributions you'll enjoy.- Check out this list of
[beginner-friendly projects](https://github.com/MunGell/awesome-for-beginners)on GitHub. - If you're still not feeling inspired, consider
[contributing](https://github.com/patternfly)to (or flying with)[PatternFly](https://www.patternfly.org/v4/get-started/design), Red Hat's open design system.

## 2 Comments