《开源软件之道》读后感
当我闲暇时看到了《开源软件之道》这本书,让我更深刻地学习到开源运动前世今生,分享开源软件技巧与精髓。
这本书将开源运动的前世今生和游戏规则完整地呈现给读者。第一篇帮助大家认识开源,包括其定义,历史,现状,优势,使用成本,商业模型等。第二篇探讨使用开源软件是需要注意的各项具体事宜,特别是与知识产权相关的方面,例如软件著作权,许可证等,然后分享搜索所需开源软件的技巧,并罗列了一些流行的开源软件。第三篇全面介绍如何参与开源社区的工作,引导大家融入开源社区从而探析各个开源软件的技术精髓,深入认识开源文化,提升个人在技术,交流等各方面的能力,希望能帮助提高国内开发人员的整体水平。世界在发展,中国也在发展,中国自2001年入世以后,很多企业开始迅速发展,创造出了许多新的发展模式。
软件的发展史就像事人类社会发展史的一个缩影。从最初小众间的自由修改和分享为主的原始社会,过度到软件商业化大潮铸就的强大时代,到后来的自由和商业间做出更好平衡的开源运动。就是这样软件在曲折中慢慢地发展慢慢地强大。
开源软件(英语:Open source software,英文缩写:OSS,中文也称:开放源代码软件)是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用
户学习、修改、增进提高这款软件的质量。开源软件同时也是一种软件散布模式。一般的软件仅可取得已经过编译的二进制可执行文件,通常只有软件的作者或著作权所有者等拥有程序的源代码开放源代码软件就是在GNU通用公共许可证(GPL)下发布的软件,以保障软件用户自由使用及接触源代码的权利。这同时也保障了用户自行修改、复制以及再分发的权利。简而言之:所有公布软件源代码的程序,都可以称为开放源代码软件。
首先简单回顾一下和开源软件相关的一些重大历史事件:
1983年9月Richard Stallman创建GNU项目,并在次年启动。
1985年10月Richard Stallman成立Free Software Foundation。
1989年1月GPL v1发布。
1991年Linus Torvalds发布Linux内核。
1995年Apache HTTP Server发布。
1997年Eric Raymond发表《从教堂到集市》(The Cathedral and the Bazaar)。
1998年1月Netscape公司公开Netscape浏览器和Bugzilla的源代码,Mozilla开源项目启动。
1998年2月Bruce Perens和Eric Raymond等成立开源软件促进会即OSI。
1998年4月Open Source Summit举行,开源软件的提法开始流行。
1999年3月,Apache软件基金会成立。
1999年11月SourceForge上线。
2001年1月Wikipedia上线。
2004年1月Eclipse基金会成立。
2004年11月Firefox v1.0发布。
2005年5月Apache Harmony项目成立,开始开发一个基于Apache许可证的Java SE。
2006年11月,Sun公司创建Open JDK项目,并使用GPL许可证。
2007年6月,GPL v3在激烈的讨论之后终于发布。
2007年11月Google发布Android平台,并主要使用Apache许可证。
从上面的历史可以了解到,开源软件的发展是伴随着信息产业一起渐进发展的。在瞬息万变的软件产业,英雄辈出,他们试图影响着软件产业向着完全商业化或是完全自由、开放化的两个针锋相对的方向上发展。
起初,在个人电脑还未流行的20世纪60年代和70年代,并没有大规模销售的商业软件,也就没有明确的所谓"开源软件"的概念。当时,特定硬件平台上的软件的使用者同时也是软件开发者。他们会对自己的软件进行一些修改来满足一些特定的需求。使用相同硬件的计算机科研人员或爱好者会形成特定的小团体,共享技术上的心得和自己编写、修改的程序。20世纪70年代末,大多数软件都是随着购买的硬件而得到的,单独销售的软件并不常见。用户得到软件后修改软件、共享修改后的软件成为当时使用软件的主要方式。
但是软件的历史并没有如此一成不变地发展下去。1976年3月2日,比尔•盖茨在"给玩家的公开信"(An Open Letter to Hobbyists)中表达了对使用微软的Altair BASIC软件但不支付费用的用户的强烈不满。他在信中提到,大多数爱好者之间通过相互共享和复制来使用各种软件,并不在乎软件开发者的利益,但是好的软件必须得到应有的收入来保证质量。虽然他并没有对其他的软件共享进行特定的评论,但大多数人相信,私有的商业软件模式在此后的盛行和这起事件有着紧密的联系。不少软件开发者和公司看到了微软的商业化行为带来的利益,开始效仿开发和出售并不开放源代码的软件。微软引领的软件商业化潮流导致了闭源软件的流行。
与此同时,业界中有人对于软件过于商业化的趋势并不认同,传奇性的"最后的黑客"Richard Stallman便是其中的代表性人物。他出于对软件商业化所带来的种种弊端和对软件封闭性的痛恨,以及对自由的黑客文化的崇尚,在1985年发表了著名的GNU宣言,并成立了非营利性组织--自由软件基金会,旨在推广他关于自由地使用、修改和发布软件的自由软件运动,轰轰烈烈的开源运动从此兴起了。自由软件基金会初期的主要活动是编写GNU项目中的软件,打造一个完全"自由"的软件系统,替代已有的商业软件。20世纪90年代中期以后,基金会主要致力于支持自由软件运动和社区的法律和框架性工作。以Richard Stallman 为首的自由软件运动倡导者积极地推广自由软件的理念,试图改变商业软件一统天下的局面。
然而,像GPL这样的自由软件许可证具有传染性,所以自由软件运动并未得到大多数商业软件公司的支持。但是,开放、分享的思想却越来越深入人心,并有众多开发者和用户为其摇旗呐喊,使得整个业界也逐渐认识到开放源代码的重要性及其好处,开始探索能更好地平衡开放理念和商业利益的新模式。1998年,"开源软件"这一新的概念开始广泛流行起来。当时正值轰动一时的Netscape浏览器的源代码被开放,有人用"Open source"这个短语来描述这一事件,但起初大多数用户、开发者和公司对这个新概念还是一知半解。1998年4月,著名出版商Tim O Relly召集了一次社区会议,与会人员多是当时开源社区的中流砥柱,包括 Linux社区的Linus Torvalds、Perl社区的Larry Wall、Apache社区的Brian Behlendorf、Sendmail社区的Eric Allman、Python社区的Guido van Rossum、GNU社区的Mich
ael Tiemann、BIND社区的Paul Vixie和Netscape的Jamie Zawinski等。这次具有里程碑意义的会议后来被称为开源峰会(Open
source summit)。会议讨论了开源软件的概念和定义,以及当时开源软件在业界的使用情况和发展方向,并最终决定使用Eric Raymond提议的Open source software一词来统一命名如今OSI所定义的开放源代码软件。会议当晚还举行了一个新闻发布会向记者们分享了会议成果。无论如何,这次开源软件峰会标志着开源运动的开始,它的理念比纯粹的自由软件运动更宽容,因此也受到了更多的支持。从此之后,越来越多的人知道了开源软件,而越来越多的开发人员、用户和商业公司也加入到了为开源软件添砖加瓦的运动之中。开源运动在业界大行其道。
开源软件与自由软件不同,它更注重与软件产业相结合,对商业化更加友好,希望使用各种方式来发展软件本身。开源软件的思想,首先考虑的是如何发展软件,让更多的人来使用软件,而不是先去保证软件在演化过程中的开源性。BSD和Apache许可证本身与GPL等"copy-left"型的开源许可证也有很大的区别,它对软件的派生和再发布的约束十分宽松,这样就大大减小了商业公司在使用与参与开源软件时的顾虑。
广义上的开源运动,一直伴随着上面两种思潮的发展和争论。但同时,这两种思潮都代表了同一种理想主义的主流。无论是保证开源性,还是强调可用性,都是开源软件运动发展过程中所不可或缺的要
素。而无数前赴后继的软件开发者,尤其在深受自由主义和黑客文化影响的高校学生和年轻人之中,开发可以为更多的人所共同使用、学习、改进的软件这种理想主义一直兴盛不衰。
开源软件的现状:
源代码下载开源社区随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、WEB服务器、移动操作系统等各个方面已经成为主流。而且许多企业利用开源软件形成了独特的商业模式。比如谷歌的Android 操作系统,从 2007 年开源发布第一个版本起,到今天已经发展到 4.1 版本,占据了智能手机操作系统一半以上的市场份额,谷歌也通过 Android 操作系统在移动互联网这一新兴行业中占据了领先和主导地位。再比如在服务器端广泛使用的关系型数据库 MySQL,在以开源软件和商业许可并行的模式下,得到了快速发展,并在 2008 年作价 10 亿美金由 Sun 收购(后者又在 2009 年被Oracle 公司以 74 亿美金的高价收购)。相反,以前一直和开源软件做斗争的微软公司,却因为无法快速推出适应市场的 Windows Phone 操作系统,在移动互联网竞争中处于下风。为顺应潮流,微软也开始拥抱开源,比如向Samba项目贡献代码,放弃自己研发多年的大数据项目而选择 Hadoop为其大数据的核心等。
显然,纵观 IT 行业这二十多年的发展,开源软件从黑客的理想之国,已经形成了一股推进计算机及相关行业不停进步的巨大力量。很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运
行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品(如电子相框)中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。
开源软件的优势:
1、降低风险
在当前动荡的市场环境下,组织不应该过度依赖软件公司,因为他们可能正面临生存的困境,每天都有无数的软件公司倒闭,因此选择软件公司的产品,无异于将自己的命运交给了别人。同时,软件公司的产品一向是封闭源代码的,试想一下,如果软件公司在一夜之间突然人间蒸发,你运行的系统就无人维护,
随时可能面临更换系统的境地,如果选择开源软件,可以将这种风险降到最低,活跃的开源软件通常会有源源不断的贡献者维护和更新,而且自己可以获取源代码,完全可以按照自己的意愿进行修改,无需担心某一天突然不到依靠。
2、产品质量更可靠
闭源软件的质量通常与软件公司的开发人员水平息息相关,开发人员的水平通常参差不齐,因此闭源
软件的质量通常也是参差不齐,而开源软件通常是由社区中的技术高手在维护,有时用户自身也可以参与维护,并且开源软件的用户较多,软件存在的bug一般都会被及时发现和修补,产品质量更加可靠。
3、付出少,回报多
削减成本是商业成功至关重要的的因素,bug修复,开发功能和编写文档都会消耗大量的人力、物力和财力,如果选择开源软件,这些事情都有人在默默奉献,不需要你付出什么,但你却可以享用别人的劳动成果,当然你愿意的话,也可以为开源软件做贡献。
4、不花冤枉钱
使用开源软件开发一个产品是值得投资的,可以降低开发成本,并可以快速推出自己的产品,然而,许多组织都希望投放到生产环境中的产品能得到支持,于是诞生了许多提供企业级开源产品支持服务的专业型公司,组织可以根据自身的情况,有选择性地购买需要的服务。如果选择闭源产品,通常会多花钱,买到自己可能用不上的产品和服务。
5、招揽优秀人才
开源社区中充满了大量的优秀人才,他们富有激情,才华横溢,乐意为开源软件奉献,如果你的组织
选择了开源软件,在他们眼中,你的组织充满了魅力,因此要想招揽到优秀的人才一点问题也没有,试想一下,对开源软件有浓厚兴趣的人加入到你的组织,想不提高生产力都难。
6、行业适应能力更强
因为开源软件大多免费的缘故,在中小型组织中迅速得到了广泛使用,这些使用开源软件的组织可能来自各行各业,经过这么多组织的长时间使用,开源软件的适应能力更强,因此无论你的组织属于何种类型,都可以放心使用,相比之下,闭源的软件产品通常用户数量较少,行业适应能力不强,即使软件公司承诺可以定制开发,也会是一个痛苦的合作过程。
7、产品更透明
由于开源软件是由社区在推动,其透明度很好,bug的发现,新功能的提出都是在一个公开的论坛中进行的,你可以随时获取到最新信息,还可以参与进去,开源软件会根据使用者需求不断演变,而不是受限于一家公司的意愿,因此你可以了解开源软件的未来发展规划和方向,其透明度比闭源软件高出许多,组织可以做到心中有数。
注意:
开源软件许可证:许可证即授权条款。开源软件并非完全没有限制。最基本的限制,就是开源软件强
迫任何使用和修改该软件的人承认发起人的著作权和所有参与人的贡献。任何人拥有可以自由复制、修改、使用这些源代码的权利,不得设置针对任何人或团体领域的限制。不得限制开源软件的商业使用等。而许可证就是这样一个保证这些限制的法律文件。开源软件的许可证比较繁多和复杂,对于我们来说,经常遇到的开源许可证大多是GPL和BSD两种,此外还有Adobe 经常使用的MPL许可证。简单来说,GPL许可证具有相当强的传染性,如果你想
要把一份采用GPL许可证的代码经过修改后再次发布二进制版本,那么你同时也必须再次开放其源代码。而BSD许可证则相对宽松许多,它允许对源代码的修改后再次发布时仅包含许可证而不必再次开放源代码,且可以将修改后的[1]版本专为商业用途(如微软的产品中引入了BSD网络部分的源码,修改后则作为专有软件出售)。
1. 从开源软件开发的角度来看,若只是利用开源程序包作为工具来生产与其分离的作品,那么绝大多数开源许可证都是可以的
2. 如果将软件用于商业性发行且不愿意发行自己所修改的源码,那么可以选择BSD许可证,它能使修改保持专有
3. 若希望源码总是自由的,GPL许可证及LGPL许可证是最佳选择(Icebird 注:这里不推荐采用LGPL许可证,LGPL许可证有很大的漏洞,divX从开源突然转为专有就是一例,从此以后,开源软件的参与
者都对LGPL许可证的源码报有相当的戒心,如果希望在开源版本之外能够有一个你自己开发的更强大的商用版本出售,建议采用BSD,这样你自行对其的修改就不必再次公开了)
4. 若想在与其它人共享代码时提供相应的保护,可以选择MPL许可证,该许可证可通过将软件(和任何对它的修改)分为受保护部分和贡献部分,在完全开放的 GPL许可证和封闭的BSD许可证之间架起一座巧妙的桥梁
对于开源软件美国律师协会知识产权分会软件许可证委员会在一份报
告中总结道四个共同特点:公开的软件源代码,同仁间大范围的合作,极少的开发成本,享有宽广的权利。
我们概述一下最广泛使用的几种开源许可协议:
1、BSD许可协议(FreeBSD license、Original BSD license)
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品
2、 2、Apache Licence 2.0(Version 2.0、Version 1.1、Version 1.0)
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。
3、GPL(GNU General Public License)
人们不太容易区分一个软件是否真正开源的根本原因,在于开源研究院认可的许可有60多种。但在这60多种许可中,有一个许可明显主宰着开源世界。迪博纳说GPL(General Public License,通用公共许可协议)是当今开源世界中最重要的许可。根据迪博纳引述的Google所进行的研究,基于GPL的开源代码在所有开源软件中占45%---50%。
我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence 等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人、组织以及商业软件公司开发的免费软件了。
4、LGPL(GNU Lesser General Public License)
LGPL是GPL的一个为主要为类库使用设计的开源协议,被用于一些(但不是全部)GNU程序库。和GPL要求任何使用/修改/衍生之GPL类库的的软件必
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论