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

    文章

    3329

    浏览量

    42476
  • BSD
    BSD
    +关注

    关注

    0

    文章

    31

    浏览量

    10408
  • gpl
    gpl
    +关注

    关注

    0

    文章

    26

    浏览量

    2178
收藏 人收藏

    评论

    相关推荐

    程序员需要学什么,微软资深程序员学习手册面试宝典资料

    程序员是现在比较吃香的工作。程序员工资高还不需要和复杂的社会打交道。那么怎么成为一名程序员?当程序员需要学什么?
    发表于 03-22 11:54 30次下载

    “菜鸟”程序员和“大神”程序员到底有什么区别

    现在社会上有很多程序员,那您是否可想过程序员为什么会有不同的水平?你又是哪一类的程序员?“菜鸟”程序员和“大神”程序员差在哪里?
    的头像 发表于 05-14 08:48 3721次阅读

    程序员如何定义

    当了几年的程序员了,一直都在想一个问题,什么是程序员程序员应该做好那些事情,什么样的程序员是有素质的程序员?什么样的
    的头像 发表于 12-18 14:15 2624次阅读

    菜鸟程序员和大神程序员的差距

    刚刚走出就业的程序员,技术是刚刚起步的基点。那下面我们就聊一聊有关技术的东西。首先请您先想想这几个问题。现在社会上有很多程序员,CSDN就是我们程序员的家,那您是否可想过程序员为什么会
    的头像 发表于 06-03 15:56 2528次阅读

    什么是程序员

    当了几年的程序员了,一直都在想一个问题,什么是程序员程序员应该做好那些事情,什么样的程序员是有素质的程序员?什么样的
    的头像 发表于 06-04 16:21 8993次阅读

    程序员的未来

    程序员出路在何方程序员 创业如果你是程序员,也想创业,看看我说的。
    的头像 发表于 06-12 17:29 2952次阅读

    为什么要成为高级程序员

    程序员到高级程序员的职业生涯要经历以下几个阶段:初级程序员、中级程序员、最后是高级程序员
    的头像 发表于 07-11 16:51 2434次阅读

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

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

    普通程序员和高级程序员有哪些区别

    从工作的方面来说,普通程序员和高级程序员一般有下面几个区别:
    的头像 发表于 09-08 10:47 3774次阅读

    如何定义程序员

    多年以来,黑程序员一直是一项广大人民群众喜闻乐见的娱乐活动,我们不仅黑程序员程序员也喜欢自黑,如此一来,大家好像都觉得黑程序员是一项天经地义的事情了,然而事实上,的确是的。
    的头像 发表于 10-28 17:05 2726次阅读

    优秀程序员与糟糕程序员的变现差异

    软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。
    的头像 发表于 11-07 16:14 3066次阅读

    程序员最大的失败是什么

    程序员最大的失败就是认为自己是好的程序员
    的头像 发表于 11-18 16:26 3218次阅读

    程序员的类型

    今天来聊个有趣的话题,你是什么类型的程序员? 在学校里或在公司里,你是不是接触过不少其他的程序员,有没有发现,虽然同属程序员科, 但也有众多的不同。 今天我就来给程序员分个类,看看你是
    的头像 发表于 11-28 16:39 4699次阅读

    NEC程序员开源分享

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

    Shield Arduino程序员ISP ATtiny 85开源

    电子发烧友网站提供《Shield Arduino程序员ISP ATtiny 85开源.zip》资料免费下载
    发表于 07-14 14:23 1次下载
    Shield Arduino<b class='flag-5'>程序员</b>ISP ATtiny 85<b class='flag-5'>开源</b>