编程开源
It is astounding to see how the concept of Open Source programming is so underrated and misinterpreted in the current date. While it is given due respect and appreciation from developers who have been in the field for a long time, most of the beginners in the field have no idea about what opportunities it might hold for them. And not that it is anybody’s fault, that is simply because it seems much more tempting to look for internships online that would pay you a good amount as soon as you start. While that is something extremely important and worth your time, ignoring the concept and importance of Open Source at the same time can be a setback to any person’s career. Hence before I start, I would like to point out that I am in full support of going for internships, and have been in a few myself too. The reason for me writing this article is that I was exposed to the open-source world a few months back, and have been working on it ever since. And to put into words the amount I have learnt from it in this small period of time is really difficult, but I’ll try my best. So first of all, for the people reading this and wondering what I’m talking about, let’s just get a quick intro to what an open-source software really is.
令人惊讶的是,在当前日期,开放源码编程的概念是如何被如此低估和误解了。 虽然已经在该领域工作了很长时间的开发人员给予了应有的尊重和赞赏,但是该领域的大多数初学者并不知道这可能给他们带来什么机会。 并不是所有人都有错,这仅仅是因为在网上寻找实习机会似乎更具诱惑力,因为实习一开始就可以为您带来丰厚的回报。 尽管这是极其重要的事情,但值得您花费时间,但同时忽略开放源代码的概念和重要性可能会挫败任何人的职业。 因此,在我开始之前,我想指出,我完全支持去实习,而且我自己也有一些人。 我写这篇文章的原因是,几个月前我就接触了开源世界,并且从那时起一直在努力。 把我在短时间内从中学到的东西说出来确实很困难,但我会尽力而为。 因此,首先,对于那些阅读本文并想知道我在说什么的人们,让我们快速了解一下开源软件的真正含义。
什么是开源 (What is Open Source)
Open Source software is not something very different than what a lot of us use every day. In fact, you would be surprised if you go online and try to find a list of all popular open-source softwares right now. Mozilla Firefox, Ubuntu, WordPress, VLC media player and so many more. So what differentiates them for other softwares due to which they qualify as “open-source”, while other popular ones do not?
开源软件与我们很多人每天使用的软件没有什么不同。 实际上,如果您上网并且尝试立即查找所有流行的开源软件的列表,您会感到惊讶。 Mozilla Firefox,Ubuntu,WordPress,VLC媒体播放器等等。 那么,由于它们被称为“开源”,而其他受欢迎的软件却没有,它们与其他软件有什么区别呢?
It’s simply that they have some pre-defined characteristics which define the term we have been talking about until now. Next question: What are these?
只是它们具有一些预定义的特征,这些特征定义了我们一直在讨论的术语。 下一个问题:这些是什么?
It is free. That’s probably the most evident part of an open-source software. An open-source software would be free to everyone, whether it be the developer, the user or the owner. It would not charge you anything for any service that it offers. If it does, it loses the right to call itself that. Have you ever wondered why all the softwares I mentioned above give you such great services for free? You have the answer now.
这是免费的。 那可能是开源软件最明显的部分。 开源软件将对所有人免费开放,无论是开发人员,用户还是所有者。 它不会为您提供的任何服务向您收取任何费用。 如果这样做,它将失去对其进行自称的权利。 您是否曾经想过,为什么我上面提到的所有软件都免费为您提供如此出色的服务? 您现在有了答案。
It is transparent. What this means is that all the code which is making the software work will be available on the internet for anyone to view, for free. You can see it, use it, do whatever you want with it. And most importantly, you can CONTRIBUTE to it, i.e. add your own code to it and put it in there, hence improving the software.
它是透明的 。 这意味着使该软件正常工作的所有代码都可以在互联网上免费提供给任何人查看。 您可以看到它,使用它,并随心所欲地使用它。 最重要的是,您可以对其进行贡献,即向其中添加自己的代码并将其放入其中,从而改进软件。
It does not discriminate. Now this often seems like a pretty general point to a lot of people, but this is actually a really important aspect of open source. The software being released will be open to everyone, without giving any importance to their caste, religion, territory, gender or any other factor that might distinguish people from one another. Such software is open and same for all.
它没有区别。 现在,这对于很多人来说似乎是一个普遍的观点,但这实际上是开源的一个非常重要的方面。 即将发布的软件将向所有人开放,而无需考虑其种姓,宗教,领土,性别或任何其他可能使人们彼此区分的因素。 这样的软件是开放的,并且对所有人都相同。
It is free for further use. This might seem like a repetition of the second point, but the difference is that this is from the programmers perspective, implying that any programmer/developer is free to use the code written in an open-source software for his own personal use or project. Any functionality, any feature can be used as it is without any legal issues.
它是免费的,供进一步使用 。 这似乎是第二点的重复,但是不同之处在于,这是从程序员的角度出发的,这意味着任何程序员/开发人员都可以自由地将开源软件中编写的代码用于自己的个人用途或项目。 任何功能,任何功能都可以按原样使用,而没有任何法律问题。
So this was a basic overview of what open-source actually means. After seeing all this, it is evident that an end user would not notice any difference between a software which is open-source and one which is not, except the fact that the first one is more likely to be free.
因此,这是对开源实际含义的基本概述。 看完所有这些内容之后,很明显,最终用户不会注意到开源软件和非开源软件之间的任何区别,除了第一个软件更可能是免费的。
谁来贡献,为什么? (Who would contribute, and why?)
This is a question which I’m sure a lot of you will have in your minds at the moment. Until now, we have come to know that these softwares are completely free. Of course, on knowing this it would initially seem like the developers making this are not receiving any payment for their work. Then why would someone want to devote their precious time into this? And what are the opportunities I mentioned in the beginning of this post?
我敢肯定,这是一个问题,目前很多人都会想到。 到目前为止,我们已经知道这些软件是完全免费的。 当然,一知道这一点,最初看起来像是开发者并没有为此付出任何报酬。 那为什么有人要为此花费宝贵的时间呢? 我在本文开头提到的机会是什么?
First of all, open-source pays. And it pays a lot. There are various ways people are earning money through open source, and if someone keeps working on it, he/she will surely be able to earn too. But before I talk about the money aspect further, I would like to point out a few other benefits, which I believe are much more important than just money:
首先,开源支付。 它付出了很多。 人们通过开源赚钱的方式有多种,如果有人继续努力,他/她当然也可以赚钱。 但是,在我进一步谈论金钱方面之前,我想指出一些其他好处,我认为这些好处远不只是金钱:
→ Knowledge, Experience: Of course, the evergreen points of getting knowledge out of work, and that always helps. But that is not all. In my personal opinion, contributing to open-source is the best way for a beginner to start getting experience. Why? Because of the fact that the internships one would look for, or just simple paid projects would mostly be under corporates, looking to get a whole lot of work and value out of you. And even though I have got extremely supportive managers and seniors in every internship I have been in, getting into one of them is not an easy task. Due to a large amount of aspirants, you would often be up against people having months, if not years of experience already on them. Hence, getting to work on a real-world project becomes difficult. Open-source provides the perfect platform to counter this. In this community, no matter how less work you put in, you are always an asset. Hence, the pressure is way low than an internship and learning experience can be much better. Due to this, it becomes the most effective way to gain more and more experience and get to work on an ever-expanding number of real-world projects.
→ 知识,经验 :当然,从工作中获取知识的常绿点,总是有帮助的。 但这还不是全部。 我个人认为,对开源做出贡献是初学者开始获得经验的最佳方法。 为什么? 因为人们会寻找实习机会,或者只是简单的付费项目大部分都在公司之下,所以他们希望从中获得很多工作和价值。 即使我在所从事的每个实习中都得到了非常支持的经理和前辈,但要成为其中的一员并不是一件容易的事。 由于有大量的追求者,您通常会遇到几个月甚至几个月没有经验的人。 因此,开始进行实际项目变得困难。 开源提供了一个完美的平台来应对这一问题。 在这个社区中,无论您投入多少工作,您始终是资产。 因此,压力远低于实习,学习经验会更好。 因此,它成为获取越来越多的经验并从事越来越多的实际项目的最有效方法。
→ Value: One of the most important factors of working in this domain. The amount of value you get will be amazing. This value can be from companies, individuals, owners of these project, and the programming community in general. Having a good open-source profile is always a big plus.
→ 价值 :在此领域工作的最重要因素之一。 您获得的价值将是惊人的。 该价值可以来自公司,个人,这些项目的所有者以及一般的编程社区。 拥有良好的开源档案永远是一大优势。
→Professional Network: This is something I have experienced myself a lot. When you work on projects online, you collaborate with a lot of people. And this collaboration, of course, includes a lot of communication. During this communication, it is obvious that a lot of professional links are formed. And hence, I have got people from London and Amsterdam in my active LinkedIn connections. Of course, you never know when your professional network may end up helping you to an extent you can’t even imagine.
→ 专业网络 :这是我很经历的事情。 当您在线处理项目时,您会与很多人合作。 当然,这种协作包括很多沟通。 在此交流中,很明显,形成了许多专业链接。 因此,在积极的LinkedIn连接中,我吸引了伦敦和阿姆斯特丹的人。 当然,您永远都不知道您的专业网络何时会最终为您提供您甚至无法想象的帮助。
→Opportunities: This point is closely related to the second point in this list(value). Specifically, value from companies. A lot of companies, including industry leaders like Google pay a lot of attention to open-source. So much so that one of their most prestigious programs for students, GSoC(Google Summer of Code) is completely open-source based. You can only get in if you have a good open-source profile, and then the project you work on is also open-source. This shows the importance of this domain in the industry at the moment. And the GSoC is not alone in this list, there are hundreds of prestigious internships out there looking for people with good open-source skills. Outreachy, MLH, Linux Foundation are just some examples. The reliance of these companies on open-source is just a reflection of the amount of value it has out there in the world.
→ 机会 :此点与列表(值)中的第二点紧密相关。 具体来说,就是公司的价值。 许多公司,包括像Google这样的行业领导者,都非常关注开源。 如此之多,以至于GSoC(谷歌代码之夏)是学生最负盛名的计划之一,完全基于开源。 只有拥有良好的开源配置文件,您才能进入,然后您从事的项目也是开源的。 这表明此领域目前在行业中的重要性。 GSoC并不只在这个列表中,有数百个著名的实习生正在寻找具有良好开源技能的人。 Outreachy,MLH,Linux Foundation只是一些示例。 这些公司对开源的依赖只是其在世界范围内拥有的价值的反映。
And of course,
而且当然,
You get paid. The thinking that open source cannot pay you is completely wrong. Once you reach a good level, there’s a high chance that you are going to get hefty amounts from various sources for your work. How? Internships, Sponsors, Payment by companies: there are endless ways. A large number of people have worked really hard to make a system that ensures that people do not refrain from giving their time here just because it does not offer money. It does. Even the internships I talked about just now? They pay very good amounts to their interns, and a stipend of $6000 for 3 months by Outreachy is just one example.
你得到报酬 。 开源无法支付您的想法是完全错误的。 一旦达到一个良好的水平,就很有可能从各种来源获得大量的工作收入。 怎么样? 实习,赞助商,公司付款:有无数种方式。 许多人都在努力工作,以建立一个确保人们不会因为没有钱而花时间在这里的系统。 是的 甚至我刚才提到的实习? 他们向实习生支付了很高的金额,Outreachy提供的为期3个月的$ 6000津贴只是一个例子。
好吧,我坚信。 我该如何开始? (Okay, I’m convinced. How do I start?)
This is the question that I was confused with too, and was consistently doubting the ways I was following until I made my first contribution. But the thing is: you just need to follow the most straight forward method you can think of. However, before I jump to that, should we not know what all skills are required before we see how to do it?
这也是我也很困惑的问题,一直以来我一直在怀疑自己遵循的方式,直到我做出自己的第一笔贡献。 但事实是:您只需要遵循您能想到的最简单的方法即可。 但是,在我跳到那之前,在看到如何做之前我们是否应该不知道所有技能是什么?
The answer is nothing. Until now whatever I said makes it feel like you need to be good at programming to contribute to a project. Because of course, softwares are made up of code. But the catch here is: softwares are not made up of JUST the code. There are various aspects to a single software being launched into the market. The design, content, the documentation for using it, even reporting bugs is an essential part of a software. Do any of these require coding? No. You just do whatever you are already good at, and contribute to the project that needs you. That’s all.
答案是什么。 到现在为止,无论我说什么,都感觉您需要精通编程才能为项目做出贡献。 当然,软件是由代码组成的。 但是这里要注意的是:软件不是仅由代码组成。 投放市场的单个软件有很多方面。 设计,内容,使用它的文档,甚至报告错误都是软件的重要组成部分。 这些都需要编码吗? 不。您只需做自己擅长的事情,并为需要您的项目做贡献。 就这样。
However, considering everything I have said in this article is heavily about programming, it would be extremely unfair to ignore that aspect here. Though jumping into open source, in general, does not require building some new skill as such, jumping in as a programmer does have some requirements. Let’s list them out:
但是,考虑到我在本文中所说的一切都与编程息息相关,因此在这里忽略这一方面将是极其不公平的。 尽管一般来说,跳入开源并不需要建立一些新技能,但是以程序员的身份跳入确实有一些要求。 让我们列出它们:
Git: Git is officially the way of handling your software. It is not a language with which softwares are made, it is simply a tool that helps you keep your code in check. Using the power of git, you can create checkpoints in your code or make branches, which essentially means work on your code while keeping the previous version intact to ensure you can revert back if needed. Essentially, it is the version control system for your software, and as we see in the next point, git is extremely important not for developing the software, but for collaborating with others while doing it. And considering collaboration is the most important thing while doing open-source, git gets a similar status.
Git: Git正式是处理软件的方式。 它不是用来制作软件的语言,它只是一种可以帮助您检查代码的工具。 利用git的强大功能,您可以在代码中创建检查点或创建分支,这实际上意味着您可以在代码上工作,同时保持先前的版本完整,以确保您可以在需要时还原。 从本质上讲,它是您软件的版本控制系统,正如我们接下来要看到的那样,git对于开发软件不是至关重要,而对于在开发过程中与他人合作非常重要。 而且考虑到协作是开源过程中最重要的事情,git的地位也差不多。
Github: Github is the website where all of the open-source hosting takes place (it is not the ONLY place, but is undoubtedly the leader). That is basically the UI version of git and when closely integrated, it becomes the resource completely carrying the load of making collaboration possible. Hence, it becomes as essential as git in the workflow.
Github: Github是所有开源托管发生的网站(它不是唯一的地方,但无疑是领导者)。 这基本上是git的UI版本,当紧密集成时,它将成为完全承载使协作成为可能的资源。 因此,它在工作流中变得与git同样重要。
Of course, a programming language. When contributing to a software, in the end, all of it is just code. So it would be essential to know the language the code is written in for obvious reasons.
当然是一种编程语言 。 最后,在开发软件时,所有内容都只是代码。 因此,出于明显的原因,必须知道编写代码所用的语言。
That’s all. Most people aiming to start out as programmers already know some programming language, so the only new skills needed are git and Github. However, the good thing is: learning them is extremely easy, and cannot take more than 2 days, if not just one. Find a good tutorial on YouTube, and you’re good to go.
就这样。 大多数打算以程序员起家的人都已经知道某种编程语言,因此唯一需要的新技能是git和Github。 但是,好处是:学习它们非常容易,即使不是只有一天,也不会超过2天。 在YouTube上找到一个不错的教程,一切顺利。
Now, about the procedure for starting. The only difficult part in the whole procedure is finding a software you can contribute too. As a beginner, it might take you some time to actually find the one which requires the skill set you possess(in terms of the programming language, of course). The best way to do that is just to keep looking. You can do that manually, or you can look for codebases having issues with the tag “good first issue” on Github (my suggestion: look for a package called “good-first-issue” on Github, that got me to my first software too). That will surely get you to the right place. Okay, you find your software. What next? Well, that’s all. You just make a copy of the code on your system, make the changes you want to make, and put the code back on the website. How to do that? That is where git and Github come in. Once you have learned them, doing these steps will be a breeze. And then congrats, you have made your first contribution and are now an open-source developer!
现在,关于启动过程。 整个过程中唯一困难的部分是找到您也可以提供的软件。 作为初学者,可能需要一些时间才能真正找到需要您具备的技能(当然,就编程语言而言)的技能。 最好的方法就是继续寻找。 您可以手动执行此操作,也可以在Github上查找标记为“ good first issue”的代码库(我的建议:在Github上查找名为“ good-first-issue”的软件包,这使我进入了第一个软件太)。 那肯定会把你带到正确的地方。 好的,您找到了软件。 接下来是什么? 好,仅此而已。 您只需在系统上复制代码,进行所需的更改,然后将代码放回到网站上。 怎么做? 这就是git和Github进入的地方。一旦您了解了它们,执行这些步骤将很容易。 然后恭喜,您已经做出了自己的第一个贡献,现在成为开源开发人员!
总结 (Concluding)
Great. So that was all the things that I wanted to share with you today. Signing off, hoping this article helped you understand why 40 million people are working on 28 million projects for “free” everyday(and probably encouraged you to become one of them).
大。 这就是我今天想与您分享的所有内容。 签字同意,希望本文能帮助您了解为什么有4000万人每天为2800万个“免费”项目工作(并可能鼓励您成为其中一个)。
翻译自: https://medium.com/swlh/the-what-how-and-why-of-the-open-source-community-in-programming-10b7925cf66d
编程开源