关于开放源代码的定义(1.7版)
开放源代码并不仅仅意味着对源代码的访问权。开放源代码软件的发布条款必须满足以下条件:
1. 自由地再发布
如果被发布的软件是由不同来源的程序组成的,许可证不得限制任何当事人或组织(party)销售或赠送作为被发布软件成分之一的开放源码软件。
许可证不得从此项销售中索取使用费或其它任何费用。(理由)
2. 源代码
程序必须包括源代码,必须允许以源代码方式发布、还必须允许以编译后的形式发布。如果产品的某 个部分没有与源代码一同发布,那么必须提供通行的、不需要支付合理范围之外的任何费用的手段以获得源代码---从网络上免费下载是一种可取的方式。源代码 必须是程序员对其进行修改的最佳形式。故意地使源代码变得含混晦涩是不允许的。也不允许给出预处理器或翻译器处理的中间结果。(理由)
3. 派生作品
许可证必须允许修改软件和派生软件,并且必须允许它们按照原软件的许可证的条款进行发布。(理由)
4. 作者的源代码的完整性
只有在许可证允许与源代码一同发布"补丁文件"(该"补丁文件"以在创建时对程序进行修改为目 的)时,许可证才能限制对修改形式的源代码的发布。许可证必须明确地允许发布由修改后的源代码生成的程序。许可证可以要求派生的作品采用不同的名称或不同 的版本号以区别于原来的软件。(理由)
5. 不得歧视任何个人或团体
许可证不得歧视任何个人或者由多人组成的团体。(理由)
6. 不得歧视任何应用领域(fields of endeavor)
许可证不得限制任何人把程序应用于任何领域。例如,不得规定程序不能应用于商业领域或基因研究领域。(理由)
7. 许可证的发布
与程序有关的权利必须适用于该程序的任何使用者,并且程序的使用者也不需要为了使用该程序而获得其它许可证的许可。(理由)
8. 许可证不能针对于一个产品
与程序有关的权利不能由该程序是否作为某个软件产品的一部分来决定。如果程序从那个发布中被抽出来,并且按照程序的许可证的条款进行使用和发布,那么得到该程序的当事人或组织将获得与得到原程序的使用者相同的权利。(理由)
9. 许可证不能影响其它软件
许可证不得向与采用它的软件一同发布的其它软件提出任何限制。例如,许可证不能坚持要求在同一媒体上发布的其它程序都是开放源代码软件。(理由)
Conformance
(本节不是开放源代码定义的一个部分)
我们认为本开放源代码定义涵盖了由绝大多数软件团体使用的术语"开放源代码"的最初含义和当前 含义。然而,该术语被广泛地应用,并且它的含义变得不精确了。OSI Certified标志是某个软件发布许可证是否服从开放源代码定义的OST认证方式。一般的术语"开放源代码"并不提供这种担保,但我们仍然鼓励使用" 开放源代码"这一术语以表明它符合"开放源代码定义"。关于OSI Certified标志的信息,以及已经通过了OSI Certified、符合"开放源代码定义"的许可证,请参见OSI Certified标志与纲要。
开放源代码定义之原理
给出开放源代码的定义的目的是:把我们所确信的、由软件开发团体所公认的"开放源代码"的含义 作为一组具体的准则写下来---该准则确保按照开放源代码许可证发布的软件可以得到与其它软件同样认真的评审、使软件可以不断地得到改良和遴选,从而提供 非开放软件所难以提供的可靠性与能力。
为了使此项工作持续发展,我们必须抵制人们为了短期利益而中止为软件开发做出贡献。这意味着,许可证的条款必须防止人们藏匿(lock up)源代码从而导致只有很少的人才能够阅读和修改它。
当软件的开发者按照由OSI认证的许可证发布他们的软件时,他们可以在软件中使用"OSI Certified"标志。这种认证标志告知用户,该软件所采用的许可证符合开放源代码定义。关于我们的认证标志的更多信息及其纲要,请参见OSI Certified标志与纲要。
1. 自由地再发布
通过强制要求许可证允许自由地再发布,我们抵制了任何为了获得少量短期销售金额而放弃长期效益的诱惑。如果我们不这样做,就会有很多压力迫使合作者放弃承诺。
2. 源代码
由于软件只有通过修改才能够得到改进,因此我们要求获得易于理解的源代码。因为我们的目的是使软件易于改进,我们也就希望软件易于修改。
3. 派生作品
仅仅提供可以阅读的源代码,对于实施认真的评审、对于软件的快速改良与遴选来说都是不够的。为了加快改进软件的速度,人们需要能够进行试验和对修改进行重新发布。
4. 作者的源代码的完整性
鼓励对软件进行各种改进是一件好事,但使用者有权知道谁应该对他们所使用的软件负责。软件的作者和维护者都有权知道需要他们提供支持的软件是什么,以维护他们的名誉。
因此,开放软件许可证必须保证可以容易地得到源代码,但可以要求源代码以原始源代码和一组补丁文件的形式发布。按照这种方式,就可以获得"非正式的"的修改而同时又可以轻易地把它们从原始源代码中区分出来。
5. 不得歧视任何个人或团体
为了从该进程中获得最大的收益,应该给尽可能多的个人和团体以同等资格对开放源代码软件做出贡献。为此我们禁止开放源代码许可证把任何人排除在这个进程之外。
6. 不得歧视任何应用领域(fields of endeavor)
该条款的主要目的是禁止许可证中含有使开放源代码软件无法在商业上使用的规定。我们需要商业用户参与我们的工作,而不让他们感到被排除在外。
7. 许可证的发布
本条款的目的是禁止通过非直接的手段,例如需要签署非公开的协定,使软件无法公开。
8. 许可证不能针对于一个产品
本条款用于预防其它许可证陷阱。
9. 许可证不能影响其它软件
开放源代码软件的发布者有权为他们自己的软件做出选择。
是的,GPL满足这条要求。按GPL发布的库只影响(contaminate)在运行时与之连接的软件,于仅仅和它一同发布的软件无关。
OSI Certified标志与纲要
开放源代码定义给出了开放源代码软件的基本性质。不幸的是,术语"开放源代码"遭到了滥用,并 且由于它的描述性,它不能作为一个商标(这是我们的首选)被保护。由于社团需要一种可靠的方式以确定一份软件是否真正是开放源代码软件。OSI为此目的而 注册了一个认证标志,OSI Certified。如果你在一份软件上看到了该标志,那么该软件就是必定是按照遵从开放源代码定义的许可证发布的,否则,该发行人就是在滥用该标志而且 违反了法律。
OSI Certified标志被用于软件而不是许可证:人们需要知道的是组成软件的包和它们的许可证是开放的源代码。此外,单独的许可证可能不是"货物",它由 美国专利和商标局注册认证标志。但是软件的作者显然必须能够在不询问我们的情况下(自我认证)、在适当的时刻确认他们的软件是按照OSI Certified的开放源代码方式发布的。所以认证按照两步进行:
* OSI提供一个满足开放软件源代码定义的开放源代码许可证表。这些许可证经过公众的详细审查并且被我们所批准。如果你有一个希望加入该列表的许可证,请与license-approval@opensource.org联系,它启动了获得许可证批准的程序。
* 如果你希望在你的软件上设置OSI Certified标志,你可以从列表中选择一个获得批准的许可证并根据它发布软件,并且适当地为软件做标志。
上面仅仅是一个概括。下面给出申请批准许可证和把OSI Certified标志应用在你的软件上的详细说明。
获得许可证的批准
1.通过电子邮件把许可证发送给license- approval@opensource.org。在电子邮件中说明你是否愿意以你的签名或者匿名地把许可证发送到许可证讨论列表中。(我们愿意考虑那些 根本不希望被发送的许可证,但由于社团的评审是批准的一个重要组成部分,我们将不得不把该许可证私下地发送给评审者:因此,对没有被发送到许可证讨论列表 中的许可证的批准,要花费更长的时间,并且通常要更多地与你交流。)
2. 如果我们发现你的许可证不符合开放源代码的定义,我们将与你一同解决这个问题。
3. 同时,我们将关注许可证论坛列表,并且与你一同工作以解决大家提出的任何未包含的问题。
4. 作为该过程的一部分,我们还将就许可证问题向外界寻求法律上的建议。
5. 一旦许可证符合了开放源代码定义,并且在许可证论坛上经过了充分的讨论或者其它的评审者没有提出我们认为重要的问题,我们将通知你,许可证已经被批准了,同时它被复制到我们的网站上,并且被加入以下的许可证列表。
使用该标志
你可以在这两种软件的发行上使用OSI Certified标志。该软件的发布包括并且达到了被批准的许可证列表中某个许可证的要求,或者该软件的源代码已经被明确地放到公众可以得到的位置。
为了表明你的软件是按照OSI Certified发布的,你必须不加任何修改地把下面两者之一,按照下述方式加入你的软件。完整的声明是:
This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.
较简短的声明是:
OSI Certified Open Source Software
你的软件的每种发布形式都有自身的要求:
* 如果软件以电子的形式发布(而不是实物(tangible)的形式),你必须把完整的声明放在README文件或者类似的、人类用户将首先阅读的文件中。
* 如果软件以实物形式发布,你必须完成以下所有可行的任务:
* 如果软件的发布包括印刷品,你必须把完整的声明加入该印刷品。
* 如果软件发布在可擦写的媒体(例如软磁盘)、CD-ROM、磁带等媒体上,它们在物理上可以添加能够被人的裸眼所阅读的简短声明,而不影响它们的功能,你必须把完整的声明或简短的声明标注在该媒体上。
* 如果软件的发布是一个的包,从而使其中的声明不能被阅读。你必须在包的外面放置完整的声明。
如果不能把以上任何条款用于发布,请与我们联系,我们将把你选择的位置加入本列表。
获得批准的许可证
以下许可证满足开放源代码的定义,并且已经被批准用于OSI Certified的开放源代码软件。没有给出批准日期的许可证是在1999年1月1日以前批准的。
* The GNU General Public License(GPL);
* The GNU Library(Lesser) General Public License(LGPL);
* The BSD License;
* The X Consortium License;
* The Artistic License;
* The Mozilla Public License(MPL);
* The QPL;
其它符合定义的许可证包括:libpng许可证、zlib许可证、IJG JPEG许可证和OPL(Open LDAP Public License)许可证。

