没有合适的资源?快使用搜索试试~ 我知道了~
首页2018年中国电信IT企业信息化任职能力—开源开发序列应用序列应知应会手册(初级)
2018年中国电信IT企业信息化任职能力—开源开发序列应用序列应知应会手册(初级)
需积分: 10 506 浏览量
更新于2023-05-29
评论 2
收藏 743KB PDF 举报
本资源主要用于中国电信IT任职能力考试,主要内容包括:1、开源软件简介;2、开源软件分类;3、开源软件之框架和库;4、开源软件之服务器软件等。
资源详情
资源评论
资源推荐

第一篇 通用知识篇
第一章 开源软件简介
第一节 开源软件
开源软件促进会 OSI(Open Source Initiative)对开源软件有着明确的定义,
业界公认只有符合这个定义的软件才能被称作为开放源代码软件,简称开源软件
(Open Source Software)。 OSI 对开源软件的定义一共有十个条款,具体内容如下:
1.自由再发布(Free Redistribution)
开源软件的许可证不应限制任何个人或者团体将包含该开源软件的广义产品进
行销售或赠予。许可证不能要求收取任何和这种销售相关的著作权授权费或者与此有
关的其他费用。
【阐述】这条标准给予人们自由地再发布开源软件的权利,不 管是为了个人目的
还是商业目的,都不会受限制,并且都是免费的。
2.源代码(Source Code)
开源软件的程序必须包含源代码,必须允许发布源代码及编译后的程序。如果产
品 中没有包含源代码,那么必须提供一个公开的获取源代码的方式。这种方式可以收
取的费用不能超过对源代码进行一次复制所需要的合理成本(例如制作一张 CD 的成
本), 最好是可以通过互联网提供免费的下载。源代码的形式必须易于程序员修改,
不能故意对源代码进行模糊处理,也不得以预处理器或者转译器输出的中间结果的形
式提供源代码。
【阐述】这条标准保证了程序源代码的公开性,同时确保源代码可以比较容易被
修改,这样大大提高了开源软件的接受度和生命力。
3.派生作品(Derived Works)
开源软件的许可证必须允许修改和派生作品,并且允许使用原有软件的许可条款
发布它们。
【阐述】派生作品主要是指基于原有软件代码开发的新作品。派生作品可能会改
变软件原有的功能,但不一定会改写原有代码。允许修改和派生工作,可以促进开源
软件的不断改进。
4.作者源代码的完整性(Integrity of The Author’Source Code)
只有在允许补丁文件盒原有源代码一起发布的情况下,开源软件的许可证才可以
限制源代码以修改过的形式发布。许可证必须明确地允许发布由修改后的源代码构建
出的软件。许可证可以要求派生作品使用不同于原有软件的名称或者版本号,以区别
于原有软件。
【阐述】这条规则提供了一种保护原有软件完整性的可能性。作者可以通过限制
源代码以修改过的形式发布,在一定程度上保证原有软件不会被无限地篡改,失去软
件原来的目的和功能。同时,确 保 人 们 可 以 使 用 非官方的补丁,在提供便利性的同时,
又使这些补丁区别于原有软件。
5.不能歧视任何个人或团体( No Discrimination Against Persons or Groups)
开源软件的许可证不能歧视任何个人或者团体。
【阐述】这条规则使得开源软件的参与和受益群体最大化。
6.不能歧视任何领域(No Discrimination Against Fields of Endeavor)

