V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
onc
V2EX  ›  开源软件

开放源代码软件运动简述

  •  
  •   onc · 2022-01-11 10:35:56 +08:00 · 1852 次点击
    这是一个创建于 1076 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开放源代码软件运动简述

    本文编写于 2005 年,看到最近开源软件界的问题,就又拿出来和大家分享一下。

    特别是最近自己对开源软件界又有了些新的思考,希望可以在下一篇文章中阐述一下。 本文做了些删节,原文地址: https://github.com/openerserver/Articles/blob/master/2005%E5%B9%B4--%E5%BC%80%E6%94%BE%E6%BA%90%E4%BB%A3%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%BF%90%E5%8A%A8%E7%AE%80%E8%BF%B0.md

    开放源代码软件

    ( open source software,开放源代码软件,简称:Oss 或开源)

    1.前言

    Oss 运动在国外已经发展了很长的时间,经过多年的积累,其影响力已经越来越大。笔者作为一个自由资讯人从 Oss 运动中受益良多,也想将自己的软件项目加入到 Oss 中去。在正式开始自己的软件项目之前,就想先写一篇自己对于 Oss 运动的理解与展望,从而可以指导自己的软件项目计划。可当笔者在收集文章素材时,看到了 Oss 大师 Raymond 的一系列关于 Oss 运动的论文,这让笔者意识到自己新写一篇基本上没有什么必要了,Raymond 在 6 年前就已经通过文章将 Oss 运动的方方面面做了详细的叙述与总结,我现在所能做的就是整理与升华。所以当我站在他的肩膀上,这篇文章就得以新生了。

    本文基本套用了 Raymond 论文中的观点,并参考了大量的相关文章,加入了一些个人的体会,对于 Oss 的各个相关方面作了周到的说明,让大家可以作为一个比较全面的 Oss 参考文档。

    希望这篇文章不仅能指导我自己的思想,为我指明前进的方向,也可以指导所有阅读本篇文章的人。

    2.Oss 运动的由来

    Oss 运动起源于自由软件运动。

    在国外,早期开发软件的有识之士在 21 年前( 1984 年)提出了一个自由软件运动的计划。

    这个计划对于当时或现在这种利益横行的社会来说简直是不可想象的:软件程序员要把他的产品--软件及其代码开放出来,让大家可以自由的使用、复制分发、研究学习。难道这就是共产主义在计算机上的实现吗?

    当然自由软件的出现是有其原因的:从某个方面说软件的代码就代表了软件的核心与根本,在当时的理念下这就是软件商赚钱的生命线,所以大家对于自己公司设计编写的代码都通过版权来严加保护,并且很多人也可以通过对自己编写的代码添加软件版权来去维护并取得个人利益。虽然这种版权计划的初衷是好的(保护与鼓励创作人),但在现代社会中,很多微小的不平衡都会被人们抓住并放大。由于软件版权与个人利益密切挂钩,所以导致了当时太多的软件的开发人员都要对于自己的代码添加软件版权保护,而添加版权后的软件,其他人无法再自由取得软件源代码来学习研究,甚至对于取得该软件也要付出一定的经济利益。软件是一种特殊的实体,它是一种信息载体。在现代社会中信息的传播已经十分的迅速,人们通过获取信息来迅速的提高自己的知识水平,从而给自己进一步的带来各种利益。但是由于软件版权的过渡使用,造成了软件知识方面信息流通的倒退,从而因为几个人的个人金钱利益而影响了所有从事软件行业的人的知识利益。

    因为不满当时大量的软件肆意的添加版权保护从而与金钱挂钩的现象,Richard Matthew Stallman (理查德· 马修· 斯托曼,简称:Stallman 或 RMS )首先发起了自由软件运动( Stallman 要向所有的商业软件开战,让人们可以自由的享有软件)。 自由软件运动的主要项目就是著名的 GNU 项目。由于每个计算机用户都必须使用操作系统,而当时没有免费的操作系统,Stallman 在 1984 年开始了一项宏伟的计划:创造一套完全自由、免费、兼容于 Unix 的操作系统 GNU ( GNU's Not Unix!,GNU 不是 UNIX ,GNU 指一种大型的哺乳动物--牛羚)。

    在这个计划之初,没有人肯来帮助他,Stallman 就自己先花费了近一年的时间来完成了一个 GNU 软件-- GNU EMACS (一个编辑器,类似于一种集成开发环境)。EMACS 的功能很强大,而且可以自由的分发拷贝,很快,EMACS 就到处流传,并且开始有人帮助 EMACS 来添加些新功能、修补错误。渐渐的 EMACS 日益完善,广为人们使用,EMACS 获得了成功。

    由于 EMACS 的成功,在 1985 年,Stallman 成立了一个基金会: FSF(Free Software Foundation ,自由软件基金会,网址:http://www.fsf.org),以用来筹集资金帮助开发 GNU 项目。

    FSF 创立以后,不断接到很多厂商的捐款与赞助,Stallman 开始以较低的工资雇用有理想的软件工程师编写 GNU 项目中的自由软件,他自己是不支薪的。

    在 1985 年 9 月,Stallman 正式发表了著名的 GNU 宣言(GNU Manifesto ,网址: http://www.gnu.org/gnu/manifesto.html),对于 GNU 计划作了更详细的阐述。

    在 1989 年,Stallman 与一群律师起草了广为使用的 GNU GPL ( GNU General Public License, GNU 通用公共协议证书),创造性地提出了"反版权"或"版权属左",copyleft 的概念。

    同时,GNU 项目中的 GCC ( GNU C Compiler ,GNU 的 C 编译器)由于其优越的性能和自由的特点,也获得了巨大的成功。

    到了 1990 年,所有 GNU 计划的重要组件均已基本找到或编写,就剩下了操作系统的内核(内核系统的编写一般极为复杂,需要大量的人力物力财力,当时 Stallman 的 FSF 并没有办法或能力来开发)。

    在 1991 年,芬兰大学生 Linus Benedict Torvalds(林纳斯·本纳第克特·托瓦兹,简称:Linus)在 GNU GPL 条例下发布了他自己创作的操作系统内核,该操作系统内核被命名为 GNU/Linux 或简称 Linux 。这个计划得到了全世界的众多开发者的参与与支持,这个计划做到了过去商业软件认为自由软件不可能做到的事--用分散的开发者、没有严格管理与计划的团队通过互联网,开发象内核系统这么复杂的软件。

    自由软件运动也真正的开始声明远扬。

    但是,同时,Linux 的成功开发却成了自由软件运动的分水岭。

    在商业软件方面,人们看到了自由软件运动中很多好的项目,一些人开始谋求自由软件的商业化,但是 Stallman 的自由软件运动强调商业不能凌驾于自由软件之上,以 GNU GPL 发布的软件在商业经营模式上也不太可能再是过去软件商的制造业模式,这种思想与限制对于当时的软件公司来说是很难接受的,所以一般公司不愿使用和加入自由软件(即使自由软件功能很强大,他们仍然有一定的顾虑)。而在自由软件方面,遍及世界的众多自由软件开发者却没有像 Stallman 那样那么讨厌商业化软件(这毕竟是很多开发者的谋生之道)。所以,有人就开始寻求一种更温和的概念。

    1997 年,美国电脑黑客 Eric Steven Raymond (埃里克·斯蒂芬·雷蒙,简称:Raymond )在他的著作《大教堂与市集》(The Cathedral and the Bazaar)一文中首先提出了开放源代码软件这个概念,并用了一系列的论文加以描述和讨论。

    Raymond 强调的不是完全用自由软件来替代现存的商业软件,而是通过在自由软件、特别是 Linux 的发展过程中所体现出的巨大开发能力来强调这种新式的开发模式-开放源代码让所有人可以参与的开发模式,因为这样可以快速提升程序本身的质量。

    Raymond 的这些论文很快得到了一些大公司的回应:当 Netscape 公司的高层人员读过《大教堂与市集》后,很受启发。在 1998 年 1 月,宣布将它的 Netscape 浏览器(就是 Mozilla 项目的前身,现在著名的 Firefox 浏览器就是 Mozilla 项目的一员)开放源代码。

    在 1998 年 2 月,Raymond 成立了开放源代码促进会(网址:http://www.opensource.org),提供 Oss 的定义与认证。

    1998 年 8 月微软意识到要应对 Oss 运动对自己的冲击,使其工程师编写了著名的万圣节文档。而后,这份文档被泄漏并公开。该文档描述了微软对付 Linux 和其他开放源码计划的卑鄙手段和险恶用心,整个世界一片哗然。

    1999 年,Sun 、HP 、IBM 、SAP 等公司宣布开始使用或销售 Linux 。大公司开始加入到 Oss 运动中。

    开放源代码软件运动开始兴起。

    Oss 运动可以说是自由软件运动的分支,但两者的差别并不明显。一般而言,自由软件运动更多的是基于政治及哲学思想(有时被称为所谓黑客文化)的理想主义运动。而 Oss 运动则是对自由软件运动的另一种解释,它让自由软件变的更为温和,更能为人们所接受。

    而实际上,Oss 的提出,可以说是向一些商业公司变相的解释了自由软件的优点,让他们可以消除顾虑,从新的观点来看待自由软件,也以新的方式来利用自由软件; Oss 也确实给了很多商业公司以机会来利用自由软件的各种优点,从而向另一种商业模式去转变。很多的公司从开放源代码中看到了一些不一样的世界,他们开始将自己的产品或协议开放出来,因为这样做确实可以给他们带来更多的利益。同时,商业公司的加入又壮大了 Oss 运动的声势,加快了 Oss 运动这个雪球的滚动速度,Oss 运动已经开始变得越来越大、越来越难以阻挡了。

    在 2004 年,Netscape 公司的浏览器终于又借助开源的动力卷土重来了。Firefox 成功的发布了 1.0 版,并以其优越的安全性能,在浏览器市场上又开始重新抢夺微软 IE 的市场份额。

    一点不和谐的声音: Stallman 并不喜欢 Oss 这个词,他认为 Oss 的概念冲击了自由软件,并给了很多厂商以机会滥用自由软件,这违背了自由软件最初的精神。在他的哲学中,他认为这是不对的。为此自由软件的支持者与 Oss 的支持者曾经相互的争论,对于这些争论笔者认为我们不需要太多的关心,时间会证明一切(我们应该像 Linus 那样,成为一个实干家,而不是无聊的理论家)。现在,毕竟 Oss 可以说是总结了自由软件的所有优点,所以现在,我们就只讨论 Oss 。

    下面我们就来更具体的介绍一下 Oss:

    3.Oss 项目的原始动机

    (部分内容引申自 Raymond 《开拓智域》)

    Raymond 在他的《开拓智域》一文中提到了关于最初开源作者的出发点,他用了一个词来形容这些开源作者:玩家。这个词真是恰到好处的形容了大多数开源作者的心态,玩家心态。在 90 年代的前期及中期,开源项目的出发点一般与利益不沾边,那么是什么促使开源作者来做项目的呢?就是这种玩家心理。和玩游戏一样,作者不期求有物质上的利益回报(在西方人们的生活水平普遍较高,特别是从事软件业的人,他们不必一定为了生活而工作),而是期求一种精神上的满足。(笔者本身也是一个十足的玩家,有很多时候发现深陷这种精神中很难跳出,所以就想探究玩家的心理,找到玩家痴迷的症结。)这可以说是 Oss 项目最根本的原始动机:精神满足。

    实际上玩家心态是一个很值得研究的现代人的心理,人们在物质极为丰富的今天,精神享受成为了追求的目标,因为它比较难以得到。而电子游戏(游戏本身是一个很古老的运动,电子游戏继承过去游戏的特点,又成功的利用了电子信息的优势)又是出现于这个年代,它之所以能迅速的盛行,我想关键点在于它制造了一种环境,可以让你轻易的获得精神满足。

    具体点说:它首先给你营造一种视听与互动的环境,让你的大脑进入一个所谓的调试状态中,然后你就可以开始动作,在很快的时间里,游戏会根据你的动作来作出相应的回复,而这个回复一般有两种属性:好、坏。你的大脑也就是说可以在作出判断后的一段时间立刻获得正确或错误的判断回应。然后,大脑为了能一直得到好的判断回应就不断的力图改进自己的行为,而得到好的判断可以激起或者保持大脑的兴趣(因为好的判断一般意味着你可以进入下一关,也就是可以避免总是接收同一种类型的判断;或者好的判断就是可以引起你的兴奋),让这个动作可以继续长时间的进行下去。当然,不要以为大脑是很容易的欺骗的,一种简单的测试环境如果让大脑轻易掌握其中诀窍以及所有的秘密的话,也是很难骗取大脑长时间的注意的;但是如果环境能长时间的让大脑感到无法侦测其中的奥秘,但是还不断的给予你的某些动作以好的评价以鼓励引导你,或者可以得到其中的某个奥秘,但是无法得到其他的,大脑也就容易产生上瘾的行为,你就会深陷其中;如果很长时间得不到游戏对于你动作的好的判断,大脑也会对这种行为失去兴趣。总之,这是一个平衡杠,当找到一个合适的支撑点,就会产生难以估量的效果,让你全身心的投入。(对于游戏厂商来说,如果用户能投入游戏中,但又在合适的时候再将用户推出,让你继续购买新版本的游戏,游戏厂商也就可以持续获利。这绝对是可以实现的,只要牢牢的抓住某个平衡点。但是如果让用户长期的沉浸在一种活动中,而不让他被踢出,对这个人会产生某些负面的影响。这是由于,因为已经产生一定的精神依赖,所以会在对各种行为的比较后更愿意选择加入游戏的行为中,虽然游戏的短期回报都基本已经获得,但如果游戏设置了超长期的回报,玩家为了这个已知的长期目标,会大量耗费时间在精神游戏中,这是与现实无益的,会伤害到玩家的很多其他实际利益,对游戏厂商来说是涸泽而渔的行为。:)说远了)

    我们讨论游戏是因为:在游戏的盛行给我们的答案中,我们可以得到一个心理行为的样板。"为了维持你的兴趣,要不断的得到心理回报。"在开源项目中,这是一个极为重要的因素(这就是为什么 Oss 项目要早发布、常发布的原因之一)。 如何能让你的项目持续的健康发展,在没有物质回报的前提下,就是首先保证这种心理回报。 你也许说,我们现在是在讨论开源的问题,怎么与心理问题扯上关系了。我要说明的就是心理问题是 Oss 原始动机的关键所在,因为过去、甚至直到现在大部分的开源项目的领导者与参与者所追求的是精神满足--驾御之乐无穷。

    一般,为了让心理满足最大化,Oss 项目的出发点都比较高。大部分从事 Oss 项目的人一般是在软件行业中能力很强的人,他们自身的要求就都比较高,他们提出的项目一般都很有意义,意义越大他们才更容易获得更大的精神满足;意义不大,影响力不大的项目一般也不会持久。所以 Oss 项目中有太多的项目都是杀手级的,是任何闭源软件公司都会惧怕的。

    当然对于 Oss 的玩家而言,心理满足的同时他们也是可以获得一定的物质回报的。参与 Oss 项目是可以给玩家带来更好的名声与地位,从而可能会有其他的物质回报产生。但在玩家的原始动机里,这不是主要因素,毕竟这种回报的时间一般太长,无法激起玩家的兴趣。

    每个好的 Oss 项目最初可能都搔到了开发者本人的痒处,这也是玩家的动机之一。软件世界是那么的不成熟,我们所使用的软件也都是那么的不完美,所以就会不断的有人出来革新。仅依靠软件公司来满足所有的软件需求我想那是不现实的,公司的目的明确就是盈利,而为了这个目的很多的软件项目也许就会放弃掉,而且公司的运转一般相对缓慢。一个人或几个人成立一个 Oss 项目,来完成一个软件,这种模式自由灵活,基本不受限制,可以说是先期 Oss 的一个立足点吧。

    4.Oss 项目的优势

    总的来说 Oss 的最大优势是软件信息的共享,这有助于整个软件产业的快速发展,这也是 Oss 能拥有无数的拥护者与巨大动力的根源。但是在软件业现存的还有闭源软件,也就是传统的软件开发模式,而且闭源软件的开发可以说仍是当今的主导。所以这里我们具体讨论相对于闭源软件项目,Oss 有什么样的优势:

    创新能力的分享: Oss 项目的一大特点。从过去来看,一个 Oss 项目中的很多创新可能都不是来自于原作者或者来自于一个作者,而是来自于关心这个项目的所有的人,他们会对项目提出一些很有见解的意见,这时,只要 Oss 项目的领导者能够及时发现并采用,项目就会充满创新。按照 Raymond 的话,这就叫做开拓智域。 企业的动力在于创新,当然这种创新可以来源于公司内部,也可以来源于外部。如果我们能开放的接受来自外部的创新,那么我们的创新能力将被有效提高。

    风险均摊: 由于一个 Oss 项目可以拥有众多的自由开发者,所以公司的开发风险被显著降低,同时公司的投资也相应的减小,公司不必为了一个项目而雇佣大量的开发人员,特别是软件测试人员。一般公司需要雇佣几个项目的领导者,负责项目的基本协调工作,或者是主要的编程工作,而剩下的就是如何来开拓智域,让大家加入到项目中来。

    软件信用提高: 由于开放源代码,顾客不必担心如果公司倒闭这个软件会怎么办。他们会相对更加信任这个软件,他们一般会认为自己也是有能力修补软件的错误、甚至添加软件的新功能。

    软件质量的提高: 一些研究已经显示:开放源代码软件与功能相似的商业软件相比具有更高的可靠性。由于 Oss 的更加有效的开发模式,更多的独立同行对代码和设计的双重审查,以及大部分 Oss 作者对自己作品的极大荣誉感,使得 Oss 项目的质量都一般相对较高。 最近 Openbsd 的作者批评 Linux 内核代码的质量太差,也从反面证明了这一点,正是由于可以查看源代码,大家可以相互比较,所以软件的质量才有大幅度的提升的机会。

    透明度与安全性的提高: 闭源软件有很多"阴暗的死角",隐藏着许多 Bug 。这些 Bug 一般需要公司的大量测试人员不断进行各种测试来找出。而对于 Oss 项目的软件,他们的测试人员可以说是所有的软件使用者,所以 Bug 的查找工作变得相对较易。由于源代码的开放,所以安全公司的专家也可以很容易的通过查看代码的方式来找到软件的安全问题,从而立刻修补。

    强大的统一性: 从过去的经验来看,一些开放源代码的项目是如此成功,以至于:在商业方面,其竞争者无法存活;在开源设群里,没有人愿意再去与这些项目竞争,因为对玩家来说实在太难,大家最多是在这些成功的项目中添加自己所需的附加功能。

    便利的宣传与推广: 采用 Oss 的项目比闭源的软件更容易获得大众的瞩目,宣传与推广也会相对的容易。

    5.Oss 项目的盈利

    (大部分条目引申自 Raymond 《魔法大锅炉》)

    有人说:信息应该是免费的。我们认为这是绝对不对的。在当代,信息是通往巨大价值的钥匙。 由于长久以来 Oss 项目的原始出发点及自身特性,Oss 在盈利方面的能力还未能有效开发,没有十分成功的盈利案例(原创的开源项目得以巨大的经济成功)。因此对于 Oss 项目的盈利模式确实还有待于进一步的实践。

    但是通过对 Oss 项目的研究,我们可以肯定,以下几点是已知的 Oss 盈利方式:

    奉送代码,赢取服务与市场,锁定顾客: 在这种模式中,Oss 项目的市场定位就是服务。

    这是红帽和其他 Linux 发行商所采用的模式。他们卖的其实并不是软件代码本身,而是持续的技术支持服务。由于操作系统本身的复杂特性,其服务是极为重要的,所以当客户选用了他们的操作系统,也就离不开他们所提供的技术支持服务。

    Oss 创造市场的能力极为强大,尤其是对那些天生就作服务的公司来说更是如此。

    一个非常有教育意义的例子是 Digital Creations 公司,它是一个创建于 1998 年的 web 站点设计机构,专长于复杂的数据库和事务站点的开发。他们的主要工具,公司的知识财产--皇冠上的明珠,是一个对象发布系统,它曾经有过几个名字,现在被称为 Zope 。当 Digital Creations 公司寻找风险投资时,风险投资商仔细的估计了他们的预期市场份额、人力资源和那套工具后,就建议 Digital Creations 开放 Zope 的源代码。

    从传统的软件工业标准来看,这绝对是一个疯狂的举动。常规的商业学校认为象 Zope 这种核心知识财富是一个公司的掌上明珠,是在任何情况下也不能放弃的。但是那位风险投资商从以下两个相互关联的角度来考虑问题:

    一个是 Zope 的真实核心资产实际上是它雇员的大脑和技术。风险投资商看到了对 Zope 系统开放源码可以为 Digital Creations 赢得真正财富--它雇佣的技术员工会产生巨大的广告效应。风险投资商认为:使用 Zope 的客户会认为雇用象 Digital Creations 公司里的专家会比自己开发自己的 Zope 技术更加高效。

    第二个是把 Zope 作为一个创造新市场的标准而不仅仅是一个秘密武器将可以产生更多的价值。为了看清这一点,比较以下两种情况。在通常情况下,Digital Creations 将 Zope 保留为秘密武器。让我们假定它是一个很有效的武器。结果,公司可以在很短的时间内交付高质量的软件--但是没人知道这个秘密武器。满足一个客户是容易的,但是却很难建造一个客户群体。如果将 Zope 开放源代码,就可以很容易的建立一批客户群。

    Zope 的一个负责人曾经非常公开的确认了他们的开放源代码策略"开启了许多其它方式无法开启的门",客户的迅速增长确实反应了这种情况。所以 Digital Creations 公司迅速发展起来。

    另一个例子是 e-smith 公司,这个公司出售定制的开放源代码的 Linux 的 Internet 安全服务器。他们的一个负责人描述了 e-smith 迅速扩展的免费下载服务,他说"大多数公司都要考虑软件的盗版问题,而我们把它看作一个自由市场。"

    软件免费,销售内容: 一种试探性的商业模式。就象一些股票信息订阅的服务。产品的价值不在客户端软件,而在于提供客观的可靠的信息。因此我们开放所有的软件,但是出售我们通过该软件所提供的信息内容。而且,当有黑客把软件客户端移植到新的平台上或者以不同的方式去扩展软件时,我们的市场就自动扩展了。

    附加产品: 在这种模式中,我们出售开放源代码的附加产品。在低端市场,出售杯子和 T 恤衫等等附加产品;在高端市场上,出售专门编辑并出版的文档和书籍。O'Reilly 集团是一个附加产品公司的很好的例子,它出版了很多优秀的开放源代码软件的参考资料。而且,O'Reilly 还实际上雇用和支持了一些著名的开放源代码黑客(例如 Larry Wall 和 Brain Behlendorf ),并以此提高它在市场上的声望。

    失败的市场产品: 利用 Oss 将一个快要失败的产品继续维持在市场中,从而为直接产生收入的专有软件来创造或维持一种市场位置。也就是不将 Oss 项目作为赢利点,但是作为一个辅助器,帮助公司在其他方面获利。在大多数普遍的情形中,开放源代码的客户端软件可以带动服务器软件的销售,或者可以增加门户网站的访问量,从而取得更多的广告收入。

    Netscape 公司在 1998 年开放了 Netscape 浏览器的源代码时,就是使用了这种策略。当时他们浏览器的商业收入只占总收入的 13%,而且在 Microsoft 开始发布 Internet Explorer 后 Netscape 的市场份额还在下降。IE 强大的市场营销(及其捆绑策略后来成为反托拉斯案的核心问题)迅速的吞噬了 Netscape 浏览器的市场份额,造成了 Microsoft 试图垄断浏览器市场,并利用微软强加给用户的 HTML 的"标准",形成逐步把 Netscape 赶出服务器市场的态势。

    而后,通过开放仍然被一些用户所使用的 Netscape 浏览器的源代码,Netscape 有效的阻止了 Microsoft 垄断浏览器的可能性。Netscape 期望开放源代码可以加速 Netscape 浏览器的开发和测试,并希望能降低 Microsoft 的 IE 的发展速度,阻止它独自定义 HTML 标准。

    开放代码,降低成本: 这种模式是针对硬件制造商的(这里的硬件包括从以太网或其他外部设备直到计算机系统的所有东西)。市场的压力迫使硬件公司编写和维护软件(设备驱动程序、配置工具甚至整个操作系统)。但是软件本身并不是利润中心,它是一项开支--通常是一项重要开支。 在这种情况下,开放源代码是一种很好的策略。由于没有赢利上的损失,所以没有负面影响。硬件制造商却可以获得:奇迹般膨胀的开发人员队伍,对用户需求更加快速、灵活的反应能力,并且通过同行检查而获得的更好的可靠性,而且可以免费得到其他系统的移植。这种做法还可以在很大程度上提高客户对公司的信任度,因为客户的技术人员可以花费了更多的时间根据自己的需要定制代码,来提高硬件的工作水平。

    现在收费,未来免费: 在这种模式下,我们以封闭的软件许可证发布软件的可执行文件和源代码,但是包含一个有关封闭条款的期限。比如,我们可以写一个软件许可证,保证该软件发布一年以后或开发商终止开发后,这个软件将在 GNU GPL 的保护之下。

    在这种模式下,客户可以保证产品能够根据他们的需要定制,因为他们可以得到源代码。产品的将来也是得到保证的-软件许可证保证了如果创始公司失败后,开放源代码社区仍能够接管该产品。客户对产品的期望值就会相对较高。又因为销售价格和数量是依赖于客户对产品的期望值,创始公司就可以享受到比以封闭源代码许可证发行的软件更优厚的收入。而且,因为老的代码是在 GPL 保护下的,所以它可以得到同行的认真检查、排错和添加其他小功能,这样可以为原创者减轻 75%的维护负担。

    这种模式被 Aladdin 公司成功的采用了,它编写了流行的 Ghostscript 程序(一个 PostScript 解释器,它可以把 PostScript 翻译成许多打印机的内部语言)。

    软件免费,销售品牌: 一个试探性的商业模式。我们开放一项软件技术,来让所有的人开发与使用,我们将公司作为该软件技术的权威认证机关,然后当用户需要的时候,使用保留的测试包或该技术的兼容标准对用户的软件进行认证,最后卖给用户一个品牌认证,以保证用户对这种技术的实现和其他具有这种品牌的产品相互兼容。

    以上就是几种已知的盈利模式,我们再来强调一下盈利的关键点:将你的 Oss 项目做成一类服务。

    因为软件行业的本质应该是一个稳定的服务性行业。过去甚至现在很多人都认为软件行业和制造业一样,都是先生产而后销售,售后的服务问题一般做为一种优惠、免费或收取少量的费用,总之盈利点在于制造而后销售。我们认为那是由于过去软件行业的垄断、软件商的夸大宣传所造成的错误印象。从实际来说,整个软件行业的大部分人都在从事定制开发,专门维护与更新这样的工作,只有少数的公司在像制造业那样的开发软件。软件由于其自身的性质,需要不断的改进与更新,所以需要持续的服务要比简单的制造来的更为重要,更能符合用户的要求。

    所以我们要转变认识:通过持续的服务来盈利。这应该说是一项长久的更好的盈利模式,并且伴随着互联网的高速发展,服务也是越来越容易部署。像国内一些游戏商,他们经营的在线游戏的模式就是服务模式,他们可以说取得了巨大的成功,从中我们也可以看出将项目做成服务模式所潜在的巨大盈利点。

    总之,服务是对于整个软件业的一个定位。抓住这一点,再能夹带着互联网,IT 经理们就会知道自己该怎样做才是最好的盈利方式。(那时你会希望将你的软件传播的更广,盗版软件卖吧、自由的下载吧,让所有的人都依赖你的服务,谁也无法抢走你的顾客,只要你能给用户提供好的服务。你的信誉你的品牌才是你的根本。)

    6.如何领导一个 Oss 项目

    在讲述如何领导 Oss 项目之前,首先我们要清楚,什么样的项目利于使用开放源代码模式:

    • 可靠性 /稳定性 /可扩充性非常关键的项目
    • 项目对用户控制他的事务非常关键
    • 项目用来创建一个公共计算和通讯基础结构
    • 项目的关键方法(或等价功能)是公共工程知识的一部分
    • 项目的设计和实现的正确性不能被轻易验证,只有依靠同行检验

    除了以上几点,其实还有很多种项目可以开放源代码,只要你愿意,没有什么是一定的。:)

    接下来,我们作为一个 Oss 项目的领导者,以下是在项目的运作过程中必须了解的:

    (大部分条目引申自 Raymond 《大教堂和市集》)

    1. 好程序员知道该写什么,伟大的程序员知道该重写(和重用)什么。 一个项目的本身,建立在其他人现有项目的基础上,会帮助你很多。所以在项目的初期,仔细的了解一下整个现有的相关软件,特别是开放源代码软件,对你来说也许可以找到更好的起点。 例如,Linux 并不是从头开始写 Linux 的。相反的它从重用 Minix (一个 386 机型上的类似 Unix 的微型操作系统)的代码和思想入手。最后所有的 Minix 代码都消失或被彻底的重写了,但是当它们在的时候它为最终成为 Linux 的雏形做了铺垫。

    2. 计划可以被抛弃,必要时,你要这样做。 在项目的初期,寻找各种基础的时候,很容易遇到已经开始在一个框架下工作了,但是又发现了更好的框架。 继续呢还是换一个? 如果换一个的话,可以得到一个更好开发基础,但是要扔掉那些已经有的代码。最好的决定就是:换一个。 因为,你常常在第一次实现一个解决方案之后才能理解问题所在,第二次你也许才足够清楚怎样做好它,因此如果你想做好,准备好推翻重来至少一次。

    3. 早发布、常发布、听取客户的建议。 这点在项目早期十分的关键,可以说是项目能否在没有资金利益的情况下持续下去的关键所在(我们已经在"Oss 项目的原始动机"一章中讨论过)。

    4. 在你发布项目以前你必须有一个可工作的系统。 如果在你发布项目以前,你没有一个可工作的系统,而仅仅是大量的描述、或者与用户不断的讨论这个系统,那么项目的成功几率将会很低。不要停留在项目的想象中,一定要实际的开始编程,项目的目标会慢慢的清晰,当有了一个可工作的系统的时候,项目才可能持续下去。项目的 Web 站点可以同步或延后进行制作。

    5. 如果你有正确的态度,一切的事情会慢慢好起来。 当你有正确的态度时,你努力为项目而工作时,你所领导的项目目标会渐渐的清晰,你的工作会渐渐的有序,慢慢的你可以预期项目的进展速度,你自己也会清楚项目还有哪些缺点。

    6. 想出好主意是好事,从你的用户那里发现好主意也是好事,有时候后者更好。 这个也是项目的关键所在,不要坚持自己来做所有的创新工作,创新是一件相当劳累的工作,而且不是凭借努力就可以得来的,让别人站在和你同样的高度,然后让他们在他们自己的角度来看问题,这样会更加容易的找到创新点。 能够提出卓越的原始设计思想对项目的协调人来说不是最关键的,但是对他来说绝对关键的是要能把从他人那里得到的好的设计重新组织起来。 在 1997 年 8 月的 Perl 会议上,Larry Wall 坐在前排,当 Raymond 讲到这个观点时,他激动的叫了出来:"对了!说对了!哥们!"所有的听众都哄堂大笑起来,因为他们知道同样的事情也发生在 Perl 的发明者身上。:)

    7. 充分理解互联网在 Oss 项目中的重要性。 互联网是 Oss 项目的物质媒介,通过互联网你才可以把许多的头脑连接在一起,行成一个网格计算。你的工作就是网格计算的中枢,在不强迫任何节点的情况下,协调好这些计算,如果可能,那就将网格中每个点的能力发挥到最大,但是首先你一定要好好利用互联网,例如:web ,maillist ,bbs ,irc ,其他各种 im 工具,这是前提(甚至为了更好的连接头脑,设计更加出众的工具)。

    8. 在 Oss 项目中用户的作用: 把用户当做协作开发人员,这样可以快速的改进代码并能高效的调试。 如果有一个足够多的 beta 测试人员和协作开发人员的基础,几乎所有的问题都可以被快速的找出并被一些人纠正。 如果你象对待最宝贵的资源一样对待你的 beta 测试员,他们就会成为你最宝贵的资源。 一个技巧平庸的 UNIX 程序员可以在 Linux 及许多 Oss 项目中做出许多伟大的事。

    9. 大部分关心项目的人可能对项目没有什么帮助,所以不要盲目乐观。 在项目一开始的时候,也许立刻会有很多人来信说"我很想帮忙,请告诉我需要做什么?"可是最终这些人没提供什么帮助,不管他们表现的有多么积极。真正有帮助的人是那些给你的第一封信便说:"嘿,我修改了这个,这儿有一个补丁。"但是这样的人是少数的。人们就是喜欢说,而不是喜欢做,很久以前就是这样了。

    10. 在编写代码与设计方面我们需要注意的是: 聪明的数据结构和笨拙的代码要比相反的搭配工作的更好。 如果你采用的语言一点也不象是图灵那样完备,严格的语法会有好处。 当写任何种类的网关型程序时,多费点力,尽量少干扰数据流,永远不要抛弃信息,除非接收方强迫这么作! 最好的设计不是再也没有什么东西可以添加了,而是再也没有什么东西可以去掉。 最重要的解决方案可能来自于你认识到你过去认识到问题的概念是错误的 任何工具都应该能以预想的方式使用,但是一个伟大的工具提供你没料到的功能。

    11. 你一定要谦虚。 作为项目的领导者,没有谦虚的美德,项目将很难进行下去,谁也不会自愿和一个不谦虚的人一同工作。

    以上就是领导一个 Oss 项目的所有基本注意事项。 以前,我们经常说"一人兴邦",这在 Oss 项目中更是如此。一个普通 Oss 项目(靠玩家心理形成的)的生命期一般不会很长(计算机业的发展太迅速了),如果没有一个有能力的人来领导,项目也许会很快的消亡,当然如果有商业的介入,事情也许会很不一样。但是,不管怎样,一个领导者在 Oss 项目中是极为重要的。

    顺便一提:如果你对一个你的项目失去兴趣时,你最后的责任就是把它传给一个能干的后继者。

    7.Oss 项目中的几个疑点

    软件专利权: Oss 项目中没有软件专利吗?在 Oss 项目中,我们是不提倡申请软件专利的,即使申请,我们也希望在您申请后自动放弃你的权力。 因为,实际上软件专利权与 Oss 是基本相违背的。当你开放源代码的时候,就意味着欢迎大家来学习或使用你的软件,你的软件不存在什么秘密;而当你申请软件专利权后,就意味着你的软件是绝对秘密的,是受法律保护的。软件专利权会极大的伤害 Oss 运动的发展。不过在中国还没有这样的法律,中国的软件保护只适用于著作权法或者计算机软件保护条例(这是我们的福音阿,不过中国的软件保护有些像国外倾斜的趋势)。

    软件专利一般是用来鼓励创新的,有很多企业担心做 Oss 项目后,企业就无法通过创新来得到应得的利益。我们说一般的像点子或方法类创新是容易被模仿的,在中国还无法对这类创新申请专利,所以做成开源让别人学习没关系,别人不过在跟着你走而已,让别人来学习你,你会有很多其他方面的优势可以利用;像独特的数学算法、超级复杂的软件如果你有能力自己开发,那你申请专利自己开发好了,你会得到你的利益(希望你可以在得利后及时得将成果回报给世界,那样在道德上大家会称赞你)。

    随便一提:各国的软件专利由于其体制并不完善,所以都存在很多的问题,主要是软件专利的使用阻碍了各方面的交流与进步,但由于利益关系,这种在专利方面的阻碍在现阶段是很难得以解决的。我们说企业的动力在于其创新能力,但也不是创新一次就永远的吃老本,我们需要不断的创新。那些通过故意积累专利来获取利益的企业在道德上我们说是极为不道德的(虽然这是企业的本质)。

    (在编写本文的时候,欧洲议会正在通过软件专利权法,这项法案的通过会伤害到所有的欧洲 Oss 项目。希望中国以后不要通过这种法律,希望中国能成为 Oss 的乐土)

    什么时候可以不使用开放源码: 很多时候。放源代码也并非灵丹妙药,各种 Oss 的运作模式还没有更多的检验以证明什么。对于一个大公司而言,本身就有足够的能力去开发任何动力,使用不使用 Oss 可能在于一些附加的意义,例如可以通过 Oss 来间接打击对手,或者在 Oss 社群中取得好名声,从而为自己做宣传等等,当然,大公司可以采纳散落在互联网上的 Oss 项目,这样也许比自己去创新来的更有效率;对于小公司或个人,只要你愿意,你可以随意选择(笔者推荐使用 Oss ,前提:将盈利模式转变为服务型)。毕竟 Oss 不会适应于所有的项目,虽然它可以适应于绝大多数的项目。

    注意,由于 Oss 运动的历史原因,如果你作为一个纯商业的项目运营,也许得不到开源社区的欢迎,开源设群会下意识的抵制你的 Oss 项目。特别是你只从开源设群中榨取智域,而没有相应的回报,更是不会有好的结果。所以 Oss 项目如果掌握不好,商业运营还是比较困难的。

    GNU GPL: 在过去,很多人都惧怕 GNU GPL ,因为它是自由软件的核心,大家认为采用 GNU GPL 会伤害到自己的利益。其实 GNU GPL 也是 Oss 所认证的软件许可证的一种,也就是说 GNU GPL 并不违背 Oss 的原则。而且,与您的考虑相反,GNU GPL 还会保障您的利益。采用这个许可证意味着任何在您软件的基础上做出的修改与更新您都有权力获得。所以 GNU GPL 抵制了某些人的不道德思想。如果您对此还不甚满意,你可以在 GNU GPL 的基础上再添加些附加条款,有很多 Oss 的软件许可证都是在 GNU GPL 的基础上加工而成的。也许您还在担心有些不道德的人在用了您的代码后并不将代码回馈,这样的事情确实存在,不过这时您可以拿起法律的武器来控告他,在国外就有这样的例子。现在有专门的版权检测工具-- IP Amplifier ,而且很多公司已经开始小心的查看自己是否使用了 Oss 项目的代码,以免被控告(网址:http://developers.slashdot.org/article.pl?sid=05/05/04/0210214&tid=117&tid=8)。

    不过由于采用 GNU GPL 的项目一般为非营利性项目,所以对于侵犯自己版权的行为,一般也只是道德上的谴责,因为大家也没有钱和精力去诉讼对方。

    8.著名的软件许可证( License )

    Oss 项目意味着开放软件源代码,但是开放源代码并不意味着没有软件许可证。在惯例中,每个 Oss 项目都会有至少一个软件许可证,甚至 Oss 项目中的每个源代码文件都有相应的软件许可证。因为软件许可证可以告诉别人这个软件的实际使用原则:可以自由的拷贝分发,或者必须付费,或者当你使用该软件的源代码时必须保留一些声明等等。

    在整个 Oss 运动中软件许可证是一个至关重要的角色。对于国内软件保护意识不强的人而言,这点是必须搞清楚的。

    在 Oss 项目中的软件许可证采纳了著作权的概念,也就是强调 Oss 项目的软件是拥有著作权的,然后通过软件的著作权许可来实现软件许可证中的许可,这也就是 Oss 项目软件许可证的法律立足点。著作权是国际上通行的法律,所以 Oss 项目的软件许可证可以说是会受各个国家的法律保护的。

    各种软件许可证的比较:

    GPL: 这是自由软件基金会最早发布的软件许可证,也是现在开放源代码所使用的最广泛的许可证,它约占了所有 Oss 项目 50%以上的份额。 它的主旨是要使采用 GPL 许可证的软件永远的不被侵犯,从而保护所有 GPL 软件的使用者的权益。它要求所有采纳该许可证的软件必须让源代码自由的使用与传播,并将这个要求延伸到所有使用 GPL 许可证的源代码的项目中去。换句话说,就是你可以以任何目的来自由的使用有 GPL 许可证的源代码,但是只要你使用了,你就必需将与其相关的整个项目的源代码全部遵循 GPL 许可证。GPL 许可证可以说是一个超级纯净体,只要与它沾边,你就也必需纯净。从现在的结果来看,GNU GPL 也确实让越来越多的软件变成 GPL 许可证。GPL 保证了使用者的自由,但是对于开发者,GPL 的要求也是最多的。 不过这个许可证的流行对于自由软件基础的建立有很好的帮助,GPL 版权体系消除了经济动机的程序分歧。例如,它降低了小群人为了将 Linux 做为长期经济利益从而产生分歧的动机,因为由 Linux 所延展的工作必须可以通过某些渠道让别人可获取。 中文译文网址: http://www.linuxforum.net/books/libgpl.html

    LGPL ( GNU Lesser General Public License ): GNU 较宽松公共许可证。它是在 GPL 版权基础上所做的修订版。这个版本特别适用于自由软件的库程序。它目的是为了让自由软件能够占领更多的软件领域,特别是商业市场。 因为过去的 GPL 版权,对于商业软件来说是十分不可用的。它要求商业软件如果采用了 GPL 版权的代码后,必须将整个商业软件的代码全部开放。LGPL 出现的目的就是为了让商业软件也能采用自由软件的源代码而不必将自己的代码开放,来进一步的扩张自由软件的影响力。可以看出自由软件人也认识到,当一个软件的使用率相当高的时候,这个软件也就会成为事实上的业界标准。也就是说为了让自由软件更加的成功,自由软件必须要被广泛的使用。 网址: http://gnu.freehostingguru.com/lgpl/

    BSD License: 比较松散的软件许可证。在附加开发中只需要保留本软件版权声明即可。BSD 保证了开发者的自由,是对开发者要求最少的许可证。 中文译文网址: http://www.freebsd.org.cn/snap/zh_CN/copyright/license.html

    Apache License: 简称:APL 。是唯一能够同时和 GPL 和商业授权相兼容的软件许可证。目的是使 APL 的软件代码得到最大限度的利用。例如:使用或修改 APL 授权的源代码不用公开您本身的源代码。APL 保留自己的商标。 网址: http://opensource.org/licenses/apache2.0.php

    MPL ( Mozilla Public License ): 可以说是代表的商业公司的开源策略。允许免费的发布与修改,但要求修改后的代码版权归软件的发起者,这样发起者和组织者具有更优越的地位。 网址: http://opensource.org/licenses/mozilla1.1.php 或者 http://opensource.org/licenses/mozilla1.0.php

    Artistic License: 使用这个版权的最著名的例子为 Perl Artistic License ,为什么要说这个?本人是 Perl 爱好者:)。 这个软件许可证保证作者保持对软件进一步开发的控制。例如:Artistic License 表示如果有人使用了 Perl 的原代码來开发他们自己的程序,他必須明白地表示他所发表的软件并不是 Perl 。所有更改的部分都必须明白的指出來,而且可执行文件不能和被更改的程序同名。如果有必要的話,原代码必須和更改过的程序一起被散播出去。 原文网址: http://www.perl.com/perl/misc/Artistic.html

    9 .常用到的 Oss 项目

    2000 年至今开放源代码运动可以说是快速的发展,已经有很多好的项目涌现出来。项目实在太多,这里也不去全部列举(如果全部列举,再写一个月我也写不完阿),只是将笔者日常所用的加以列举。(如果大家愿意,可以建立一个 wiki 来做这个工作)

    Linux: 著名的操作系统内核程序。可以说是开创了 Oss 近 10 几年局面的元老功臣。 当前版本:2.6.12 网址: http://www.linux.org/

    FreeBSD: 著名的 BSD 操作系统。特点是 tcp/ip 协议的实现十分的稳定,常作为互联网上的服务器使用。著名的是微软的 hotmail 系统采用 Freebsd 做为服务器的操作系统。 FreeBSD 由于其采用的软件许可证与 Linux 不同,而且 FreeBSD 已经完全摆脱了版权法律纠纷,有很多人都认为 Freebsd 可以得到更广阔的应用。 当前版本:5.4 网址: http://www.freebsd.org/

    从上面的评测,大家可以看到,很多现存的开放源代码项目其实有很多已经走到了自己的顶点,只有少数还是有很强的潜力。但这并非是开放源代码项目没有前途,而是老一批的项目已经基本完成了他们的使命,他们已经为整个开放源代码界打下了坚实的基础。

    在全世界,总是不断的有新的更有前途的开放源代码项目产生,人们在开放源代码中总是在不断创新,即使在没有商业利益的前提下。

    从现在的实际情况可以看出,开放源代码界与闭源的纯商业软件开发可以说是齐头并进的,最终的输赢还是未知。但是开放源代码界是从后面赶上的,它的动力是巨大的,从本质上说,个人认为谁能让信息最快的传递谁就将获胜(世界发展的趋势就是信息的高速传播,而不是信息控制在某些公司或国家的手中),而这应该是开放源代码的优势,所以笔者就编写了这篇文章为开放源代码助阵,也是为自己加油吧。

    10 .编后话

    由于花费了太长的时间来编写这篇文章,大概近一个月,在文章的后期有些感觉提不起劲了。不过即使某些部分在文章中没有太详细的说明,在附录中还是添加了足够的相应连接,让大家可以充分理解开放源代码项目的方方面面。

    说到最后,好像还没说 Oss 的弱点在哪里!我想 Oss 的弱点就在于还有很多的未知,特别是在商业方面(没有特别成功的 Oss 商业作基础,Oss 就无法成为一种商业上的行业惯例,Oss 也就无法真正取得最后的成功)。所以这还是崭新的领域,等待大家去淘金阿。

    4 条回复    2022-01-12 10:35:05 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2022-01-11 10:55:00 +08:00
    其实道理很简单,只是人通常只会看见自己想看的一面。(又或者,如果把道理说透了,就没有意见冲突,反而没有“网络吵架”的趣味性,因此有的人会故意说些偏激的意见来引战)
    tomczhen
        2
    tomczhen  
       2022-01-12 08:42:01 +08:00 via Android
    自由软件不是共产主义。
    NeoRush
        3
    NeoRush  
       2022-01-12 08:52:17 +08:00
    感谢分享
    icyalala
        4
    icyalala  
       2022-01-12 10:35:05 +08:00
    自由软件运动或开源运动都是具有政治属性的,搞清这一点才能理解为什么有这么多争吵。
    相对 Linus 的温和来说,我有些反感 RMS 的宗教感。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1119 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:59 · PVG 01:59 · LAX 09:59 · JFK 12:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.