Lecture-V-开源授权协议 杜朴风&张亚平&许光全 计算机学院&软件学院 开源技术及应用 Lecture-V-开源授权协议 杜朴风&张亚平&许光全 计算机学院&软件学院
内容 开源授权协议简介及比较 使用各种开源授权协议的软件举例 如何应用GNU GPL到自己的软件
开源软件 软件开发模式:概括地说,开放源码是一种协作。更具体地说,它是软件项目上的全球范围的公共协作。 质量保证和权威许可:开放源码通过支持源代码的独立同业互查(independent peer review)和快速发展演变提高了软件的可靠性和质量。要通过 OSI 认证,软件必须在获得许可证的情况下发布,该许可证可保证免费读取、重新发布、修改和使用该软件的权利。----Open Source Initiative(OSI) 版权(copyright):开放源码软件通常是有版权的.它的许可证可能包含这样一些限制:着意地保护它的开放源码状态,著者身份的公告,或者开发的控制。 http://www.enet.com.cn/article/2007/0803/A20070803756349.shtml 实际上,开源软件同时涉及源码本身和开发过程,涵盖了三个方面的意义:免费分发的源代码、模块化的体系和集市式的开发--在这种开发方式中,任何地方的任何人都可以参与最终产品的制造,三个方面互相之间有密切的联系,集市式的开发过程给开源软件以强大的改错能力,因为它将程序中的错误公开给了数量巨大的观众,他们都是潜在的改错者。另一方面,任何人都可以复用和发行开源软件的代码这一事实又支持了公众利益,因为创新的观念被整个集市所共享。另外,"open source"这一术语还被延伸到其他智力团体中,指那些可通过公开手段获得的智力资源,比如报纸、教学课件等 什么是开放源码技术? 概括地说,开放源码是一种协作。更具体地说,它是软件项目上的公共协作。IBM 在开放源码方面作出了巨大贡献,奉献了 120 多个项目,其中包括耗资超过 10 亿的 Linux® 开发。根据开放源码促进会(Open Source Initiative,OSI)的定义,可将开放源码定义为:“开放源码通过支持源代码的独立同业互查(independent peer review)和快速发展演变提高了软件的可靠性和质量。要通过 OSI 认证,软件必须在获得许可证的情况下发布,该许可证可保证免费读取、重新发布、修改和使用该软件的权利。” 开放源码还经常应用于个人、组织和公司的民众运动,寻求将这类软件融入主流应用的方法。根据 开放源码促进会 的定义,开放源码由 10 点组成,下面对这 10 点进行了复述。开放源码并不只意味着访问源代码。开放源码软件的发布(distribution)条款必须遵从以下标准: 1. 免费重新发布 当软件是几个不同来源的程序集成后的软件发行版本中的其中一个组件时,许可证不能限制任何团体销售或分发该软件,并且不能向这样的销售或分发收取许可费和其他费用。 2. 源代码 程序必须包含源代码,并且必须允许以源代码或已编译的形式发布。如程序在发布时未带源代码,则必须以一种非常公开的方式,在不超过合理重造成本的情况下,让人们获得源代码,例如可以在不收取费用的情况下,放在网络上供人们下载。源代码无疑是编程人员最容易修改程序的形式。不允许故意混乱源代码。也不允许使用中间形式,比如预处理器或转换器的输出。 3. 衍生产品 许可证必须允许修改原产品和衍生产品,并且必须允许在与原始软件相同的授权情况下发布修改过的产品。 4. 作者的源代码的完整性 许可证可以禁止他人以修改过的形式发布源代码,只在该许可证基于修改程序的目的时,才允许随源代码发布 “补丁文件”。该许可证必须明确允许发布根据修改过的源代码构建的软件。许可证可能要求衍生产品必须附加不同于原始软件的名称或版本号。 5. 不得歧视任何人或团体 许可证不得歧视任何人或任何团体。 6. 不得歧视程序在任何领域内的使用 许可证不得禁止任何人在特定领域内使用某一程序。例如,不得禁止程序在商业上的应用,或者在基因研究上的使用。 7. 许可证的发布 附加在程序上的权利必须应用于那些使用重新发布的程序的人,无需通过其他人额外加以授权使用。 8. 许可证不得专属于特定产品 附属于程序的权利不得仅限于作为特定软件发行版一部分的程序。如果程序衍生自该发行版并以获得该程序的授权的名义被使用或发布,则使用重新发布的该程序的其他所有人应该享有原始软件发行版本中所授予的那些权利。 9. 许可证不得对其他软件加以限制 许可证不得对其他随已许可的软件一起发布的软件附加任何限制。例如,不得规定在相同媒体上发布的其他所有程序接受该许可证的限制。 10. 许可证必须是技术中立的 任何许可证规定都不可以基于任何单独某项技术或界面风格。 请参阅 developerWorks 文章 “开放源码许可,第 1 部分: 意图” 和 “开放源码许可,第 2 部分: 学术许可与互惠许可”,以获得额外的信息。 开放源码技术为什么那么重要? 开放源码软件最初吸引大多数计算机用户注意的是它的价格。开发源码程序通常是由作者捐献的。不过,零支付成本不是开放源码软件的本质。 有一些实际的、辨证性的讨论有助于您理解开放源码开发: 开放源码程序允许开发人员查看代码,看看它是否可以改良,然后用于用户自己的程序中。来自世界各地的贡献者可以贡献和提供翻译、文档、bug 报告和其他形式的帮助。一些想法的免费交换加速了软件的发展。 根据 GNU Manifesto,人们有权利获得计算机程序的人类可读形式。 什么是 FOSS? FOSS 指 “免费和开放源码软件”(Free and Open Source Software)。该术语用于那些满足 free 或 open source 中的定义的软件(当不需要对这两个定义进行区分时)。 开放源码与 “免费啤酒” 和 “自由言论” 有何关系? 英语单词 "free" 在其意思表达上有所取巧,既有自由 的含义,也有免费 的意思,即获取者不需花费任何成本的意思。当开放源码的支持者登上临时演讲台时,他们通常必须对其评论发表一个序言,让听众知道演讲者所指的 "free" 是 “自由言论” 中的自由,还是 “免费啤酒” 中的免费,这是一个策略问题。因为任何大学生都可以作报告,所以一些人必须承担酿制啤酒(或软件)的成本,而另一些人则免费享用啤酒(或软件)。 如何入门开放源码? 开始开发开放源码软件的决定是一个政治决定和许可决定,至少是一个技术上的决定。请参阅 受支持的开放源码许可证 的 OSI 列表,使您的选择满足您的需求和项目计划。请参阅 developerWorks 文章 “开放源码许可,第 1 部分: 意图” 和 “开放源码许可,第 2 部分: 学术许可与互惠许可”,以获得额外的信息。如果发现现有许可证中的一些条款让您感到迷惑,或者遇到一些问题,那么您可以咨询知识产权方面的专业律师。 在 2005 年初,开放源码许可证并不像社区所预言的那样杰出,尽管不清楚该预言是否更多的只是一种希望,而非一种预期。 什么是 LAMP? LAMP 代表着 Linux、Apache、MySQL 和 PHP。不过,根据您所谈论的对象,P 可能代表着 Perl 或 Python。通常,P 被假定为 PHP。LAMP 还具有更深远的意义。LAMP 代表了创建基于服务器的应用程序的非专有的灵活方式。每个由该术语组成的程序都可以用一个最符合应用程序需要的代用品来替代。每个组件都可以单独升级,尽管这通常是非常小心地、有计划地进行的。最棒的是,LAMP 中的所有程序都是免费的,或者说既是免费的也是自由的。 developerWorks 提供了一些极好的关于 Linux、Apache 文章与 Apache 教程、MySQL、PHP、Python 文章与Python 教程 和 Perl 文章与 Perl 文章。 开放源码是用哪种语言编写的? 所有语言都可以用来编写开放源码。开放源码背后的技术不是开放源码最重要的元素。最重要的元素是作者的决定,或者是将软件发布为开放源码并使用许多开放源码许可证之一的作者。 开放源码软件是合法的吗? 是的,几乎每个使用电子邮件或者在网上冲浪的人都是开放源码软件的用户。大多数电子邮件软件在网上传输期间都是通过开放源码服务器传递的。而多数 Web 服务器都依赖于开放源码软件。Google 就是基于开放源码。正如 OSI 所指出的那样,互联网的运行动力(包括邮件传输、Web 和 FTP 服务器)实际上全都基于开放源码。 开放源码软件不是 "warez",warez 是不需要任何复制所有者权限或适当的许可证就可以发布的软件。
开源与自由软件共同点:开源软件和自由软件一样,具备可以免费使用和源代码公开的主要特征,所以在不刻意追究微小差异的情况下,我们可以认为开源软件和自由软件是两个等价的概念。 二者关系:有一部分的开源软件是自由软件,但是几乎所有的自由软件都是开源的。 开源软件的意义:尤其是对那些具有垄断性质的软件来说,开源软件更显其深远意义。
是否为免费软件 商业服务支持:开源软件免费使用,并不意味着完全免费,不等于该软件的支持服务也一定免费。使用开源软件往往需要一定的技术支持服务为前提,而不是拿来就用。使用开源软件,需要购买相关的技术支持服务,而且要购买商业化的“支持服务”。 费用:对比商业软件来说,费用要少得多。 The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.(OSI)
开源软件的运营模式 第一种,软件完全免费,后续服务收费。Red Hat Linux采用的模式。但是,这种模式并不是每一家开源企业都能使用的,也只有行业领先者才有这样的资本。 第二种,软件免费,没有售后服务。在软件市场成熟后,靠出售专利谋生。这种方式的代表是Foxmail。 第三种,应用服务提供模式。在这种模式下,软件和服务都是免费,企业按时间交纳使用费。
最主要的运营模式也就是这几种,其他种类的模式其实都是这几种模式的演化和变种。从中我们可以看出,开源软件本身的确是免费的,但开发者最初的意图其实是为了通过后续服务或出售专利等方式获利。
开源软件协议介绍 共同特点:要求保障原作者的知识产权,在延伸的代码中遵守相同的协议 GPL(GNU General Public License) BSD Apache Licence LGPL MIT… 共同特点:要求保障原作者的知识产权,在延伸的代码中遵守相同的协议
开源组织与网站 开源软件促进会,http://www.opensource.org/ (OSI) Apache,http://www.apache.org/ 中国Apache,http://www.apache.org.cn/ Sakai基金会,http://sakaiproject.org/ (online learning by Oxford) Moodle社区,http://moodle.org/ (Australian company Moodle HQ sponsored Learning Environment,GPL) Mozilla基金会,http://www.mozilla.org/ Open Solaris,https://solaris.java.net/ (Oracle OpenStack-CloudStack) Java开源,http://www.open-open.com/ PHP开源,http://www.php-open.com/ 开源项目开发,http://sourceforge.net/ ……
开源组织--OSI 概况: The Open Source Initiative (OSI) is a California public benefit corporation, with 501(c)3 tax-exempt status, founded in 1998. 网址: http://opensource.org 使命: OSI活跃于开源社区的建立和教育。OSI 董事会频繁穿梭于世界各地参加开源会议和活动,与开源开发者和使用者碰面,与公共和私人机构的高官讨论有关开源技术、许可证和开发模型 等方面,意在寻求经济和策略方面的利益所在。 Stewards 干事,乘务员, 开源促进会(Open Source Initiative)会长Michael Tiemann是开源软件真正的开路先锋。早在几十年前他就已经第一次做出了对开源的重大贡献,利用GNU C++编写出本地源代码C++编译器和调试器。早期工作的成功使Michael创造出最主要的开源技术和第一个开源的商业运营模式。1989年Michael凭借自身卓越的技术和企业家的热情创造了第一家为开源软件公司提供商业支持的公司,Cygnus Solutions公司。 Cygnus公司工作的十年期间,Michael提出了许多从总裁到黑客的各类问题的解决方案,最终帮助公司从一家初出茅庐的小公司发展到一个人人敬佩的开源领导者。Michael是多个组织的理事会成员,包括“开源促进会(Open Source Initiative)”和“GNOME基金会(GNOME Foundation)”。Michael还为一些以促进软件和编程人员自由为主要目的机构提供财务上的支持,如:“自由软件基金会(Free Software Foundation)”和“电子前沿基金会(Electronic Frontier Foundation)”。 501(c)是美国国内税收法(Internal Revenue Code, IRC)中的一项条款(美国国内税收法, § 501(c)),本条款列出了26种享受联邦所得税 (federal Income tax)减免的非营利组织。具体的减免税收条件在该法案的503-505条中有规定。许多州参考了联邦501(c)条款中对享受税收减免非营利组织的定义。
OSI的十项条款 OSI 十項條件: OSI不仅是源代码的流通,也是关于其散步的规定,主要目的便是期望使社群的精神能夠發揮,並得到保障。 1. 允許自由散佈 2. 包含程式原始碼的自由流通 3. 授權條款應允許對原作品的修改以及衍生作品的產生 4. 需保持原作者原始碼的一致性(Integrity) 5. 授權條款對任何個人或群體均需一視同仁,不得有差別待遇 6. 授權條款不得對特定領域或活動的應用有差別限制 7. 授權條款對於衍生作品自動適用 8. 授權條款不得附屬於其它產品之下 9. 授權條款不得對隨同散佈的其它軟體做出限制(例如規定需同為開放原始碼軟體) 10. 散佈管道必須保持技術中立性,不限制特定方式或平台才能取得 OSI不仅是源代码的流通,也是关于其散步的规定,主要目的便是期望使社群的精神能夠發揮,並得到保障。 在這些前提條件下,發展出各種不同的授權條款,OSI本身即認定有超過四十種以上的授權條款符合其對於開放原始碼的定義(可參見http://www.opensource.org/licenses/)。
Apache软件基金会 Apache软件基金会(Apache Software Foundation,简称为ASF),成立于1999年,是专门为运作一个开源软件项目Apache 提供支持的非盈利性组织。在它所支持的 Apache 项目与子项目中,所发行的软件产品都遵循 Apache许可证(Apache License)。 现任理事会 Shane Curcuru(ASF理事,副主席 任职IBM), Doug Cutting(Hadoop之父), Bertrand Delacretaz(涉及的项目Apache Cocoon, FOP, Solr, Sling, Tika和ESME ) Roy T. Fielding(HTTP规范的重要作者之一), Jim Jagielski(主席), Sam Ruby(W3C的HTML组织联合创始人), Noirin Shirley(ASF唯一女性理事,负责会议的副主席。她任职Google), Greg Stein(曾担任ASF主席) Henri Yandell(Commons,Jakarta,Tomcat等项目维护者) http://wiki.ubuntu.org.cn/Apache%E8%BD%AF%E4%BB%B6%E5%9F%BA%E9%87%91%E4%BC%9A
Mozilla基金会 简介:Mozilla基金会(缩写MF或MoFo),是为支持和领导开源的Mozilla项目而设立的一个非营利组织。该组织制定管理开发政策,经营关键基础组织并管理商标及其他知识产权。它拥有一个称作Mozilla公司的应课税子公司,雇佣了一些Mozilla开发人员并协调Mozilla Firefox网页浏览器以及Mozilla Thunderbird电子邮件客户端的发行版。 目标:Mozilla基金会把自己描述为“一个致力于在互联网领域提供多样化选择和创新的公益组织”。
IT商业公司与开源软件--IBM IBM 在开放源码方面作出了巨大贡献,奉献了 120 多个项目,500多项专利,其中包括耗资超过 10 亿的 Linux® 开发。 开源产品 : OS:Linux,软件:Eclipse,数据库:DB2,Mysql,WEB服务器:Apache系列和WebSphere HTML5网页编辑工具Maqetta,支持Google Chrome、Mozilla Firefox 3.5+(推荐Firefox 4)和Mac Safari 5,为用户体验设计师提供了一个可见即可得的可视化编辑环境。 开源的翻译平台软件(TM)OpenTM2
IT商业公司与开源软件--SUN Sun在计算机领域的贡献: 1.TCP/IP实现:Sun的创始人之一和技术天才Bill Joy 2.分页虚拟存储:Bill Joy 3.NFS网络文件系统:Sun公司早在1983年左右就推出了NFS文件系统,实现了计算机的网络共享 4.ZFS首个128位文件系统:有了它,文件系统发生了革命性的改变,号称每个操作系统都想使用的文件系统,也被赞美为最后一个文件系统 5.DTRACE:探测内核活动的利器 6.VI编辑器:Unix和Linux程序员的最常用工具 7.JAVA:几十亿部手机,互联网都在用它 8.酷线程:CPU进入多线程、低能耗的绿色时代 主要产品:OpenSolaris, Sparc CPU ,MySQL ,OpenOffice ,Java ,Netbean, Glassfish,基于ZFS的OpenStorage ,xVM Virtual Box,Sun Ray 开源精神: Sun毫无保留的将自己的技术开源,供大家学习和研究。经营不善,被oracle收购 Sun在计算机领域的创新与贡献: 1.TCP/IP,Sun的创始人之一和技术天才Bill Joy完成了对TCP/IP协议的实现,对计算机和互联网的发展起到了巨大的推动作用。 2.分页虚拟存储(同样是Bill Joy首先实现了现代操作系统的分页存储) 3.NFS网络文件系统(Sun公司早在1983年左右就推出了NFS文件系统,实现了计算机的网络共享) 4.ZFS首个128位文件系统(有了它,文件系统发生了革命性的改变,号称每个操作系统都想使用的文件系统,也被赞美为最后一个文件系统) 5.DTRACE(探测内核活动的利器) 6.VI编辑器(Unix和Linux程序员的最常用工具) 7.JAVA(几十亿部手机,互联网都在用它) 8.酷线程(CPU进入多线程,低能耗的绿色时代) SUN目前的产品也非常齐全: OpenSolaris, Sparc CPU MySQL OpenOffice Java Netbean Glassfish 基于ZFS的OpenStorage xVM Virtual Box Sun Ray 从上面,我们可以看出,Sun公司的技术的确不是吹的,更重要的是,Sun毫无保留的将自己的技术开源,供大家学习和研究。但是,Sun的生意却做得不怎么好,经常亏损,甚至濒临倒闭和出卖的边缘。一方面,我们希望它能站起来,开源的世界不能没有Sun。另一方面,我想即使Sun倒闭了,但是它曾经发明的技术,将会继续得到使用,继续得到发展。 所以,参加Sun的开源社区,拥抱Sun提供的创新技术和开源精神,是一件很有意义的事情。
IT商业公司与开源软件--Microsoft 微软加入OSI。如果你不能击败对手,那就和他结盟,微软的曲线救国策略再一次得到了印证。2007年10月,软件巨头正式加入了Open Source Initiative(OSI)。在反复审视了微软的公共许可(Ms-PL)和互惠许可之后(Ms-RL),开源组织还是向微软张开了双臂。 CodePlex:微软开源行动CodePlex(http://www.codeplex.com/)CodePlex是微软的开源项目网站。你可以使用CodePlex创建新项目,与全球共享。也可以加入别人的项目,或者使用其上的软件并提供反馈。
MIT开放课程 美国麻省理工学院(MIT)于2001年4月宣布,它将在互联网上逐步公开所有本科生和研究生课程材料,供全世界求知者免费使用,这就是美国麻省理工学院“开放式课程网页计划”(MIT Open-Course Ware,以下简称MIT OCW, http://ocw.mit.edu )。 此举在世界上掀起了一股知识共享的大潮。美国以及越来越多其他国家的大学或机构也都纷纷加入到了这场知识共享运动中。据不完全统计,至少有38个大学或其他机构已经加入MIT OCW大学联盟。
Coursera 概况: Coursera( https://www.coursera.org ) 是一个教育平台,它与全世界最顶尖的大学和机构合作,提供任何人可学习的 免费在线课程。 2012年4月成立。 创始人: Daphne Koller(达夫尼·考勒)是 Coursera 主席,美国国家工程学院院士,负责维护和发展 Coursera 与大学合作。她还在斯坦福大学计算机工程系担任 Rajeev Motwani 教授,在 奥斯瓦尔德维拉德大学担任本科教育研究员。 吴恩达(1976-,英文名:Andrew Ng),华裔美国人,斯坦福大学计算机科学系和电子工程系副教授,人工智能实验室主任。吴恩达是人工智能和机器学习领域国际上最权威的学者之一。吴恩达也是在线教育平台Coursera的联合创始人(with Daphne Koller)。 2014年5月16日,吴恩达加入百度,担任百度公司首席科学家,负责百度研究院的领导工作,尤其是Baidu Brain计划。 吴恩达最知名的是,所开发的人工神经网络通过观看一周YouTube视频,自主学会识别哪些是关于猫的视频。 2007年,吴恩达获得斯隆奖(Sloan Fellowship)。 2008年,吴恩达入选“the MIT Technology Review TR35”,即《麻省理工科技创业》杂志评选出的科技创新35俊杰,入选者是35岁以下的35个世界上最顶级的创新者之一。[4] “计算机和思想奖”的获得者。2009年,Dawn Song 2013年,吴恩达入选《时代》杂志年度全球最有影响力100人,成为16位科技界代表之一。
自由软件的授权方式 GPL:是通用公共许可证(General Public License)的简称,由美国自由软件基金会(Free Software Foundation,简称FSF)所制定,对于软件的执行、复制、散布、修改等,规定相当明确。 LGPL:较宽松的通用公共许可证(Lesser General Public License,简称LGPL)是以GPL为基础所发展出来的授权条款,对于软件的执行、复制、散布、修改等规定,不如GPL严格。 BSD(Berkeley System Distribution):由加洲大学柏克莱分校所发展出来的一种授权条款,主要目的是为了散布改良过的Unix版本而发展出来的授权方式,此条款的特点是规定极为精简,且并没有对程序与开放程序代码的散布使用做任何的限制。 MPL(Mozilla Public License,简称MPL):是由美国在线的网景通讯子公司所发展出来的授权条款,后来所有权被转让给Mozilla基金会,此授权条款较特别的地方是,MPL允许多重授权模式。
授权方式的比较
应用GNU GPL 确定自己的软件符合开源软件的基本要求 把GPL的文本版本包含在软件发布包中,并提供源代码。 具体要求需要参考http://www.gnu.org/licenses/gpl-howto.html 把GPL的文本版本包含在软件发布包中,并提供源代码。 在所有GPL发布的代码文件中包含相应的说明
The copying permission statement should come right after the copyright notices. For a one-file program, the statement (for the GPL) should look like this: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
GPL和LGPL LGPL(Lesser GPL/ Library GPL)通常用来发布库。 GPL限制了库只能用于开源软件 各有利弊
THANKS