如何把开源作为一份职业
开源

> 
> 你是否对开源充满热情，却不知道如何在这个领域开始一段职业生涯？那么，这篇文章就是为你准备的。
> 
> 
> 


![](/data/attachment/album/202204/29/083647jjbfm44j4pt774ft.jpg)


你知道吗？80% 的维护者认为招募新的贡献者是一个挑战，92% 的雇主认为很难雇用到开源人才。而另一方面，52% 的开发者希望为开源做出贡献，33% 的人不知道从哪里开始，31% 的人认为自己不够熟练。公共数据显示，社会对具有开源技能的人有很大的需求。因此，让我们看看如何才能够把开源作为一份职业，以填补这个供需之间的差距吧！


### 掌握一个技能


开源旅程的起点仅仅是你擅长的某个技能罢了。许多开发者会在空闲时间从事开源工作，他们在不熟练的领域投入精力，并把这些技能引入到技术领域里来。像机器学习（ML）、云原生和大数据分析这样的技能是很受欢迎的，因为许多项目都围绕着它们而进行。


开发者必须不断尝试，直到找到自己感兴趣的东西为止。例如，当我开始在开源领域工作时，我选择了移动用户界面（UI）和 Web 开发（包括前端和后端）方面的工作。这个选择并不简单，我花了很多时间来弄清楚我想从事什么。因此，重要的是要遵循你的兴趣，通过学习和建立项目来探索不同的领域。很多时候，理论教程可能不如建立实际项目更有帮助。掌握技能的唯一方法是将所学的东西应用到实际项目中。


如果你已经在某项技术和项目上投入了很长时间，那么你应该花时间好好分析一下。如果你对这个项目不感兴趣，那么放弃它可能是更好的选择。然而，这也可能是一把双刃剑。有可能你会发现一些感兴趣的东西，从而产生一个新的权衡。如果经过了充分的分析，你也知道了自己倾向于哪些技能组合，那么下一步就是建立自己的项目。


### 建立一个项目


无论项目的内容如何，只要它是活跃的，就会产生很大的价值。但请记住，一旦它开源了，你千万不要被大家的反应所左右。并且记住，无论你是为一个应用程序建立一个 UI，还是仅仅记录一个适当的注释、资源或 URL 的列表，你的工作都可以对开源用户有很大帮助。


在很大程度上，学习不同的工具有助于建立开源项目。因此，学习关于版本控制系统、Git、GitHub 和 GitLab（大多数项目都在它们上面）的一切是很重要的。由于互联网上已经有足够的教程，我只收集了一些可以在 `navendu.me/osidays` 上找到的。你需要通过撰写文档和公开自己学到的内容，来“公开学习”才行。


### 打造一份职业


你可以通过三种方式在开源领域建立一份职业。


#### 构建、扩展你自己的开源项目，并让它盈利


如果你想要建立一个自己的项目，发现并解决问题是一个很好的经验法则。记下别人可能面临的问题，一个项目需求就这样产生了。你的项目的市场规模只能通过试验和错误来估计。对于既没有太多资金的、也没有太多经验个人贡献者来说，社交媒体、博客、帖子和会议上的讲话，都会在很大程度上有助于接触到用户。这些平台可以为你的开源项目带来巨大的流量。


资金在几乎所有的商业模式中都起着重要作用。Mozilla 基金会依靠自愿捐款来资助其项目。MariaDB 采用了延迟开放源代码的商业模式。IBM 的许多开源项目遵循开放核心的商业模式，即项目的核心部分是开源的，而周围的附加部分是闭源的和专有的。红帽公司不出售代码，而是出售专业服务，如支持、工具和围绕项目的技术援助。这些商业模式的例子可以被采用，以此来建立一个项目，将它开源，并使其盈利。



> 
> “即使你不是维护者，也要做维护者的工作。”
> 
> 
> 


#### 在一个以开源商业模式建立项目的公司工作


成为贡献者和维护者社区的一份子，参与会谈和参加会议将有助于你为项目做出贡献。你可以根据引导来完成第一次贡献，但它不一定得是代码。一个大的代码库可能看起来很吓人，但关键是要从小的地方着手。找到一个问题并解决它，这将有助于你了解贡献流程、代码库和项目设置等。


