前言 ◆修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于 GPL许可证。 ◆衍生自由:允许用户深度定制化软件后,为软件注册自己的新商标,再发行衍 生品的自由。 ◆收费自由:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是 可以免费获得的。因此,一般来讲,开源软件都是通过为用户提供有偿服务的 形式来营利的。 >较宽松通用公共许可证(Lesser GPL,LGPL):一个主要为保护类库权益而设计的 GPL开源协议。与标准GPL许可证相比,LGPL允许商业软件以类库引用的方式使 用开源代码,而不用将其产品整体开源,因此普遍被商业软件用来引用类库代码。简 单来说,就是针对使用了基于LGPL许可证的开源代码,在涉及这部分代码,以及修 改过或者衍生出来的代码时,都必须继续采用LGPL协议,除此以外的其他代码则不 强制要求。 Free as in Freedom 如果您觉得LGPL许可证更多地是关注对类库文件的保护,而不是软件整体,那就对 了。因为该许可证最早的名字是Library GPL,即GPL类库开源许可证,保护的对象 有glibe、GTK widget toolkit等类库文件。 >伯克利软件发布版(Berkeley Software Distribution,BSD)许可证:另一款被广泛使 用的开源软件许可协议。相较于GPL许可证,BSD更加宽松,适合于商业用途。用 户可以使用、修改和重新发布遵循该许可证的软件,并且可以将软件作为商业软件发 布和销售,前提是需要满足下面3个条件。 ◆如果再发布的软件中包含开源代码,则源代码必须继续遵循BSD许可证。 ◆如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原 始代码遵循了BSD许可证。 ◆不允许用原始软件的名字、作者名字或机构名称进行市场推广
前 言 16 ⧫ 允许开发人员增加或删除软件的功能,但软件修改后必须依然基于 GPL 许可证。 ⧫ 允许用户深度定制化软件后,为软件注册自己的新商标,再发行衍 生品的自由。 ⧫ 允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是 可以免费获得的。因此,一般来讲,开源软件都是通过为用户提供有偿服务的 形式来营利的。 ➢ Lesser GPL, LGPL :一个主要为保护类库权益而设计的 GPL 开源协议。与标准 GPL 许可证相比,LGPL 允许商业软件以类库引用的方式使 用开源代码,而不用将其产品整体开源,因此普遍被商业软件用来引用类库代码。简 单来说,就是针对使用了基于 LGPL 许可证的开源代码,在涉及这部分代码,以及修 改过或者衍生出来的代码时,都必须继续采用 LGPL 协议,除此以外的其他代码则不 强制要求。 如果您觉得 LGPL 许可证更多地是关注对类库文件的保护,而不是软件整体,那就对 了。因为该许可证最早的名字是 Library GPL,即 GPL 类库开源许可证,保护的对象 有 glibc、GTK widget toolkit 等类库文件。 ➢ Berkeley Software Distribution, BSD :另一款被广泛使 用的开源软件许可协议。相较于 GPL 许可证,BSD 更加宽松,适合于商业用途。用 户可以使用、修改和重新发布遵循该许可证的软件,并且可以将软件作为商业软件发 布和销售,前提是需要满足下面 3 个条件。 ⧫ 如果再发布的软件中包含开源代码,则源代码必须继续遵循 BSD 许可证。 ⧫ 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原 始代码遵循了 BSD 许可证。 ⧫ 不允许用原始软件的名字、作者名字或机构名称进行市场推广
>Apache许可证(Apache License):顾名思义,是由Apache软件基金会负责发布和 维护的开源许可协议。作为当今世界上最大的开源基金会,Apache不仅因此协议 而出名,还因市场占有率第一的Wb服务器软件而享誉行业。目前使用最广泛的 在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可证研发的。 程序开发人员在开发遵循该许可证的软件时, 要严格遵守下面4个条件。 Apache ◆该软件及其衍生品必须继续使用Apache许可证。 如果修改了程序源代码,需要在文档中进行声明 ◆ 若软件是基于他人的源代码编写而成的,则需要保留原始代码的许可证、商标、 专利声明及原作者声明的其他内容信息。 ◆ 如果再发布的软件中有声明文件,则需在此文件中注明基于了Apache许可证及 其他许可证。 >MT许可证(Massachusetts Institute of Technology License):源于麻省理工学院 又称为X11协议。MT许可证是目前限制最少的开源许可证之一,用户可以使用、 复制、 修改、再发布软件,而且只要在修改后的软件源代码中保留原作者的许可信息 即可,因此普遍被商业软件(例如jQuery与Node.js)所使用。也就是说,MT许可 证宽松到一个新境界,即用户只要在代码中声明了MT许可证和版权信息,就可以 去做任何事情,而无须承担任何责任。 Mozilla公共许可证(Mozilla Public License,MPL):于1998年初由Netscape公司 的Mozilla小组设计,原因是它们认为GPL和BSD许可证不能很好地解决开发人员 对源代码的需求和收益之间的平衡关系,因此便将这两个协议进行融合,形成了MPL 2012年年初,Mozilla基金会发布了MPL2.0版本(目前为止也是最新的版本),后 续被用在Firefox、Thunderbird等诸多产品上。最新版的MPL公共许可证有以下特点。 17
17 ➢ Apache Apache License :顾名思义,是由 Apache 软件基金会负责发布和 维护的开源许可协议。作为当今世界上最大的开源基金会,Apache 不仅因此协议 而出名,还因市场占有率第一的 Web 服务器软件而享誉行业。目前使用最广泛的 Apache 许可证是 2004 年发行的 2.0 版本,它在为开发人员提供版权及专利许可的同 时,还允许用户拥有修改代码及再发布的自由。该许可证非常适合用于商业软件,现 在热门的 Hadoop、Apache HTTP Server、MongoDB 等项目都是基于该许可证研发的。 程序开发人员在开发遵循该许可证的软件时,要严格遵守下面 4 个条件。 ⧫ 该软件及其衍生品必须继续使用 Apache 许可证。 ⧫ 如果修改了程序源代码,需要在文档中进行声明。 ⧫ 若软件是基于他人的源代码编写而成的,则需要保留原始代码的许可证、商标、 专利声明及原作者声明的其他内容信息。 ⧫ 如果再发布的软件中有声明文件,则需在此文件中注明基于了 Apache 许可证及 其他许可证。 ➢ MIT Massachusetts Institute of Technology License :源于麻省理工学院, 又称为 X11 协议。MIT 许可证是目前限制最少的开源许可证之一,用户可以使用、 复制、修改、再发布软件,而且只要在修改后的软件源代码中保留原作者的许可信息 即可,因此普遍被商业软件(例如 jQuery 与 Node.js)所使用。也就是说,MIT 许可 证宽松到一个新境界,即用户只要在代码中声明了 MIT 许可证和版权信息,就可以 去做任何事情,而无须承担任何责任。 ➢ Mozilla Mozilla Public License MPL :于 1998 年初由 Netscape 公司 的 Mozilla 小组设计,原因是它们认为 GPL 和 BSD 许可证不能很好地解决开发人员 对源代码的需求和收益之间的平衡关系,因此便将这两个协议进行融合,形成了 MPL。 2012 年年初,Mozilla 基金会发布了 MPL 2.0 版本(目前为止也是最新的版本),后 续被用在 Firefox、Thunderbird 等诸多产品上。最新版的 MPL 公共许可证有以下特点
前言 mozilla FOUNDATION ◆在使用基于MPL许可证的源代码时,后续只需要继续开源这部分特定代码即 可,新研发的软件不用完全被该许可证控制。 ◆开发人员可以将基于MPL、GPL、BSD等多种许可证的代码一一起混合使用。 ◆开发人员在发布新软件时,必须附带一个专门用于说明该程序的文件,内容要 有原始代码的修改时间和修政方式。 估计大家在看完上面琳琅满目的许可证后.,会心生怨念:“这不都差不多吗?到底该选 哪个呢?”写到这里时,刘遄老师也是一脸无助:“到底该怎么让大家进行选择呢?”搜肠 刮肚之际突然眼前一亮,乌克兰程序员Paul Bagwell创作的一幅流程图正好对刚才讲过的这6 款开源许可证进行了汇总归纳,具体如下图所示。 开源许可证的选择流程图 众所周知,绝大部分的开源软件在安装完毕之后即可使用,很难在软件界面中找到相关 的收费信息。所以经常会有同学提问:“刘老师,开源社区的程序员总要吃饭的呀,他们是 靠什么营利呢?”针对这个问题,网络上好像只有两种声音: >情怀一开源社区的程序员觉悟好,本领强,写代码纯粹是为了兴趣以及造福社会 >服务一先让用户把软件安装上,等用好、用习惯之后,再通过提供一些维护服务来 营利。 这两种解释都各有道理,但是不够全面。读者也不要把开源软件和商业软件完全对立起 来,因为好的项目也需要好的运营模式。就开源软件来讲,营利模式具体包括以下5种。 >多条产品线:如MySQL数据库便有个人版和企业版两个版本一个人版完全免费, 起到了很好的推广作用;企业版则通过销售授权许可来营利
前 言 18 ⧫ 在使用基于 MPL 许可证的源代码时,后续只需要继续开源这部分特定代码即 可,新研发的软件不用完全被该许可证控制。 ⧫ 开发人员可以将基于 MPL、GPL、BSD 等多种许可证的代码一起混合使用。 ⧫ 开发人员在发布新软件时,必须附带一个专门用于说明该程序的文件,内容要 有原始代码的修改时间和修改方式。 估计大家在看完上面琳琅满目的许可证后,会心生怨念:“这不都差不多吗?到底该选 哪个呢?”写到这里时,刘遄老师也是一脸无助:“到底该怎么让大家进行选择呢?”搜肠 刮肚之际突然眼前一亮,乌克兰程序员 Paul Bagwell 创作的一幅流程图正好对刚才讲过的这 6 款开源许可证进行了汇总归纳,具体如下图所示。 开源许可证的选择流程图 众所周知,绝大部分的开源软件在安装完毕之后即可使用,很难在软件界面中找到相关 的收费信息。所以经常会有同学提问:“刘老师,开源社区的程序员总要吃饭的呀,他们是 靠什么营利呢?”针对这个问题,网络上好像只有两种声音: ➢ —开源社区的程序员觉悟好,本领强,写代码纯粹是为了兴趣以及造福社会; ➢ —先让用户把软件安装上,等用好、用习惯之后,再通过提供一些维护服务来 营利。 这两种解释都各有道理,但是不够全面。读者也不要把开源软件和商业软件完全对立起 来,因为好的项目也需要好的运营模式。就开源软件来讲,营利模式具体包括以下 5 种。 ➢ :如 MySQL 数据库便有个人版和企业版两个版本—个人版完全免费, 起到了很好的推广作用;企业版则通过销售授权许可来营利
>技术服务型:JBoss应用服务器便是典型代表,BOss软件可自由免费使用.软件提供 方通过技术文档、培训课程以及定制开发服务来营利。 ,软硬件结合:比如BM公司在出售服务器时,一般会为用户捆绑销售AIX或Liux 系统来确保硬件设施的营利。 >技术出版物:比如ORly既是一家开源公司,也是一家出版商,诸多优秀图书都是 由OReilly出版的。 >品牌和口碑:微软公司曾多次表示支持开源社区。大家对此可能会感到意外,但这是 真的!Visual Studio Code、PowerShell、TypeScript等软件均已开源。大家是不是瞬间 就对微软公司好感倍增了呢?买一份正版系统表示支持也就是人之常情了。 为什么学习Linux系统 在讲课时,我经常会问同学们一个问题:“为什么学习Lx系统?”很多学生会脱口 而出:“因为Liux系统是开源的,所以要去学习。”其实这个想法是完全错误的!开源的 操作系统少说有100个,开源的软件至少也有10万个,为什么不去逐个学习?所以上面谈到 的开源特性只是一部分优势,并不足以成为您付出精力去务力学习的理由。 对普酒用户来进,开源共享精神仅且备锦上添花的效果,我们更加看重的是,Lux系 统是一款优秀的软件产品,具备类似UNX系统的程序界面 并继承了其良好的稳定性。而 且,开源社区也在源源不晰断地提供高品质代码以及丰富的第三方软件支持,能够在高可用性、 高性能等方面较好地满足工作需求」 当然,大多数读者应该都是从微软的Windows系统开始了解计算机和网络的,因此背定 会有这样的想法“Windows系统很好用啊,而且也满足日常工作需求呀”。客观来讲,Windows 系统确实很优秀,但是在安全性、高可用性、高性能方面却难以让人满意。您应该见过下面 这张图片。虽然蓝屏不是经常可以看到的,但若这样的“事故”发生在生产环境中则是绝对 不敢想象的。 :( 大家可以讨论一下,为什么要在需要长期稳定运行的网站服务器上、在处理大数据的集
19 ➢ :JBoss 应用服务器便是典型代表,JBoss 软件可自由免费使用,软件提供 方通过技术文档、培训课程以及定制开发服务来营利。 ➢ :比如 IBM 公司在出售服务器时,一般会为用户捆绑销售 AIX 或 Linux 系统来确保硬件设施的营利。 ➢ :比如 O'Reilly 既是一家开源公司,也是一家出版商,诸多优秀图书都是 由 O'Reilly 出版的。 ➢ :微软公司曾多次表示支持开源社区。大家对此可能会感到意外,但这是 真的!Visual Studio Code、PowerShell、TypeScript 等软件均已开源。大家是不是瞬间 就对微软公司好感倍增了呢?买一份正版系统表示支持也就是人之常情了。 为什么学习 Linux 系统 在讲课时,我经常会问同学们一个问题:“为什么学习 Linux 系统?”很多学生会脱口 而出:“因为 Linux 系统是开源的,所以要去学习。”其实这个想法是完全错误的!开源的 操作系统少说有 100 个,开源的软件至少也有 10 万个,为什么不去逐个学习?所以上面谈到 的开源特性只是一部分优势,并不足以成为您付出精力去努力学习的理由。 对普通用户来讲,开源共享精神仅具备锦上添花的效果,我们更加看重的是,Linux 系 统是一款优秀的软件产品,具备类似 UNIX 系统的程序界面,并继承了其良好的稳定性。而 且,开源社区也在源源不断地提供高品质代码以及丰富的第三方软件支持,能够在高可用性、 高性能等方面较好地满足工作需求。 当然,大多数读者应该都是从微软的 Windows 系统开始了解计算机和网络的,因此肯定 会有这样的想法“Windows 系统很好用啊,而且也满足日常工作需求呀”。客观来讲,Windows 系统确实很优秀,但是在安全性、高可用性、高性能方面却难以让人满意。您应该见过下面 这张图片。虽然蓝屏不是经常可以看到的,但若这样的“事故”发生在生产环境中则是绝对 不敢想象的。 大家可以讨论一下,为什么要在需要长期稳定运行的网站服务器上、在处理大数据的集
前言 群系统中,以及需要协同工作的服务器环境中采用Liux系统呢? 还有一个更极端的应用场景 一全球超级计算机竞赛。每年全球会评选出计算峰值速度 最快的500台超级计算机,其中包括美国的Summit、Sierra和中国神威·太湖之光、天河二 号等超级计算机。截至本书写作时,这些超级计算机无一例外采用的都是Liux操作系统。 为了能更清晰地比较Linux和Windows具体的差别,我们进行了简单归纳,如下图所示。 这些差别是由刘遄老师凭借工作经验总结出来的,或许您现在不完全认同,但没关系,您可 以在学习中慢慢感受。 静定且有效神 免费城少许货用 写园少目桂牵修补 意样素多用白 加安个的用户及文什权限第 合 特序的人系 Linux Windows 坦白来讲,每位投身于Lix行业的技术人或者程序员只要听到开源项目就会由衷地感 到自豪,这是一种从骨子里带有的独特情怀。开源企业不单纯是为了利益,而是互相扶持 努力服务好更多的客户。开源社区更是与全球用户唇齿相依,任何人都可以贡献自己的代码 与灵感,任何人也都可以从开源社区中受益。如此良性循环下来,开源软件便具备了4大关 键性优势。 >低风险:使用闭源软件无疑把命运交付给他人,一日封闭的源代码没有人来维护,您 将进退维谷。而且相较于商业软件公司,开源社区很少存在倒闭的问题。并且,源代 码一旦公布于世,任何人或组织都可以接手进行新的维护工作。 >高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编 写、维护、测试的用户数量众多,一般的bug还没有等暴发就已经被修补。另外,在 灵感不断碰撞、代码不断迭代的交流氛围中,程序员也不可能将“半成品”上传到开 源社区中。 低成本:开源工作者大多都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献 一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。 >更透明:没有哪个笨蛋会把木马或后门代码放到开源项目中,这样无凝是把自己的罪 行暴露在阳光之下,很容易被他人发现。 读到这里,相信大家已经基本熟悉了刘遗老师的写作特点(但不是讲课特点) 能用 一句话讲清的事情,绝不会造出一段话。这样的好处非常明显:首先是找出重点逐个讲解, 这样使得段落不再冗长:其次是配上了大量相关的图片,看起来非常有乐趣,并且能够让您 眼就找到最重要的知识和干货。接下来,我将用几段话来总结Lx系统的发展历程。不 会赘述太多,请大家留心每个时间点即可。 20
前 言 20 群系统中,以及需要协同工作的服务器环境中采用 Linux 系统呢? 还有一个更极端的应用场景—全球超级计算机竞赛。每年全球会评选出计算峰值速度 最快的 500 台超级计算机,其中包括美国的 Summit、Sierra 和中国神威·太湖之光、天河二 号等超级计算机。截至本书写作时,这些超级计算机无一例外采用的都是 Linux 操作系统。 为了能更清晰地比较 Linux 和 Windows 具体的差别,我们进行了简单归纳,如下图所示。 这些差别是由刘遄老师凭借工作经验总结出来的,或许您现在不完全认同,但没关系,您可 以在学习中慢慢感受。 坦白来讲,每位投身于 Linux 行业的技术人或者程序员只要听到开源项目就会由衷地感 到自豪,这是一种从骨子里带有的独特情怀。开源企业不单纯是为了利益,而是互相扶持, 努力服务好更多的客户。开源社区更是与全球用户唇齿相依,任何人都可以贡献自己的代码 与灵感,任何人也都可以从开源社区中受益。如此良性循环下来,开源软件便具备了 4 大关 键性优势。 ➢ :使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,您 将进退维谷。而且相较于商业软件公司,开源社区很少存在倒闭的问题。并且,源代 码一旦公布于世,任何人或组织都可以接手进行新的维护工作。 ➢ :相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编 写、维护、测试的用户数量众多,一般的 bug 还没有等暴发就已经被修补。另外,在 灵感不断碰撞、代码不断迭代的交流氛围中,程序员也不可能将“半成品”上传到开 源社区中。 ➢ :开源工作者大多都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献 一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。 ➢ 没有哪个笨蛋会把木马或后门代码放到开源项目中,这样无疑是把自己的罪 行暴露在阳光之下,很容易被他人发现。 读到这里,相信大家已经基本熟悉了刘遄老师的写作特点(但不是讲课特点)—能用 一句话讲清的事情,绝不会造出一段话。这样的好处非常明显:首先是找出重点逐个讲解, 这样使得段落不再冗长;其次是配上了大量相关的图片,看起来非常有乐趣,并且能够让您 一眼就找到最重要的知识和干货。接下来,我将用几段话来总结 Linux 系统的发展历程,不 会赘述太多,请大家留心每个时间点即可