开源开发岗位应知应会手册
1
开源软件的许可证不能限制任何人把程序使用于某个领域,比如,不 得 规 定软件
不能用于商业目的或者应用于遗传研究。
【阐述】这条规则提供了把开源软件应用于商业用途的可能性。
7.许可证的发布(Distribution of License)
程序所带的权利必须适用于所有接收方,而这些接收方必须执行附加的许可证。
【阐述】这条规则避免了开源软件许可证被附加条款覆盖从而并没有真正开源,
例如保密协议这样的附加条款。
8.许可证不能只针对某个产品(License Must Not Be Specific to a Product)
程序所带的权利与程序是否成为特定软件的一部分无关。如 果 某 程序从特定软件
中抽取而来并遵守程序本身的许可证,那么该程序的所有接收方获得的权利与原特定
软件所赋予的对应部分的权利相同。
【阐述】这条规则确保开源软件不会被局限在某个产品中。
9.许可证不能约束其他软件(License Must Not Restrict Other Software)
开源软件的许可证不能对同该许可证下的软件一起发布的其他软件有任何约束。
例如,开源软件的许可证不能要求在同一媒介下发布的其他程序也必须是开源的。
【阐述】开源软件的许可证只能约束自己,不能影响商业许可证,这样可以确保
开源软件和其他商业软件共存共通,互相协作。
10.许可证必须独立于技术(License Must Be Technology-Neutral)
许可证的条款不应指定任何特定的技术或接口。
【阐述】这条规则避免了许可证的应用因为某个技术原因而受到阻挠。
通过这十条条款,可以清楚地看到,OSI 实际上是在定义一种软件许可证。定义
中的每一个条款,都是在说明软件许可证应该如何规范开源软件的行为,包 括 软件的
使用、发布、复制和派生等整个过程。如果一个软件的许可证符合这个定义并通过了
开源软件促进会的认证,那么该软件就是开放源代码软件,反之则不是。开源软件的
作者可以从已通过认证的开源软件许可证列表中选一个作为自己的许可证,或 是联系
开源软件促进会为自己制定的软件许可证进行认证。
第二节 开源之核心理念——Collective Intelligence
Collective Intelligence,可翻译为群体智慧、集 体 智慧、集 体 智 能 等 。
有关的定义可谓仁者见仁智者见智: George Pr 将群体智慧定义为通过分
化与整合、竞争与协作的创新机制,人类社区朝更高的秩序复杂性以及和谐
方向演化的能力;维基百科将群体智慧定义为: 群体智慧是一种共享的或
者群体的智能, 它是从许多个体的合作与竞争中涌现出来的。总结来说,群
体智慧是由组成群体的个人贡献出自己的知识、技能、经验,通过个体间的
协作、灵感互动、相互启迪等共享机制,产生的优于任何个人的智慧。群体
因为其人数众多,比某一专家视角更为丰富, 覆盖面更广。当社会发展越来
越依赖知识时, 这种群体智慧就变得越来越重要,目前群体智慧已经成为
知识社会中竞争、创造和发展的重要因素。
群体智慧的主要特征有:多样性,群体里的每个人都有一些独占信息;
独立性,群体内成员不会因为其他人人的意见而改变自己的意见;民 主 性 ,
成员的决策行为不会受到外在压力的强迫,而整个群体的决策则是由所有
成员的决策汇聚而成。
开源软件、开源社区的发展离不开群体智慧的思想。群体智慧在开源发

开源开发岗位应知应会手册
2
展的过程中发挥着极其重要的作用。群体智慧实现大规模的协作以解决复
杂问题。群体智慧注重用户的广泛参与,充分利用群体智慧解决复杂问题。
Linux 的开发和利用无不见证了群体智慧的力量大规模协作充分调动和利
用个体的智慧, 集思广益, 极大地提高了解决问题的效率, 降低了知识生
产和创新的成本, 使得各种复杂棘手的问题能够迎刃而解。开源社区的各
个成员,利用自己的知识与能力,对开源软件进行开发和利用,利用集体的
智慧推动软件的更新和发展。
第三节 开源软件的特点
一、高质量
很多人认为免费是使用开源最大的好处,但其实他们忽略了一个更重要的东西-
--质量。如果一个软件无法帮助用户解决问题,就算白送,那也毫无用处,甚至会带
来损失。很多流行的开源软件如今能够被大众接受,恰恰印证了其质量与专有软件相
比已经处于伯仲之间。当然,优秀的专有软件层出不穷,商业公司大量资金和人力的
投入在很大程度上保证了专有软件的质量。但开源软件以其独特的创新开发模式,如
果 运 作 得 当 ,其质量也可以达到相当高的水准。而这一点却是很多用户误解的地方,
他们总觉得大部分的开源软件是“业余选手”,质量不如专有软件,事实并非如此。
开源软件在质量方面有如下优势:
首先,开源社区中的开发人员的素质毫不逊色于专有软件的开发人员。很多成功
的社区中都有若干顶尖的技术领袖。Linux Torvalds、Richard Stallman、Eric
Raymond 这些在业界如雷贯耳的名字都是开源社区中的中坚力量。况且,随着开源商
业模式的成熟,开源社区的成分与 10 年前相比已经发生了本质的变化越来越多的商
业公司直接加入到众多开源软件的开发中并成为主导力量。有 些 商 业公司是以赞助商
的形式支持一个开源社区,有些则直接纸牌自己的员工加入到开源开发中。商业公司
的加盟使得众多开源项目无论在资金还是人力上都有了更稳定的支持,Eclipse 基金
会和 Apache 软件基金会的大部分软件即是最好的例子,即使以非商业友好的 GPL 许
可证发行的 Linux 内核,其在 2005 年到 2008 年四月的三年来更新的代码 70%以上来
自商业公司。
其次,开源社区的文化推崇高质量的代码,一切让代码来说话,优者生存。这是
开发人员在社区里建立威信和影响力的最基本途径。由于开发活动完全透明,任何人
所做的任何改动都能很轻易地追溯,因此开源开发人员对自己贡献的代码会有更高的
要求,毕竟谁都希望自己的代码能够经得起众人的眼光和时间的考验;另一方面,如
果有开发人员对当前的代码不满意,那么他就可以改进代码或者重新实现,这 使 得 开
源 项 目 的代码能够不断汲取众人的集体智慧。相对于商业软件常常追求添加吸引眼球
的新特性和新功能,开源社区通常更崇尚代码的精简、性能、稳定性和可维护性,而
这些都是软件质量的根本,特别是对于服务器端软件而言。
再次,开源软件的基本开发流程之一是任何重要的技术决策都需要通过社区的表
决,而提交给开源项目的代码,特别是那些比较关键的代码,也通常需要经过多人的
评审通过后才会被接纳,然后由对代码库具有写权限的社区成员(committer)将代码
提交到代码库中。虽然一个开源社区里不可能人人都是高手,但有了这样的规则,最
后总是有高手把关,从而在流程上保证了代码的质量。Apache 基金会就专门定义了一
套这样的规则,其 中最令人印象深刻的一条是:如 果 某 次 表 决 有一位成员给出否定决
票,那么被表决的动议(无论是一个提案还是一段代码)就将被否决了。

