0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开源软件到底是什么?编程人员为什么要重视它?

如意 来源:读芯术微信公众号 作者:读芯术微信公众号 2020-10-10 10:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

时至今日,很多人对于开源编程依然存在着误解和低估,这无疑令人震惊。资深开发人员通常十分尊重和赞赏开源编程,但大多数初学者往往并不知道开源编程潜在的机遇。在网上寻找实习机会从而获得报酬更具有吸引力,忽视开源的重要性似乎是可以被理解的。

虽然实习确实非常重要,我完全支持去实习,我自己也参加过一些实习,但忽视开源可能会对你的职业生涯造成影响。

自从几个月前接触了开源世界后,笔者就一直在研究它。如此简短的一篇文章,或许无法把我从中学到的东西完全用文字表达出来,但我会尽力而为。首先,笔者会简单介绍一下开源软件到底是什么。

什么是开源‍

开源软件与大多数人每天使用的软件并没有太大差异。事实上,如果你现在上网并尝试找到所有流行开源软件的列表,你会感到十分惊讶。例如,Mozilla Firefox、Ubuntu、WordPress、VLC媒体播放器等等。而它们与其他软件的区别到底是什么?是因为它们符合“开源”的条件,而其他流行的软件不符合吗?

很简单,在于它们有一些预定义的特征,这些特征定义了我们一直讨论的术语。

免费性:这可能是开源软件最明显的特征。开源软件对所有人都是免费的,无论是开发者、用户还是所有者。它不会收取任何服务费用,如果它收费了,它便无法自称开源。

透明性:这意味着所有使软件运行的代码都可以在互联网上免费浏览。你可以看到它,使用它,用它做你想做的任何事情。最重要的是,你可以参与其中,添加你自己的代码,然后把代码插入其中,从而改进软件。

公平性:对许多人来说,这似乎是一个非常普遍的观点,但实际上这是开源一个非常重要的方面。即将发布的软件将对所有人开放,不考虑他们的种姓、宗教、领土、性别或任何其他可能区分人与人的因素。软件开放,人人平等。

免费进一步使用性:似乎与第二点的重复了?不同之处在于,这是从程序员的角度出发,任何程序员/开发人员都可以自由地使用开源软件中编写的代码,用于自己的个人用途或项目。任何功能、任何特性都可以按原样使用,没有任何法律问题。

这就是开源实际意义的基本概述。了解这一切后,很明显,最终用户不会注意到开源软件和非开源软件之间的任何区别,除了前者更有可能是免费的。

参与开源的人员以及原因‍

很多人此刻都会想到这个问题。我们知道了这些软件是完全免费的,最初做这个项目的开发者似乎并没有得到任何报酬。那么为什么会有人愿意把宝贵的时间投入到这件事上呢?还有,我在这篇文章开头提到的机遇有哪些呢?

首先开源“付费”,而且报酬很高。人们通过开源赚钱的方式有很多种,但在我进一步谈论金钱之前,我想指出一些其他的益处,这些益处比金钱更为重要:

知识、经验:当然,能够不断从工作中获取新的知识总是有帮助的,但远不止如此。在我个人看来,对于一个初学者,获得经验比较好的方式便是参与开源。人们会寻找实习机会,或者仅仅是简单的付费项目,而这些项目大部分都在公司名下,他们希望从你身上获得价值。

以笔者自身为例,虽然我参加过的每一次实习都有非常支持我的经理和学长,但参与其中一个依旧不是一件容易的事情。你会与大量的求职者竞争,竞争对手中很有可能出现有几个月甚至几年工作经验的“老手”。

真正参与一个现实世界的项目变得很困难,而开源为此提供了优秀的平台。在这个平台上,无论你投入多少工作,你始终是有价值的。压力会比实习要小得多,而且学习经验会好得多。正因为如此,这是获得更多的经验并参与更多的真实世界项目的最有效的方法。

价值:在这个领域工作最重要的因素之一,你得到的价值将是惊人的。这些价值可以来自公司、个人、这些项目的所有者以及各种编程社区,拥有一个好的开源档案终归是一个很大的优势。

专业网络:对于这件事情我经验颇丰。在网上做项目时,你会和很多人合作,合作包括大量的交流。交流过程中,我们形成了很多专业的联系。在我活跃的LinkedIn联系人中,有来自伦敦和阿姆斯特丹的人,你永远无法设想什么时候你的专业网络会给你带来怎样的帮助。

