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

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

3天内不再提示

程序员常说的“开源”是什么?

jf_78858299 来源:小马技术圈 作者:小马技术圈 2023-05-06 18:00 次阅读

01“开源”

在互联网领域,可以简单理解为是“开放源代码”的简称。通常来说,指的是将软件项目的源代码向大众开放,允许大众获取、使用、修改和发行。在硬件等其它领域也可以套用开源的概念。

“开源”就好比公开一栋房子的结构图纸,有了图纸的人可以拿这份图纸建造一栋一模一样的房子,也可以叫懂行的人帮你优化这原来的设计造一栋新版本的房子。没有“开源”就好像没有结构图你要仿造一栋房子只能仿造表面相似,结构性能可能相差很远,可能根本经不住用户多堆一点东西就变形垮塌了。

02“开源项目”

在互联网领域,可以简单理解为是“开放源代码”的简称。通常来说,指的是将软件项目的源代码向大众开放,允许大众获取、使用、修改和发行。在硬件等其它领域也可以套用开源的概念。

03“开源软件”

直接的字面意思是公开源代码的软件,也就是说,如果软件的源代码是开源的,那么这个软件就可以称之为“开源软件”。不过,对于很多商业公司来说,“开源软件”只能看作是某个开源项目给出的“软件示例”而已,因为软件的源代码已经开放出来了,那么这些商业公司,完全可以根据自己的需要,基于这个示例,修改或衍生出真正适合自己的软件产品

04“开源社区”

为某个开源项目的开发成员提供的一个学习和交流的空间。由于开源项目常常需要散布在全世界的开发人员共同参与推进,所以“开源社区”就成了他们沟通交流的必要途径。

05“开源协议”

是指开源软件所遵循的许可协议,获得了开源软件的用户,需要在该协议的允许范围内对软件的源代码进行使用、修改和发行(包括以盈利为目的商业发行)。

06“GitHub”

是一个面向软件项目的托管平台,可以用于托管各种类型的软件项目,包括开源项目和私有项目。由于大量开源项目基于GitHub进行托管,方便来自世界各地的开发人员共同工作以及获取开源软件,所以在开源项目领域,GitHub的影响力很大,是开源项目的首选托管平台。

总结一句话来说

就是在GitHub上,发布了一个软件项目,是开源的,这个开源项目会产出一款使用了MIT开源协议的开源软件供大家免费获取,如果想加入这个开源项目共同工作,可以来这个项目的开源社区参与讨论,网址是:http://xxx.xxx.xxx。

开源的意义

一、给企业带来的价值

1.为企业提供品牌形象的引导:在程序员的世界中,开源虽然不能说是多么崇高的事情,但总的来说,形象依然是正面的。开源意味着企业愿意与其他企业和个人共建生态,这个企业的大体上来说,是有拥抱开放的这样的倾向的。

  1. 为企业降低人员筛选的成本:关于人员筛选成本降低的一方面而言,其实很好理解。企业需要开发者来完成自己的需求,在招募的时候,他可以选择没有贡献过自己开源项目的人,但他更喜欢去招募那些已经贡献过自己开源项目的人,因为这些人贡献过代码,至少知道我的项目、逻辑是什么,知道我的团队的代码风格是什么,参与过社区的沟通,能够和我的团队有很好的协作。这样的人如果招募到自己的团队中,拉过来就可以干活,没有切换成本,筛选起来也简单,成本自然而然降低了。在这个方面,国内做的最好的是 TiDB ,大部分成员都来自开源社区。

3.控制社区的发展:开源世界的规则是,你的贡献多,你的话语权就大,你就可以主导项目的发展。对于企业来说,如果你想将一个开源项目向着你想要的方向去发展,就多安排人去贡献开源,然后,通过这种明谋,来控制项目的发展。这一方面,做的最好的应该算 RedHat,RedHat 通过提供大量的人去参与 Linux Kernel 的开发,从某种意义上来说,RedHat 可以控制 Linux Kernel 的方向。在内核开发大部分都是 RedHat 的人的情况下,他可以让开发者只去处理对自己有利的 Pull Request 。这种操作并不违反社区的规则,只是优先处理自己家的 PR,没有任何问题。但也正是这种明谋,在不断的调整着 Linux Kernel 的方向。

