开源是什么?——跟老吕学Python编程

开源是什么?——跟老吕学Python编程

开源是什么?


开放源代码(Open source code),也称为源代码公开,简称“开源”

“开源”是指的是一种代码发布模式。
一般的代码取得已经经过编译的二进制可执行档,通常只有软件的作者或著作权所有者等拥有程序的源代码,而软件作者会将源代码公开,此称之为“源代码公开”,但这并不一定符合“开放源代码”的定义及条件,因为作者可能会设定公开源代码的条件限制,例如限制可阅读源代码的对象、限制衍生品等。

开放源代码软件是什么?

开放源代码软件源于自由软件开源运动,简称开源软件。
是指那些源代码公开,可以被自由使用、复制、修改和再发布的一系列软件的集合。

开源软件许可证是什么?

开源软件许可证,是对开源软件进行规范的授权合同,也可以称为授权协议书。当然,开源软件许可证类别繁多,在选择适用上,了解彼此的权利让渡程度是其关键因素。

开放源代码软件是什么?

开放源代码软件就是在开放源代码许可证下发布的软件,以保障软件用户自由使用及接触源代码的权利。这同时也保障了用户自行修改、复制以及再分发的权利。简单点说,就是所有公布软件源代码的程序都可以称为开放源代码软件。

开放源代码的软件代表有什么?

开放源代码有时不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。

使用开放源代码开放模式的软件代表就有GNU/Linux操作系统。

开放源代码软件与自由软件的概念

严格地说来,开放源代码软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件(开源软件)。
自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。但在现实上,绝大多数开源软件也都符合自由软件的定义。比如,遵守GPL的软件都是开放的并且是自由的。



开源的定义是什么?


开放原始码的定义由Bruce Perens(Debian创始人之一)定义如下:

  1. 自由的再散布
    符合开放源代码定义的授权,不得限制任何一方销售或让予已成为其中一部份的开放性源代码,即使该聚合性软件中包含多种不同来源的程序。此一授权不得要求权利金或其它费用。

  2. 程序源代码
    程序散布时必须包括源代码与其所编译的形式。假若程序在散布时并未附加源代码,其必须以一公开方式,在不超过合理的复制成本下,让人得以取得源代码,例如可以在不收取费用的情况下在网络上供入下载。这里所谓的“源代码”,必须是程序设计者最易于修改程序的形式,故意混乱源代码或是以所谓的中间形式,如预处理器、或编译程序所处理后的结果是不被允许的。

  3. 衍生作品
    符合开放源代码定义的授权,必须允许程序的修改与衍生作品”的产生.并且此授权必须允许在相同条件下,对于衍生作品加以散布。

  4. 原创作者程序源代码的完整性
    符合开放源代码定义的授权,可以禁止他人以修改的形式散布源代码,除非此一授权允许基于修改程序的目的,而采取“附加档案”的方式以区别此一部分非原创作者所创作。此一授权必须明确允许被授权人对于所修改的软件有加以散布的权利。此外,授权内容得要求衍生作品必须附加不同于原软件的名称或版本编号。

  5. 不得歧视任何个人或团体
    符合开放源代码定义的授权,不得对任何人或任何团体有歧视陛的规定。由于有些国家,包含美国在内,对于特定类型的软件进行出口管制,因此此类软件通常会有警告的标语,揭示此管制规定;但是在符合开放源代码定义的授权本身,并不包含此种警告标语在内。

  6. 不得歧视程序在任何领域内的利用
    符合开放源代码定义的授权,不得禁止任何人在特定领域使用此程序。例如,其不得禁止程序在商业上的使用,或者在基因研究上的利用。

  7. 授权的散布
    开放源代码授权内的权利,于所有再散布的程序均有适用,而无须透过其它授权加以行使。换言之,符合开放源代码定义的授权,必须有适用于所有衍生作品的延续性,以避免被授权人间接藉由附加其它授权的方式影响软件的开放性。

  8. 授权不得专属于特定产品
    附着于程序上的权利,不得仅限于特定软件散布的需要。所有程序的被授权人,均与原程序于散布时的状态一样,享有相同的权利。

  9. 授权不得对其他软件加以限制
    符合开放源代码定义的授权,不得对其他随同此一软件散布的其它软件,附加任何的限制。例如,不得规定在相同媒体散布的其它软件,接受此一授权条款所拘束而须开放源代码。

  10. 授权必须是科技中性的
    任何条款规定不可基于任何独特的科技或接12型式。例如,不得限制于使用点选包里(Clik-Wrap)的方式来下载,否则将有碍透过档案传输协议、CD-ROM或网站映射等方式再下载使用源代码的可能。



开源的优缺点


开源的优势