开源开发岗位应知应会手册
3
第四,开源开发过程开创并使用了敏捷开发中所提倡的一些最佳实践,例如频繁
的发布、与用户的互动等。开源软件一般每隔几个月就会发布一个新的版本,并且用
户也可以拿到包含所有最新的改动的仍处于开发中的未发布版本。通过及时地把改进
后的版本交给用户使用,然后通过社区的邮件列表、论坛或者缺陷跟踪系统收集用户
的反馈,再改进,再发行,从而与用户形成迅速有效的互动,使得开源软件更好更快
地满足用户的需求。
第五,一个成功的开源软件通常拥有一个庞大的稳定用户社区,大量用户特别是
一些乐于尝试新版本和新功能的核心用户,能 够帮助检验开源软件的质量,从而弥补
开源软件在测试上的薄弱。而且,这些核心用户中的一部分人本身就是技术人员,有
时候会自己修改遇到的软件中的缺陷并将补丁提交给开源社区。很多人都会把开源软
件视为社会的公共财富,所以也更愿意为此做自己力所能及的事情,并且以此为傲。
而对于商业软件,人们就很难有这样的归属感。
另外,开源开发一般没有时间上的压力,所以不会因为要赶进度而牺牲质量,推
迟发布也无伤大雅;而商业软件恰恰相反。有 些 开源开发人员纯粹是出于个人兴趣或
者价值观而参与开源开发,其动机更加纯正,因此对代码质量也更加负责。最后值得
一提的是,有些开源软件前身本来就是专业软件,比如 Firefox,所以质量更是不在
话下。
事实胜于雄辩。根据 2008 年底著名 IT 调查公司 Garter 的调查,目前已经有 85%
公司在使用开源软件,剩下的 15%也将在一年内开始使用,其中不乏用于核心应用的
案例---特别是在新启动的项目中。而 Palamida 公司在 2008 年底的一次调查中同样
显示,有将近 63%的被调查者相信开源软件的质量与商业软件的质量相同或相近。这
些数据有力地说明很多开源软件已经足够成熟,可以用于关键业务。
二、免费(零许可证费)
开源软件不仅质量高,而且是免费。所有开源软件确实都不要用户支付许可证费
用的,这也是其最容易吸引人的地方。没有许可证费用,用户可以在 不用向软件的作
者支付任何费用的情况下安装和使用开源软件,这 大大降低了进入门槛。用 户 可 以自
由地获得一个软件的复制并进行完整的评估。对 于 公 司 用 户 来 讲 ,也 就 免 去 了需要事
先向领导或者老板申请预算的烦琐,更少了购买和管理软件许可证的麻烦,再不用担
心保留发票或者授权到期问题,这种效率上的节省对于大型企业来讲是非常有价值的。
因此,很多新启动的项目都会考虑使用开源软件。前面提到的 Gartner 的调查结果也
印证了这一点。但节省了许可证费用并不意味着就没有任何费用了。
除了免费使用,用 户 还 可 以 在遵守许可证条款的前提下进行衍生品开发和重新发
布开源软件。这就允许商业公司将开源软件----无论是修改过的还是原封不动的---
-打包在自己的产品中进行发布。通过重用现成的免费开源组件,这些公司可以大大
节省开发成本。需要强调的是,重新发布一定要遵守被发布的开源软件的许可证。有
些开源许可证限制很少,例如 Apache 许可证,但有些则有很严格的限制,例如 GPL 许
可证。
三、开放和自由
开源软件通常是符合开放标准的,从而具有良好的可互操作性,这 就 使 得 用 户 不
会被某家商业公司的专有标准束缚。事实上,很多开源软件本身就是一些开放标准的
参考实现(reference implementation), 例 如 Apache Tomcat 一度是 Java Servlet
和 Java Server Page 规范的参考实现,而 Eclipse Equinox 是 OSGI 部分标准的参考