机会:这一点与第二点密切相关。具体来说,是来自公司的价值。包括谷歌这样的行业领袖在内,很多公司都非常关注开源,他们最负盛名的项目之一GSoC(Google Summer of Code)就完全基于开源。只有拥有一个好的开源档案,并且参与的项目也是开源的,这样才能够进入公司,而这说明了目前这个领域在行业中的重要性。

GSoC并不是唯一,还有数百个有声望的实习岗位在招收具有良好开源技能的人。Outreachy、MLH、Linux Foundation只是一些例子,窥一斑而知全豹,这些公司对开源的依赖直接反映了它的价值。

当然,你会得到报酬,认为开源无法带来收入的想法是完全错误的。当你达到一定的水平,你就很有可能会从各种来源(实习,赞助商,公司付费)中获得大量的收入。许多人都十分努力地建立系统,以确保人们不会因为系统无法提供资金而不愿参与开源。就连我刚才提到的实习,他们付给实习生的工资都非常高,例如,Outreachy 3个月的津贴为6000美元。

我该如何开始呢?‍

这也曾是我困惑的问题,并且一直怀疑我所遵循的方式,直到我参与了第一个项目。答案就是:你只需要遵循你能想到的最直截了当的方法。然而,我们是否应该在知道如何做之前,了解所需的技能什么?

不需要。直到现在,无论我说什么,都会让人觉得你需要擅长编程才能参与项目。当然,这是因为软件是由代码组成的。但是问题在于,软件不仅仅是由代码组成的。一个单一的软件投放到市场会有许多方面:设计、内容、使用文档,甚至报告错误都是软件的重要组成部分。这些都需要编码吗?不。你只需要做你已经擅长的事情,并积极参与到需要你的项目中。仅此而已。

不过,在这里忽略编程是非常不公平的。一般来说,你并不需要学习一些新的技能。但作为一个程序员,参与开源确实有一些要求。

Git:Git是处理软件的常规方式。它并不是一种软件制作语言,只是一种检查代码的助力工具。利用Git的强大功能,人们可以在代码中创建检查点或创建分支,这意味着在保持先前版本完好无损的同时处理代码,以确保在需要时可以恢复原状。

本质上,Git是软件的版本控制系统,它并不是针对开发软件,而是对于在开发软件过程中与其他人合作来说,是极其重要的。此外,由于在参与开源时协作是最重要的,Git也变得同样重要。

Github:Github是所有开源托管发生的网站,它不是唯一的网站,但无疑是行业领袖。这基本上是Git的用户界面版本,当紧密集成时,它就成为了完全承载协作的资源。因此,它在工作流程中和Git一样重要。

编程语言:参与一个软件,到最后,所有的东西都只是代码。因此,显而易见,了解代码所用的语言是至关重要的。

要求仅此而已。对于大多数程序员,他们已经知道一些编程语言,所以需要的新技能就是Git和Github。好消息是:学习它们非常容易,一两天即可掌握天。在YouTube上找一个好的教程,就可以开始了。

整个过程中唯一困难的部分是找到一个可以参与的软件。作为初学者,你可能需要一些时间来找到一个真正需要掌握的技能集(当然是在编程语言方面),而比较好的办法就是不断寻找。你可以手动完成,或者可以在Github上寻找与“good-first-issue”标签有问题的代码库,那一定会带你步入正途。

接下来呢?只需在系统上复制代码,进行想要的更改,然后将代码放回网站。如何做到呢?这就是Git和Github的用武之地。当你学会了它们,做这些步骤就轻而易举了。恭喜你,你已经参与了第一次开源,现在是一个开源开发者了!

