什么是开源软件?
1997春天,自由软件社团的一些领导者聚集到加利福尼亚州。
这个社团包括EricRaymond,TimO'Rerlly,VA Research的总裁Larry Augustin等人,他们所关心的是一种寻找方式,来向以前躲避自由软件思想的人们推广这种思想。
他们担心,自由软件基金会的反商业信条会让人们对自由软件敬而远之。
在Eric Raymond的坚持下,这群人同意他们所缺乏的是市场营销活动,这个活动的目的是赢得思想,而不仅仅是市场份额。
最后讨论的结果产生了一个新的术语来描述他们所推进的软件:Open Source(开烦扰软件)。
他们制定了一系列的指导原则,用来描述哪些软件可以有资格被称为开源软件。
Bruce Perens 为制定开源软件的定义做了很多基础性的工作。
GNU工程的正式目标之一就是创造一个自由可用的操作系统,以作为平台来运行GNU软件。
从软件引导(softwera boottstrapping)的传统观点来看,Linux已经成为那个平台,L inux是在GNU工具的帮助下创造出来的。
Perens曾经是Debian工程的领导者,它所管理的Linux发行版本,只包括那些符合GNU精神的软件。
Perens已经在“Debian社会契约”(Debian Social Contract)中明确地阐明了这一立场。
开源软件的定义是“Debian社会契约”的直接产物,因此开源软件是与GNU的精神一脉相承的。
与GPL相比,开源软件的定义允许更大授权自由。
特别是当软件中混合了专有软件和开源软件时,开源软件的定义允许在它们的基础上生成更大的混合。
结果是,开源软件许可证能令人信服地允许使用和再分开开源软件,而不必考虑补偿或者信用问题。
举例来讲,你可以得到伟大的Netscape浏览器的源代码,并且把它作为连同另一个软件(可能是专有软件)一起发布出去,而用不着去通知网景(Netscape)公司。
网景为什么会希望如此呢?原因很多,最引人注目的是,这样做可以为他们的客户端代码赢得更大的市场份额。
这些代码与他们的商业软件一起工作得的非常好。
从这个角度来说,奉送源代码是建立平台的一个很好的方式。
这也是网景的人不使用GPL的原因之一。
这在社团中可不是小事一桩。
1998年下半年,曾经有一场重要的争论对Linux威胁极大,几乎Linux社团破裂。
裂痕是因出现了两个软件系统GNOME和KDE而引发的,它们两者都试图建立一个面向对象的桌面界面。
一方面,KDE利用了Troll Technology公司的Qt库,其中的一部分属于专有代码,但是很稳定、很成熟。
另一方面,GNOME决定使用GTK+库,尽管它不如Qt成熟,但是它是完全自由的库。
过去,Troll Technology不得不在使用GPL和维持他们的专有软件立场之间进行选择。
GNOME和KDE的裂痕本来会持续下去。
然而,在开源软件出现后,虽然Troll仍然控制他们想要的技术,但是Troll可以为希望Qt符合开源软件定义的人改变他们的许可证。
Linux社团两个重要部分的裂痕看来要弥合了。
开源软件的意义 在AMD追赶英特尔的漫漫长途中,一句广为流传的话是这样说的:“AMD的存在,不仅深受AMD客户的拥护,也是英特尔用户的福气,因为它打压了英特尔的高价垄断。
”同样,开源软件相对于商业软件也是同样的道理,尤其是对那些具有垄断性质的软件来说,开源软件更显其深远意义。
君不见在IBM、Sun等公司推动OpenOffice系统成为业界标准的进逼下,顽固如微软者也不得不把MS Office拿出来充公。
显然,随着开源软件的流行,商业软件不仅被压缩了发展空间,同时也促使软件商们不断地降低软件价格,给消费者带来了显而易见的利益。
身兼开放源代码应用基金会(OSAF)总裁和主席以及Mozilla基金会主席的Kapor先生就表示,这两个基金会并不是要创建新的杀手程序,而是要利用开源软件的模式削弱微软在网络浏览器和电子邮件软件领域的垄断地位。
事实上,对一些发展中国家,或者说那些软件业欠发达国家来说,开源软件还为他们制造了后发优势,提供了追赶和超越发达国家软件业的机会。
毕竟,对于像中国这样的发展中国家,软件业的发展严重滞后,完全依靠国内的资金和人才要想赶超像美国这样的软件大国,几乎是没有机会的,充其量只能是一种理想。
但是,如果能在基于开源软件的基础上加大投入的话,这种理想就有了实现的可能。
当然,不得不提的是,业界也有人怀疑,开源软件是否会扼杀国内软件人士的努力。
就像AMD前段时间向我们提供X86技术一样,有人担心会使国人失去研究龙芯的兴致。
还有人认为,像MS Office这样的软件如果都开源的话,那么微软们就不可能再投入大量的资金进行开发和升级,从而也会间接地阻碍软件业的发展。
这些言论有一定道理,但开源的意义就是为了挖掘新的产业模式,这种探索精神正是我们世代所鼓励的。
软件开源有什么作用
开源软件的意义 在AMD追赶英特尔的漫漫长途中,一句广为流传的话是这样说的:“AMD的存在,不仅深受AMD客户的拥护,也是英特尔用户的福气,因为它打压了英特尔的高价垄断。
”同样,开源软件相对于商业软件也是同样的道理,尤其是对那些具有垄断性质的软件来说,开源软件更显其深远意义。
君不见在IBM、Sun等公司推动OpenOffice系统成为业界标准的进逼下,顽固如微软者也不得不把MS Office拿出来充公。
显然,随着开源软件的流行,商业软件不仅被压缩了发展空间,同时也促使软件商们不断地降低软件价格,给消费者带来了显而易见的利益。
身兼开放源代码应用基金会(OSAF)总裁和主席以及Mozilla基金会主席的Kapor先生就表示,这两个基金会并不是要创建新的杀手程序,而是要利用开源软件的模式削弱微软在网络浏览器和电子邮件软件领域的垄断地位。
事实上,对一些发展中国家,或者说那些软件业欠发达国家来说,开源软件还为他们制造了后发优势,提供了追赶和超越发达国家软件业的机会。
毕竟,对于像中国这样的发展中国家,软件业的发展严重滞后,完全依靠国内的资金和人才要想赶超像美国这样的软件大国,几乎是没有机会的,充其量只能是一种理想。
但是,如果能在基于开源软件的基础上加大投入的话,这种理想就有了实现的可能。
当然,不得不提的是,业界也有人怀疑,开源软件是否会扼杀国内软件人士的努力。
就像AMD前段时间向我们提供X86技术一样,有人担心会使国人失去研究龙芯的兴致。
还有人认为,像MS Office这样的软件如果都开源的话,那么微软们就不可能再投入大量的资金进行开发和升级,从而也会间接地阻碍软件业的发展。
这些言论有一定道理,但开源的意义就是为了挖掘新的产业模式,这种探索精神正是我们世代所鼓励的。
赢利模式是开源软件发展的根本 以火狐(Firefox)浏览器闻名于世的Mozilla基金会,宣布成立一家子公司Mozilla Corporation,以便投入可创造收益的商业活动。
作为一家著名的开源软件组织,Mozilla的行为招致大量质疑。
人们之所以有这样的反应,就是因为认定开源软件出现的初衷就是免费和开放源代码,Mozilla的行为看起来无疑是违背了二大法条之一的免费。
但是,开源软件的免费说至少就目前看来,可能是人们的一种误解。
让我们简单地扫描一下当前开源软件的运营模式:第一种,软件完全免费,后续服务收费。
像当前的Red Hat Linux就是使用这样的模式。
但是,这种模式并不是每一家开源企业都能使用的,也只有像Red Hat这样的行业领先者才有这样的资本。
第二种,软件免费,没有售后服务,在软件市场成熟后,靠出售专利谋生。
这种方式的代表是Foxmail。
第三种,应用服务提供模式。
在这种模式下,软件和服务都是免费,企业按时间交纳使用费。
最主要的运营模式也就是这几种,其他种类的模式其实都是这几种模式的演化和变种。
从中我们可以看出,开源软件本身的确是免费的,但开发者最初的意图其实是为了通过后续服务或出售专利等方式获利。
从这个层面来说,天下的确没有免费的误餐。
当然,不排除一些真正的免费的开源软件,不过这只能是一些小型的软件。
这些软件不需要集中太多人的就能开发出来,后续也不需要太多人的来维护和升级。
而对一些大型软件诸如操作系统等,当前不可能成为免费的开源软件。
因此说,如果开源软件找不到自己的赢利模式的话,就很难生存下去,更别提发展了。
上海中标软件有限公司常务副总经理秦勇就表示,“在中国国内Linux市场上,虽然现在起得很快,但是整个市场容量、整个市场还不够大,还不足以养活号称国内有9家企业的庞大的Linux家族。
”这句话背后的潜台词,很显然企业还是要靠Linux赢利的。
在笔者看来,开源软件的意义就在意源代码的开源,免费只能说是它的一种说法,并不代表实质性意义。
因此说,开源软件企业要想生存和发展下去,肯定得寻找自己的赢利模式。
然而,就目前来说,能通过开源软件赢利的太少了,即使像Red Hat这样的业界巨头,2004年才实现2亿美金的营业额,别的企业业绩如何可想而知。
事实上,当前无论是国际还是国内的开源软件组织和企业都是少之又少,原因何在,就是因为这些组织和企业没有找到可行的赢利模式,从而没有足够的资金支持企业持续发展下去。
高级人才是开源软件发展的瓶颈 就像本文开篇时说的那样,国内外开源软件业都存在缺乏高级人才的问题。
当前,开源软件业的一致观点就是:人才数量不缺,缺的是质量。
实际上这句话更准确地表示应该是:人数不缺,缺的是人才。
据业内人士分析,开源软件目前能够想到的赢利模式都是为企业服务的。
但是,目前的开源企业总体上规模很小,由几个人到几十人公司都有,然而,大型企业对这样的小企业,包括几百人的软件企业,都会持不信任的态度。
Novell中国区市场与渠道总监罗威就表示,在两年前,Novell之所以收购SUSE,一方面当然是业务发展的需要,另一方面其实也有扩大规模的动机。
当前,Novell公司在全球已有数千人。
Novell通过这种扩张,就是想把非常好的技术放到坚实的企业平台上,两者...
开源软件的安全性究竟如何?
引:关于软件的安全性问题,随着网络的流行越来越成为人们关注的焦点,事实上每年发生的大量的攻击事件,病毒、黑客、蠕虫,使人们对软件的安全性不得不重视。
但是究竟是开源软件安全还是商业软件更安全呢?关于这个问题一直是仁者见仁智者见智。
关于软件的安全性问题,随着网络的流行越来越成为人们关注的焦点,事实上每年发生的大量的攻击事件,病毒、黑客、蠕虫,使人们对软件的安全性不得不重视。
但是究竟是开源软件安全还是商业软件更安全呢?关于这个问题一直是仁者见仁智者见智。
有人说开源软件由于源代码是开放的,因此即使有漏洞和BUG也极易被人们发现并及时进行修改和完善,但是商业软件却由于不开放源代码,仅有少数人知道源代码,因此在漏洞和BUG方面,可能发现的很晚,所以也极易造成破坏和损失。
不过商业软件商总是认为自己的软件的安全性是相当可靠的,是经过检验地,并且也称,即使是开源软件,如果BUG和漏洞被一些不法分子获悉,同样存在着安全隐患,而且因为它的源代码是开放的,这种获悉漏洞的机会将更大。
可以说,彼此对对方的安全性都提出了质疑,甚至有些不屑。
那么究竟开源软件的安全性症结在哪里呢?开源软件的安全性是不是要比商业软件更好呢?事实证明,无论是一些软件使用者还是一些研究机构,对开源软件还是情有独衷的。
从他们的使用和研究来看,开源软件的安全性确实要好一些,在很大程度上就是因为它的开放性和随时弥补性。
众所周知,即使再完善的软件也可能存在着安全隐患,也就是说也可能有漏洞,甚至可以毫不夸张地说,所有的软件都有漏洞,只是这些漏洞是不是能及时被发现并进行弥补。
从某种程度上讲,商业软件所依赖的所谓的“安全性”其实更多的是臆想和希望,而不是现实。
现在的软件市场极度依赖于所谓的“独立”测试和认证,但实际上,付钱资助那些进行软件测试和认证的机构的人同时就是这些软件公司。
因此即使是微软这样的软件巨人,在自己的软件上每年要修正多少漏洞,这还仅仅是已经发现的漏洞,还有很多没有被发现的不是同样在侵蚀着我们的系统吗?据普林斯顿大学二名研究人员最近发布的一份报告称,AOL、Adobe等大牌公司在编写安全的软件方面还可以做得更好。
研究人员对包括AIM、Photoshop在内的许多流行的应用软件进行了研究,发现其中许多软件都针对操作系统进行了优化,使黑客能够绕过一些Windows安全机制。
普林斯顿大学的这二名研究人员重点研究了Windows的访问控制系统,它控制着用户和应用软件能够在PC上执行哪种类型的操作。
他们的结论是:许多软件要求过多的权限,为可能的黑客打开了大门。
据美国系统网络安全协会(SANS Institute)称,在对Windows进行多年的攻击后,黑客越来越多地瞄准了在Windows上运行的应用软件。
它将即时通讯、媒体播放、备份软件列为新的安全缺陷重灾区。
而开源软件在安全性方面做得相对就好多了,笔者并不是说开源软件就已经做到无懈可击,就已经绝对安全了,事实上也并不是这样,只要有软件存在,就可能出现安全性问题,这已经是业界达成共识的东西了。
问题的关键是,它们是在全球进行使用和开发,因此开源软件总是能够站在安全性的最前沿。
因为它的源代码是开放的,因此给人一种更放心的应用,对那些喜欢自己动手丰衣足食的人来说,开源软件能给自己一种信心。
更何况现在的开源,很大程度上是一种全球的智慧,是全体软件人员共同的兴趣和爱好的结晶。
虽然我们不能避免开源软件就没有安全问题,但是因为它的开放性以及共享性,因此它出现问题之后的解决速度将更快,而且堆积了大部分人智慧的锤炼,它的漏洞相对来说也要少一些。
这和商业软件是有本质的区别的,虽然商业软件号称是安全的,是不开放的,但是从发生的安全漏洞和受攻击的成功率方面来看,封闭并不意味着安全,相反,更容易激发那些黑客的兴趣,并不断地试探、攻击、骚扰着商业软件的安全度。
而开放了源代码,彼此之间大家都可以知道源代码是什么?因此对可能存在的问题以及自己需要进行的工作都可以很容易地上手研究。
这是开源的一个优势,也是网络时代共享精神的充分体现。
很显然,对软件的安全性问题,笔者更看好开源软件的发展。
软件开源意味着什么?
开源(Open Source,开放源码)被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。
开放源码软件通常是有版权 ( copyright ) 的.它的许可证可能包含这样一些限制:着意地保护它的开放源码状态,著者身份的公告,或者开发的控制。
实际上,开源软件同时涉及源码本身和开发过程,涵盖了三个方面的意义:免费分发的源代码、模块化的体系和集市式的开发--在这种开发方式中,任何地方的任何人都可以参与最终产品的制造,三个方面互相之间有密切的联系,集市式的开发过程给开源软件以强大的改错能力,因为它将程序中的错误公开给了数量巨大的观众,他们都是潜在的改错者。
另一方面,任何人都可以复用和发行开源软件的代码这一事实又支持了公众利益,因为创新的观念被整个集市所共享。
另外,"open source"这一术语还被延伸到其他智力团体中,指那些可通过公开手段获得的智力资源,比如报纸、教学课件等。
开源软件的“开源”是什么意思?
1997年,开放源码促进会(Open Source Initiative, www.opensource.org)正式成立,它给予了开放源码一个官方的、正式的定义。
它指出,开放源码并不只是意味着对源码的存取访问,而且还要遵守许多原则,总结为以下几条: 1.允许自由再分发——排除了为了短期的销售额而放弃长期收益的诱惑。
2.允许对源码和已编译的程序一同进行分发——要使程序改进变得容易,首先使修改变得容易。
3.允许修改和衍生该作品——只具有阅读源码的权力,不足以支持独立的同行评价和快速的进化选择。
4.作者源码的完整性——用户有权知道正在使用的软件由谁来负责;作者和维护者也有权利支持和维护声誉。
5.无歧视对待对个人和群体——为了从整个过程中得到最大的收益,禁止把某些人排除在外。
6.不能限制任何人在某一特定领域使用程序——让商业人士加入社区,而不是被排除在外。
7.程序上的权利必须适用于任何再分发的程序——禁止以间接的方式封闭软件。
8.许可证不能特殊对待一个产品——预先防止了其他类型的许可证的陷阱。
9.许可证不能限制其他软件——分发者有对自己的软件进行选择的权利。
10.许可证必须保持技术中立——任何条款都不能根据任何个人技术或者接口的样式来推断。
这就是说,只有基于以上原则的源代码可公开访问的软件才能被称作开放源代码软件,即开源软件。
开源软件虽然源自自由软件,但一般而言,自由软件有时更接近于基于哲学思想的理想主义,而开源软件则更注重程序本身的质量提升。
开源软件、开源代码的开源是什么意思?
开放源码软件通常是有版权 (copyright ) 的,它的许可证可能包含这样一些限制:着意地保护它的开放源码状态,著者身份的公告,或者开发的控制。
实际上,开源软件同时涉及源码本身和开发过程,涵盖了三个方面的意义:免费分发的源代码、模块化的体系和集市式的开发--在这种开发方式中,任何地方的任何人都可以参与最终产品的制造,三个方面互相之间有密切的联系,集市式的开发过程给开源软件以强大的改错能力,因为它将程序中的错误公开给了数量巨大的观众,他们都是潜在的改错者。
另一方面,任何人都可以复用和发行开源软件的代码这一事实又支持了公众利益,因为创新的观念被整个集市所共享。
另外,"open source"这一术语还被延伸到其他智力团体中,指那些可通过公开手段获得的智力资源,比如报纸、教学课件等。
美国一些进步的评论家指出,在象网络这样的虚拟环境中,驱动系统的底层代码,尤其是广为人知的那些应用程序之间的通信协议,它们在某种意义上很象现实社会中的法规。
换句话说,这些代码对网上的行为给出了一些规范,它鼓励某些行为,而限制其他行为,就像现实社会的法律一样。
因此,开放源码带来了一个更民主的开发方式,在这种方式下,好的主意将被集体分享,而不是作为智力资本被个人秘藏着。
在这种意义上,开放源码实质上成为一种政治哲学。
开放源码的精神在于使用者可以使用、复制、散布、研究、改进软件。
最早可以 回朔到1960年代。
当时,售卖大型计算机的厂商如IBM,把一些软件及原始码一并送给客户,让客户能够因不同需求而自行更改软件。
在 1991-1992 年期间,住在芬兰的 Linus Torvald制造了第一版的 Linux 操作系统。
在一群热心的程序人员努力下,把 Linux 操作系统以及外围的应用程序逐一打造。
出名的作品除了趋于成熟的Linux 操作系统外,还有 Apache网页服务器、Perl 程序语言、MySQL 数据库、Mozilla 浏览器、OpenOffice等等。
如何判断一个开源软件源码里的核心代码
在阅读源码之前,还应知道Linux内核源码的整体分布情况。
现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。
Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于Linux-2.4.23目录): 1.arch目录包括了所有和体系结构相关的核心代码。
它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。
PC机一般都基于此目录。
2.include目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。
3.init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。
这是研究核心如何工作的好起点。
4.mm目录包含了所有的内存管理代码。
与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下。
5.drivers目录中是系统中所有的设备驱动程序。
它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound。
6.ipc目录包含了核心进程间的通信代码。
7.modules目录存放了已建好的、可动态加载的模块。
8.fs目录存放Linux支持的文件系统代码。
不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录。
Kernel内核管理的核心代码放在这里。
同时与处理器结构相关代码都放在arch/*/kernel目录下。
9.net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。
10.lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。
11.scripts目录包含用于配置核心的脚本文件。
12.documentation目录下是一些文档,是对每个目录作用的具体说明。
一般在每个目录下都有一个.depend文件和一个Makefile文件。
这两个文件都是编译时使用的辅助文件。
仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。
另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。
在阅读方法或顺序上,有纵向与横向之分。
所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是按模块进行。
它们经常结合在一起进行。
对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。
实际上这是一个反复的过程,不可能读一遍就理解。
长劲鹿哟