开源开发岗位应知应会手册
4
实现。著名的开源办公套件 OpenOffice 能吸引部分用户的重要原因就是其对开放标
准 Open Document Format 的支持,使得用户能够以公开的格式来保存自己的文档从
而获得完全意义上的所有权。正是在 OpenOffice 和 ODF 标准的压力下,微软也将其
OOXML 文档格式公布于众并大力推广使其成为开放标准。
开源软件通常也不会特别依赖于某一家供应商的软件,从而让用户自己可以自由
地选择他需软件来配合该开源软件的使用,避免被锁定在一家供应商上面。
四、灵活可定制
开源软件允许用户对其进行定制和扩展,更灵活体贴地适应用户的需求。因为开
源许可证允许用户对源代码进行修改,有 技术能力的用户完全可以为自己对某个开源
软件进行量身定制,去掉一些自己不想要的功能,或进行一些局部的改动或者优化,
甚至进行一些扩展。以 Linux 操作系统为例,用 户 就 可 以通过修改各种参数来编译构
建一个个性化的版本。可以说,开源软件为用户提供无限的可能。虽然很多商业软件
也允许定制化的安装,但那毕竟是有限的定制;如果要做个性化,那么即使很小的一
个改动也会需要用户支付大笔费用。
开源软件还使得用户能够自己动手修复软件中的缺陷,因为代码就在用户手中。
用户如果在使用过程中遇到问题,可以自己进行调试、修改然后重新编译构建,生成
修正后的版本。这 在 商 业软件通常是不可能的,用 户 一 般 需 要等 待 一个较长的周期才
能拿到问题的解决方案。
但正如很多人指出的那样,开源软件的灵活可定制扩展这个优点对有技术能力的
用户才有意义,特别是那些在开源软件上进行二次开发的商业用户,而对于普通大众,
恐怕还是只能享用现成的版本。
五、公开透明
开源软件公开自己的源代码,无疑做到了完全彻底的公开透明,使得对代码的审
计成为可能。如 果需要,用 户 可 以通过阅读源代码清楚地了解某个开源软件的工作原
理和实现方法。这对设计国家或商业安全领域很有意义。很多政府组织青睐开源软件
特别是 Linux 操作系统,部分原因可能是出于对国家安全的考虑。而使用商业软件就
只能相信供应商的声明了,供应商说没有后门程序,用户其实也无从验证。一个有趣
的例子是 Borland 公司当年开放其产品 Interbase 的源代码后,有人就发现其代码中
就留有一个后门账户。这样的事情在开源软件中很难做到。在开源的压力下,一些商
业公司也开始以协议的方式允许用户特别是一些政府用户来阅读其产品的源代码,以
获得更多的信任,微软公司就是其中一例。
六、良好的学习平台
由于代码的高质量及其开发的透明性,开源软件为广大用户提供了一个很好的学
习和交流的平台,特别是对于在源代码基础上进行修改或者扩展的用户。通过阅读邮
件或论坛讨论、文档以及源代码,用户们可以理解开源软件的架构及设计中的要义,
观察开发的各个环节特别是一些重要技术决定的决策过程,借鉴代码中的精深微妙之
处。这些对于处于软件行业发展阶段的用户,比如中国的大量开发者来讲,意义尤为
重大。开源软件是一个资源金矿,更是一个知识宝库。
第四节 开源软件与自由软件
经常有人会将开源软件和自由软件混为一谈,也常常会有人将开源软件和免费软
件两个概念向混淆。要区分开源软件与自由软件,应首先从定义入手。开源软件是指
在软件发行的时候附上软件的源代码,并授权允许用户更改、自由再散布、衍生著作,
剩余64页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0