其主要的长处表现在长期可信赖性、平行除错、平行研发、完美应用程序接口、版本释出速等方面上。就长期可信赖性而言,只要企业在短期之中不会被排除于竞争市场外就可以称为具有长期可信赖性。由于在开放源代码的软件开发模式下,源代码是可以很轻易地于许多地方获得,并且可以自行使用、修改源代码,因此即使软件不再开发,自己也可以进一步利用源代码。此外,透过因特网科技的发展,开放源代码软件开放模式可以采取平行除错、平行研发的做法,将网络上潜在的无限开发者,免费的加以运用,并且可以同时进行,不受时间、地域的限制,最后只要选择适合的方案即可,所以只要参与的人数够多,其源代码释放速率通常也较快;就完美的应用程序接口来说,开放源代码软件开发模式将的建立于源代码的开放上,使得使用者能够透过源代码来验证,不像传统封闭源代码的电脑软件只能将其信心建立在软件公司的形象上。开放源代码的软件开发模式最大的优点在于其可得到大量的开放源代码社群的支持,如同拥有大量免费的软件开发及测试人员。这样将世界各地的优秀人才纳为己用,却又不须支付高额的薪水,这是传统封闭源代码的软件开发模式所无法获得的。

开源的劣势

当然,开放源代码软件开发模式也有其缺点,主要表现为管理成本、设计程序议题以及组织可信赖性等。首先就管理成本而言,主要是因为一旦计划发展到一定程度,其创新、修正的质量必然变大,参与人数众多,当然也会造成一定的管理成本,另外,整合、决策架构都会增高管理的成本;其次就设计程序议题来看,其不断释出新版本,将造成消费者需要不断重新安装的困扰,并且由于其设计上通常较不关心友善的界面,会增加使用者的接近使用的难度;最后就组织可信赖性而言,使用者会在意其使用的计算机软件可从开发组织中获得如何的支持和关心软件的未来发展方向。但是,由于开放源代码软件是由不同社群成员所贡献而成,并且不负质量担保的责任,因此相对于传统的软件企业,确实有可能无法获得完善的支持,也无法保证软件未来的发展方向。另外,虽然新的开放源代码市集式的开发模式,已在世界各地展开运行一段时间,并有许多诸如Linux典型的成功案例,可以说已对计算机软产业产生一定的冲击。但是其与传统开发模式相比亦有其缺点。



开源代表着放弃权力


开放源代码软件放弃了以下著作权人所享有的权利

开源代表着放弃作品复制权

接受某种开放源代码软件公共许可协议的用户,对于初始软件作品可以自由复制,也放弃了自己对初始软件作品修改完善以后衍生版本软件的复制限制权利。

开源代表着放弃作品修改权

接受某种开放源代码软件公共许可协议的用户,在依照协议复制了原软件作品的目标代码和源代码以后,可以对原软件作品在源代码上进行修改,并且对修改后的衍生软件作品,又要遵循先前已有的公共许可协议向后续的用户明确放弃修改权,赋予后续用户继续修改的权利。

开源代表着放弃作品传播权

接受某种开放源代码软件公共许可协议的用户,在自由地获取了依照该协议发布的软件作品,并进行了相关的修改完善之后,有依照该协议继续无条件向后续用户发布初始软件作品以及修改后软件作品的义务。



如若本文能帮您, 希望您能关注Python老吕的CSDN博客
您可以在本文进行评论,老吕将努力快速回复,和您近距离交流各种问题;
博主ID:Python老吕,希望大家点赞、评论、收藏。


最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 09:22:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 09:22:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 09:22:04       82 阅读
  4. Python语言-面向对象

    2024-03-11 09:22:04       91 阅读

热门阅读

  1. 微信小程序修改placeholder样式

    2024-03-11 09:22:04       41 阅读
  2. Node.js_会话控制

    2024-03-11 09:22:04       41 阅读
  3. 《BERT基础教程:Transformer大模型实战》读书笔记

    2024-03-11 09:22:04       37 阅读
  4. 流量分析-webshell管理工具

    2024-03-11 09:22:04       44 阅读
  5. go gin中间件关于 c.next()、c.abort()和return的使用

    2024-03-11 09:22:04       49 阅读
  6. Docker基础—CentOS中Docker安装部署

    2024-03-11 09:22:04       47 阅读
  7. neo4j

    2024-03-11 09:22:04       45 阅读
  8. RabbitMQ

    RabbitMQ

    2024-03-11 09:22:04      35 阅读
  9. Docker入门指南: 创新的容器化技术

    2024-03-11 09:22:04       40 阅读
  10. 主流开发语言与环境介绍

    2024-03-11 09:22:04       45 阅读
  11. elementPlus的坑

    2024-03-11 09:22:04       43 阅读