非代码的贡献也是有价值的。擅长写作的人可以通过撰写文档，或者为社交媒体写作来贡献。擅长设计的人，可以设计一个模板、一个颜色方案，或者也可以致力于创造一个更好的用户界面。与资深工程师相比，新人发现错误的概率很高。他们可以测试、确认并报告他们的用户体验，从而提升项目质量。另一个领域是新手引导，很多开源项目将导师和新手联系起来，并帮助后者做出重要贡献。还有一个选择是成为组织者或社区管理员，这意味着你将承担起项目经理的角色，确保功能完全按照预期交付，路线图得到遵循，贡献者得到照顾。大多数开源项目缺乏适当的管理，因为工程师们都不喜欢做这一类工作。


社会上有很多实习项目可以帮助你赚钱，比如谷歌的编程之夏（GSoC）和 Linux 基金会的导师制（在这里，被指导者有津贴，可以根据需要全职或兼职工作）。如果你能很好地发展你的技能，你可以在你实习的公司获得一个全职的职位。例如，如果你在红帽公司的一个项目中工作，你有机会被全职雇用，因为你在那里已经有了知名度。


正如 NumPy、SciPy 和 Anaconda 的作者 Travis Oliphant 所说，“建立一个开源项目，让人们为它做出贡献，然后从他们当中招聘。” —— 这也是我获得全职工作的方式。


* 随着时间的推移，你所做贡献的质量和数量会不断提升。最好长期参与一个项目，因为这样可以发现更多的贡献领域。投身进去做贡献会让人们注意到并认可你。
* 开源项目缺乏项目经理，因此成为项目经理将有助于你的职业生涯。
* 成为一个维护者，做一些工程师应该做的事情，如审阅代码、设计系统、撰写文档和帮助他人做出贡献。
* 好的贡献的关键是“提前付出”，这意味着你需要通过分享经验和智慧来帮助新人，并确保他们不犯错误。


#### 获得赞助以从事开源工作


作为个人，如果你正在为某个公司建立的项目而工作，你可以要求获得资助。值得注意的是，只有当你的贡献很大时，组织才会乐意赞助你。但是，如果你建立了自己的项目，并且有大量的用户群，你可以向用户要求资助。


作为一个组织，你可以通过像 Open Collective、Patreon 和 GitHub Sponsors 这样的平台来筹集资金，让人们为你的项目捐款。像 Linux 基金会和 Mozilla 基金会这样的开源巨头也提供资金来支持项目。GitHub 已经给 15 个印度贡献者的项目提供了资助。


我曾经花了三个月时间建立了一个开源项目。这个项目后来被 《Product Hunt》 和 《JS Weekly》报道，还在上过 GitHub 趋势榜排名第一的位置。正是这个项目让我走上了开源事业的道路。


*本文由 Sharon Abhignya Katta 转录并策划*




---


via: <https://www.opensourceforu.com/2022/04/how-to-build-a-career-in-open-source/>