转载于:https://www.cnblogs.com/fluxay/archive/2008/12/31/3649276.html

什么是开源(Open Source)?相关推荐

  1. 开源(Open Source)那些事儿 (一)

    景 最近有幸参与了王克伟的开源项目iToday,详情可以参考 我在Windows嵌入式系统上的一个绚丽用户界面开源项目(iToday).克伟的号召力超人,Q群一下子就爆满200人.如果扩容了,大家有兴 ...

  2. Vcastr 3.0 - flash video(flv) player (开源 Open Source)

    特点 使用as3.0重新写了播放器 播放器大小缩小,在20+k左右 可以通过xml对播放器设置 可以播放多个影片,并且有影片列表 可以设置循环播放,自动播放,是否直接开始下载,控制栏的颜色和模式 控制 ...

  3. 开源 (open source) 是什么?为什么要开源?

    从「开源」的早期讲起,其实和大多数人想象的不同,软件一开始并不是闭源的. 在上世纪 60 年代,IBM 等公司开发的软件都是自由分发的,同时也提供源代码.那个时候的商业模式更多是以硬件为主,软件作为硬 ...

  4. 南开大学教授:科研开源的行动倡议!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale推荐 作者:程明明,南开大学教授.计算机系主任 十多年前我开始读研的时候,开源 ...

  5. 10个免费开源的项目管理工具

    10个免费开源的项目管理工具 OpenProj OpenProj是一个款免费的.可替代MSProject的桌面项目管理工具,其使用方式应于Project相似,可以轻松上手.它拥有与MS Project ...

  6. gpl可以商用吗_一文看懂开源许可证,能不能商用再也不抓瞎

    在github中闲逛,宝藏多福利好.不过心里或许总有小忐忑,这么多开源项目,我的产品里能不能用呀! 其实想知道项目能不能用看下项目的开源许可证就清楚了(即使是非软件产品比如数据.媒体.资料等也可以通过 ...

  7. College student reflects on getting started in open source(二)

    My budding interest grew into a full-time obsession: creating artwork on my clunky, laggy laptop. 我萌 ...

  8. 十款开源在线视频播放器

    转http://blog.lixiphp.com/10-top-free-opensource-flv-player/ 10 Free Open Source embeddable Video Pla ...

  9. 无人机——开源飞控简介

    注:本文转载自   ExBot易科机器实验室 --开源飞控知多少      http://blog.exbot.net/archives/2154 在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单. ...

  10. Vcastr 3.0 开源的在线FLV播放器

    -------------------------------------- Vcastr 3.0 – flash video(flv) player (开源 Open Source) < ty ...

最新文章

  1. 整体思考自动化测试发展和价值回报
  2. eclipse中Tomcat v8.0 Server at localhost failed to start解决以及安装方法
  3. 添加全局函数$.extend和对象方法$.fn
  4. 自定义MyBatis
  5. mysql 查询条件
  6. 如何处理Maven build错误 Non-Resolvable parent POM
  7. URAL1519 Formula 1 —— 插头DP
  8. java的gc策略_Java的GC与内存分配策略
  9. BZOJ2801/洛谷P3544 [POI2012]BEZ-Minimalist Security(题目性质发掘+图的遍历+解不等式组)...
  10. linux常用shell命令之文件操作命令
  11. 高品味男人:分寸与克制
  12. thinkphp5每周学习总结 1026
  13. webmin的vsftp插件
  14. matlab数字信号处理程序,MATLAB数字信号处理 85个案例分析 全书程序
  15. echolife hg8245说明书_华为光猫HG8245设置说明书
  16. iPhone5充不进电
  17. 面试最后问你期望薪酬_我不能问你的薪水历史吗? 谢谢!
  18. opencv视频拼接 opencv视频拼接优化
  19. Ubuntu 机箱前置耳机没声音的问题(彻底解决)
  20. (爱斯维尔期刊:遇到问题已解决) 使用elsarticle-harv的style引文格式时报错 mand\Nat@force@numbers{}\NAT@force@numbers

热门文章

  1. SSH框架总结(框架分析+环境搭建+实例源码下载
  2. 大年初一连夜带娃改bug:CTO把代码写成这鬼样子,被害惨了!
  3. 面试遇Spark,别怂!
  4. 网页版 Nginx 配置文件生成器发布,在线一健生成神器!不用愁了!
  5. android 混淆打包教程,Android 混淆打包
  6. 用python编程、假设一年期定期利率_《Python程序设计》题库.pdf
  7. 7种JVM垃圾收集器特点,优劣势、及使用场景
  8. 2018-7-22-Python全栈开发day30-socket原理与粘包-part1-TCP服务
  9. SQL Server 复制:事务发布
  10. 【BZOJ 2306】 2306: [Ctsc2011]幸福路径 (倍增floyd)