二、举例各盈利模式下的开源项目

1、多种产品线

如 MySQL 产品就同时推出面向个人和企业的两种版本,即开源版本和专业版本,分别采用不同的授权方式。开源版本完全免费以便更好的推广,而从专业版的许可销售和支持服务获得收入。

2、技术服务型

JBoss就是这种模式的典型代表。JBoss 应用服务器完全免费,而通过提供技术文档、培训、二次开发支持等技术服务而获得收入。

3、应用服务托管(ASP)

PHP Live,就是一种构架于 PHP、MySQL 之上的开源软件,它可为企业用户提供实时交谈服务。目前已经有数十家公开提供 PHP Live托管服务的应用服务提供商。

4、软、硬件一体化

比如 IBM HP 等服务器供应商巨头,通过捆绑免费的 Linux 操作系统销售硬件服务器。SUN 公司近期将其 Solaris 操作系统开放源码,以确保服务器硬件的销售收入,也是这种模式的体现。

5、附属品

比如 IBM HP 等服务器供应商巨头,通过捆绑免费的 Linux 操作系统销售硬件服务器。SUN 公司近期将其 Solaris 操作系统开放源码,以确保服务器硬件的销售收入,也是这种模式的体现。

6、品牌战略、服务至上

康比尔公司的 Compiere ERP & CRM 软件是这种模式的典型案例。

7、市场策略

对开源感兴趣的推荐去LUPA开源社区了解。

以下重点说一下 开源协议

开源软件虽然通常都是免费的,但并不等于软件的开发者们(开源社区)完全放弃了自己的权利和对软件的控制。为了保证开源软件不被一些商业机构或个人窃取,成为他们不劳而获的牟利工具,并影响开源项目的长远发展,开源社区开发出了各种开源协议,用于维护自己的软件版权。

在开源协议里面,会详尽表述使用者在获得代码后拥有的权利和义务,包括可以进行何种操作,而何种操作又是被禁止的。

开源协议种类非常之多,并且同一款协议会有很多个变种版本。开源协议规定得太宽松,会导致开发者们丧失对开源软件的很多权利,而太严格又不便于使用者们的使用以及开源软件的传播。

常见的开源协议有:GPL、LGPL、BSD、Apache 2.0、MIT

01

G P L

Linux就是采用了GPL协议。GPL协议允许代码的获取、代码的免费使用和引用、代码的修改和衍生,但要求对修改和衍生代码的进行开源,不允许修改和衍生的代码做为私有闭源的商业软件发布和销售。

这也就是为什么我们能用各种免费的linux操作系统,以及linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

GPL协议的主要内容是,只要在一个软件中使用到了包含GPL 协议的产品(GPL类库),则该软件产品必须也采用GPL协议,既必须也是开源和免费,这就是所谓的“传染性”。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

02

L G P L

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL不同,LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

03

B S D

BSD开源协议是一个给予使用者很大自由的协议。开发者可以自由使用和修改源代码,也可以将修改后的源代码作为开源或者专有软件再发布。但是有以下几个要求:

如果再发布的产品中含有源代码,则在源代码中必须带有原来代码中的BSD协议。

如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权申明中包含原有代码中的BSD协议。

不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

04

Apache 2.0

Apache Licence 2.0的简称,Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和最终原作者的著作权,同样允许源代码修改和再发布。但是也需要遵循以下条件:

需要给代码的用户一份Apache Licence。

如果修改了代码,需要再被修改的文件中说明。

在衍生的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。

如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以再Notice中增加自己的许可,但是不可以表现为对Apache Licence构成更改。

Apache Licence也是对商业应用友好的许可,使用者也可以在需要的时候修改代码来满足并作为开源或商业产品发布/销售。

*05M I T