作者：[Navendu Pottekkat](https://www.opensourceforu.com/author/navendu-pottekkat/) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)


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


OK
*If you are passionate about open source but don’t know how to get started with a career in this domain, this article is for you.*

Did you know that 80 per cent of maintainers find it a challenge to recruit new contributors and 92 per cent employers find it difficult to hire open source talent? On the flip side, 52 per cent of developers want to contribute to open source, 33 per cent do not know where to start and 31 per cent think they aren’t skilled enough. As per data in the public domain, there is a lot of demand for people with open source skills. So let’s see how you can build a career in open source to fill this gap between supply and demand.

**Building a skill**

The start of this journey begins simply by building on a skill that you are good at. Many developers work with open source in their free time, building on unskilled areas and channelising these to tech fields. Skills like machine learning (ML), cloud native and Big Data analysis are in demand since many projects revolve around them.

Developers must try a lot of things, until they find what interests them. For example, I worked on mobile user interface (UI) and Web development (including front- and back-end), when I started working in the open source field. It did take a lot of time for me to figure out what I wanted to work on. So it’s important to follow what interests you, and explore different areas by learning and building projects. A theoretical tutorial may not be as helpful as building practical projects. The only way to skill up is to apply what is being learnt into a live project.

Once you have worked on a particular technology and project for a long time, it is the perfect time for analysis. If a project is uninteresting, it may be better to quit. However, this can be a double-edged sword. There are chances you may find something of interest that will lead to a trade-off later. Once a proper analysis is done and a skillset has been shaped, the next step is to build your own projects.

**Building projects**

Building a live project, irrespective of the content, has a lot of value. But remember, once it is open sourced, the public response should not be a factor that decides your next step. And whether you build a UI for an application or just document a list of proper notes, resources and URLs, your work can be of great help to open source users.

Learning about different tools helps build open source projects to a great extent. Hence, it is important to learn everything about version control systems, Git, GitHub and GitLab (where most of the projects reside). With sufficient tutorials available on the Internet, I have collected a few that can be found at *navendu.me/osidays.* One needs to ‘learn in public’ by documenting and making your findings public.

**Building a career**

You can build a career in open source in broadly three ways.

* Build, scale and monetise your own open source project:* Identifying and solving a problem is a good rule of thumb for building your own project. Noting down the problems that others may face will create a demand for it. The size of the market for your project can be estimated only through trial and error. For new and individual contributors who do not have much funding, social media, blogs, posts and talks at conferences help reaching out to users to a large extent. These platforms can generate a lot of traffic for your open source project.

Funding plays an important role in almost all business models. The Mozilla Foundation relies on voluntary donations to fund its projects. MariaDB follows the business model of delayed open sourcing. Many of IBM’s open source projects follow the open core business model, i.e., the core of the project is open sourced while the surrounding add-ons are closed source and proprietary. Red Hat doesn’t sell code; instead, it sells professional services like support, tooling, and technical assistance around a project. These examples of business models can be adopted to build a project, open source it, and monetise it.

“Do a maintainer’s job even if you are not a maintainer.” |


Being a part of a community of contributors and maintainers, engaging in talks and participating in meetings will help you to contribute to a project. You can follow the guidelines for how the first contribution can be made, which doesn’t necessarily have to be code. Looking at a big code base may seem intimidating but starting small is the key here. Look for a problem and fix it. This will help you understand the contribution flow, code base, set up of the project, etc.

Work for a company that builds projects with an open source business model:

Non-code contributions are also valuable. People great at writing can contribute by documenting or writing for social media. Those who excel at designing, can design a convention, a colour scheme, or also work on creating a better user interface. Newcomers have a high probability of discovering bugs when compared to senior engineers. They can test, identify, and report their user experience, thus improving the project. Mentoring is another area. A lot of open source programs connect mentors and mentees, and help the latter make important contributions. Another option is being an organiser or a community manager, which means taking up the role of a project manager and ensuring that features are delivered exactly as intended, the roadmap is followed and the contributors are taken care of. Most open source projects lack proper management, since engineers don’t like doing that job.

There are a lot of internship programs that can help you make money, like Google Summer of Code (GSoC) and Linux Foundation mentorship (here, mentees are paid a stipend and can work full- or part-time based on their need). You can get a full-time role with a company you are interning with if you develop your skills well. For instance, if you are working on a project at Red Hat, there are chances of your getting hired full-time because you are already known there.

As Travis Oliphant, creator of NumPy, SciPy and Anaconda, says, “Build an open source project, get people to contribute to it, and hire from them.” This is how I got my full-time job too.

Tips for contributors |

|


As an individual, if you are working for a project that is built by a company, you can ask for funding. It is important to note that only if your contribution is significant will the organisation be happy to sponsor you. However, if you have built your own project that has a significant user base, you could ask for funding from users.

Get sponsored to work in open source:

As an organisation, you can raise money through platforms like Open Collective, Patreon and GitHub Sponsors, where people donate to your project. Open source grants like Linux Foundation and Mozilla Foundation also provide funds to support projects. GitHub has given 15 Indian contributors grants for their projects.

I built an open source project in a span of three months. This project went on to get featured on Product Hunt and JS Weekly and also got the #1 trending slot on GitHub. This project put me on a path to a career in open source.

Transcribed and curated by: Sharon Abhignya Katta