为什么每天有4000万人在“免费”做2800万个项目?希望本文帮你找到了答案,也希望你会成为其中一员。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件
    +关注

    关注

    69

    文章

    5362

    浏览量

    91895
  • 编程
    +关注

    关注

    90

    文章

    3723

    浏览量

    97442
  • 开源
    +关注

    关注

    3

    文章

    4348

    浏览量

    46446
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    “龙虾”上车,到底是好是坏?

    [首发于智驾最前沿微信公众号]最近一段时间,无论你是否关注科技圈,都会被“养龙虾”的相关内容刷屏,所谓“龙虾”,指的是开源智能体框架OpenClaw。之所以突然爆火,并不是因为模型能力有了质变
    的头像 发表于 03-21 09:49 652次阅读
    “龙虾”上车,<b class='flag-5'>到底是</b>好是坏?

    不懂编程,怎么搞定电子仪表上位机软件?零代码搞定上位机软件开发

    “不懂编程,怎么搞定电子仪表上位机软件?”这是很多电子仪表用户的共同困惑。传统上位机开发被“专业编程”门槛牢牢限制,即便你对测试需求了如指掌(比如知道采集哪些仪表数据、怎么分析波形、
    的头像 发表于 01-27 17:19 740次阅读
    不懂<b class='flag-5'>编程</b>,怎么搞定电子仪表上位机<b class='flag-5'>软件</b>?零代码搞定上位机<b class='flag-5'>软件</b>开发

    CH341编程软件NeoProgrammer_2.2.0.10

    CH341编程软件NeoProgrammer_2.2.0.10免费下载,更新资料上闲鱼找“于人杂货铺”
    发表于 01-23 15:37 198次下载

    嵌入式软件测试找bug的常见方法和秘诀

    在嵌入式软件开发过程中,一般来说,花在测试比花在编码的时间多很多,通常为3:1(甚至更多)。这个比例随着你的编程和测试水平的提高而不断下降,但不论怎样,软件测试对一般人来讲很重要。
    发表于 01-12 07:07

    MOS管到底是什么?和三极管、继电器有什么本质区别?

    出现的“实力派选手”,常常被与三极管、继电器放在一起比较。不少人在选型时会困惑:MOS管到底是什么?和我们熟悉的三极管、继电器,核心差异又在哪里?今天就用通俗的语言拆解清楚
    的头像 发表于 01-07 13:46 1015次阅读
    MOS管<b class='flag-5'>到底是</b>什么?和三极管、继电器有什么本质区别?

    IGBT到底是什么?-从名称入手来带您了解

    对于工作需要用到IGBT、但从未专业学习过IGBT的人来说, IGBT到底是什么、它为什么叫IGBT、的核心关键词是什么、怎么理解 等一系列问题并无法一次性在某个地方获取到,都需
    的头像 发表于 11-25 17:38 2755次阅读
    IGBT<b class='flag-5'>到底是</b>什么?-从名称入手来带您了解

    请问Keil中的map文件到底是什么意思?

    Keil中的map文件到底是什么意思?里面是如何进行相关执行操作的
    发表于 11-25 06:59

    单片机和嵌入式,到底是什么关系?

    的关系:什么是单片机?什么是嵌入式?它们到底是不是一回事?先说说大家最先听说的那个词——单片机(MCU)。单片机,全称是MicrocontrollerUnit,顾名思
    的头像 发表于 11-14 10:28 2081次阅读
    单片机和嵌入式,<b class='flag-5'>到底是</b>什么关系?

    NVIDIA宣布开源Aerial软件

    NVIDIA 开源其 Aerial 软件,并将 NVIDIA Sionna 研究套件和 Aerial 测试平台引入 NVIDIA DGX Spark 平台,为研究人员提供强大的工具和便捷的访问途径,以加速 AI 原生无线创新。
    的头像 发表于 11-03 15:14 1178次阅读

    一、API到底是什么?为什么我需要

    API (Application Programming Interface):应用程序编程接口。 类比理解:API它不是一个具体的东西,而是一份“餐厅菜单”和一套“点餐规则”。大模型厂商(餐厅)把
    的头像 发表于 11-03 09:34 839次阅读

    IEC 到底是什么?为什么它能影响全球?

    IEC 到底是什么?为什么它能影响全球?
    的头像 发表于 09-04 17:07 3908次阅读

    浮思特 | 红外热像仪有什么用?一文带你看懂的“隐藏能力”

    问题来了,红外热像仪到底是干嘛的?到底有什么用?别急,今天就用这篇文章,跟你聊聊红外热像仪的真正用途!红外热像仪到底是什么?一句话解释:它是一种可以“看到”温度差异的
    的头像 发表于 08-08 10:43 971次阅读
    浮思特 | 红外热像仪有什么用?一文带你看懂<b class='flag-5'>它</b>的“隐藏能力”

    晶振的 “负载电容” 到底是什么

    负载电容,到底是什么? 负载电容,简单来说,是指晶振的两条引线连接IC块内部及外部所有有效电容之和,我们可以将其看作晶振片在电路中串接的电容。从更专业的角度讲,它是为了使晶振能够在其标称频率下稳定
    的头像 发表于 07-25 16:26 1211次阅读

    软件开源生态出海合作分论坛即将召开

    ,也成为打破组织边界、深化国际合作、促进全球技术创新和资源重组的重要路径。中国高度重视开源体系建设,加快完善开源生态圈,促进开源国际交流合作,不断释放
    的头像 发表于 07-23 09:57 964次阅读

    请问编译纯rtos到底是选择Linux+rtos的sdk编译only rtos还是直接使用rtos sdk?

    编译纯rtos到底是选择Linux+rtos的sdk编译only rtos还是直接使用rtos sdk?
    发表于 07-11 07:22