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

01“开源”

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

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

02“开源项目”

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

03“开源软件”

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

04“开源社区”

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

05“开源协议”

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

06“GitHub”

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

总结一句话来说

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

开源的意义

一、给企业带来的价值

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

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

G P L

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

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

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

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

L G P L

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

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

B S D

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

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

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

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

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

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。

原文链接:https://m.elecfans.com/article/2074858.html

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享