MIT是和BSD一样宽泛的许可协议,源自麻省理工学院(Massachusetts Institute of Technology, MIT)。使用MIT协议的开源软件作者只保留版权,而对使用者无任何其它限制。MIT与BSD类似,但是比BSD协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包中包含原作者的许可信息,且适用于商业软件。使用MIT的软件项目有:jquery、Node.js

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

    关注

    3

    文章

    2991

    浏览量

    41724
  • BSD
    BSD
    +关注

    关注

    0

    文章

    28

    浏览量

    10358
  • gpl
    gpl
    +关注

    关注

    0

    文章

    26

    浏览量

    2125
收藏 人收藏

    评论

    相关推荐

    成为优秀程序员的条件(下)

    (接“成为优秀程序员的条件(上))7 需求理解能力。程序员需要理解一个模块的需求,评估该模块在系统运营中所处的环境8 复用性,模块化思维能力。程序员在完成任何一个功能模块或函数的时候,要多想一些
    发表于 08-22 11:52

    【PDF】《疯狂的程序员

    `内容简介 · · · · · ·   本书描写了绝影等程序员的成长之路,分为大学、工作、创业三部分。作者笔下以绝影、BOSS liu、Bug Yang等为代表的程序员是大多程序员成长的真实写照
    发表于 03-08 14:06

    疯狂的程序员

    疯狂的程序员
    发表于 08-04 13:09

    程序员修养

    程序员修养
    发表于 08-19 22:36

    程序员的好习惯

    程序员的好习惯
    发表于 08-06 16:34

    程序员的快乐:那些小细节

    近日,有人撰写了一篇文章,谈到了影响程序员快乐的各种因素,特别强调了那些不太为人所注意的小细节。除了薪水、晋升机会等显而易见的因素外,日常的工作中我们还需要注意一些小细节,也许程序员的快乐就是源自于
    发表于 12-11 14:10

    程序员的幽默——献给所有程序员

    1. 某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫
    发表于 10-31 18:43

    程序员越老越优秀吗?

    Peter Knego 向我们展示了一些有趣的东西: 官方数据:程序员年纪越大越出色、越稀有。他使用StackOverflow的声誉值和其它几个指标来印证他的观点。他的总结是:随着年龄的增加,程序员
    发表于 10-25 10:04

    程序员的春联

    程序员写春联,秒杀全场!网友不愧是聪明绝顶的“程序猿”!
    发表于 04-08 11:39

    程序员为什么用Mac系统

    #Mac为什么会成为程序员的首选?程序员为什么都想要一台Mac?
    发表于 08-28 08:57

    请问我应该使用哪个程序员

    你好,我用pic32mz2048EFH100微控制器,现在我和pickit3一起做程序员(我借的),但是我需要为自己买新的程序员。我不知道皮卡3是否是最好的解决方案,或者我应该转移到另一个程序员
    发表于 11-04 10:27

    #1024程序员节#话题讨论:不会填坑的程序员不是一个好程序员

    作为程序员的你是否经常遇到这样的情景:负责开发的项目遇到线上bug,心想这不是我的锅,先不管了,放着吧;代码写完后,隐隐感觉有问题,可程序跑得通,先用着吧;接手一个老系统,这什么破代码,算了,改吧改
    发表于 10-23 14:51

    程序员的高薪职业发展方向,请查阅

    `现存的一个事实是程序员之间的差异其实是非常大的,只有很了解程序员的人才能完全了解这一点,虽然有大多数的高层管理者对所有的程序员都一视同仁,还是有企业是把程序员当做工具、资源看待,做个
    发表于 06-30 17:33

    顶尖程序员和普通程序员的区别

    普通程序员常说:“这个简单,几天我就写出来。”
    的头像 发表于 07-25 11:17 2074次阅读

    NEC程序员开源分享

    电子发烧友网站提供《NEC程序员开源分享.zip》资料免费下载
    发表于 07-05 11:29 1次下载
    NEC<b class='flag-5'>程序员</b><b class='flag-5'>开源</b>分享