开源时代,第 1 部分: 准备好了吗?

小卒过河 发布于 2011/06/11 09:22
阅读 255
收藏 0

由于我长期从事开源方面的工作,所以有时候人们就问我,开源软件何时能够成为商业软件的一种可行替代方法。我的回答是“至少在 10 年以前就已经能够替代商业软件了”。这个问题已经不是关于我是否能够在日常生活是使用开源软件;真正的问题是,如果没有开源软件,我能够做这样多的事情 吗?我一个手机运行 Linux®;另一个手机运行的是包含大量 BSD 代码的操作系统。这两个手机主要是面向使用 gcc 进行编译的开发人员的。

这里特别说明一下:当我提到“开源”,我指的是由开放源码促进会(Open Source Initiative,OSI)(见 参考资料)所定义的内容。大部分时间,我实际上并没有详细研究正式的检查清单。和其他著名的目录类似,我看到它时我就会理解。如果您能够获得源代码并且可以自由地修改代码,那么它很可能就是开源的。

本文是使用一个运行在开源内核上的开源编辑器编写的,并且将会使用开源的邮件客户端和邮件服务器,通过运行 Linux 的无线路由器发送给编辑。

开源已经出现很长时间了。即使您所处环境是非常“封闭的”,您在日常工作中也会有许多机会可能用到开源软件,通常您都感觉不到它们的存在。毕竟,这些是息息相关的。

在本文中,系列文章的第一部分将介绍开源软件的成功,我将概括介绍现在开源软件的真实繁荣现状。这其中包含两个方面:一是具体的开源软件,二是底层的开源原理。这两个方面均广泛地渗入到原本视为对开放性和共享性有明显抵触性的市场和文化领域。

开源在一开始好像违背了市场运作的预期方式。既然软件销售明显是一个大型且成功的行业,为什么人们会白送软件呢?这个问题的答案是它在经济上更有优势,这也是通常选择开源软件的原因。

自由与免费

软件是 “自由的”(libre)还是 “免费的”(gratis),这两种说法通常是有区别。也就是说,软件是不需要支付购买费用,还是您可以获得源代码并对其进行自由修改?开源指的是后者。然而,由于开源意味着自由复制,所以开源软件本身没有太多的商业销售。

您会发现许多公司通过销售打包、绑定和配置好的开源软件或其上运行的服务而获得大量的收益,但是软件本身是不收取费用的。如果它需要收费,那么人们也可以只购买一个副本,然后自由地进行复制传播;这会在经济上造成巨大的压力。

这是一个有趣的效果。在开源解决方案特别流行的市场领域,人们更难销售商业产品。在很久以前,人们曾经花很多钱来购买网页浏览器,但是这已 经是过去式了;网页浏览器现在免费了。您可以为许多用户开发一个比 Firefox 好很多的浏览器,但是要想从这个浏览器上赚得相当的开发费用是很难的。(此外,由于主流操作系统都包含了自由浏览器,这种效果更为明显了。)

普遍性的胜利

人们热衷讨论普遍性的悲剧。对于那些由于某些原因而不了解这句话来源的人而言,可以参考这里的概括。想象一个工业前时期的小村庄,其中有一个 共用的草地。当然,每个人家里都有一只山羊。(这就像一个反面情景喜剧一样,每一个都藏有一只山羊。)现在,每个人都可以选择将山羊放牧到属于他们自己的 草地上,或者选择随意放牧山羊(普遍性)。如果将山羊随意放牧到任意位置,那么山羊会吃得更好。那么您赢了!但是如果 每个人 都将山羊放牧到任意位置,那么最终草地会被破坏而变成一个荒地,那么所有人都输了!

出于某些原因,人们有时会预测出关于白送软件的一个共同结果:所有人都使用自由软件,但是没有人会贡献,而最终它将消失。但是事实证明这并不是个大问题。这种情况并没有发生。相对,人们相互协作,开发出许多人可以使用的优质软件。

石头汤

让我们看一个更复杂一些的故事:有一个骗子发明了著名的“石头汤”,他告诉人们,使用他的这个特殊的石头汤食谱,每个人只需要使用极少的食物就能够烹饪出丰盛的一餐。

您会发现,许多软件都不是用于商业销售的。它们是由于公司需要使用它来完成工作而编写的。所以他们会计划花费时间和精力来开发这些软件。因此,他们并无意 销售这个软件,也无意将它产品化;他们对这方面没有兴趣,因为这并不是他们的业务,而且它也不太可能产生收益。所以资金只会投入到内部的基础架构,使他们 更具生产力,但是,最终没有出路。

如果我有 15 万美元的预算来开发一个内部使用的软件,而其中一个工程师说通过使用一些免费软件,他能够将成本减少到 5 万美元,那么我很可能会采用这个软件。现在,要记住:我不计划通过这个软件赚钱,即不会销售它。我只是需要他来完成我的工作。所以我并没强烈的意愿去拥有 这个软件,而且即使我以前拥有这个软件,其他人也可以使用它。但是我可能会发现,如果我将修改贡献回社区,那么我保持本地修改更新的成本会更低。这意味着 所有人都在帮我免费地修改软件。

我们刚刚改造了石头汤故事。需要这个软件的公司都可以花费较少的投入,获得更好的功能,并且在这个过程中不会损失任何东西。而且,它还会增加 推广声誉(想象一下 Linux 贡献者清单;人们热衷看到他们的名字列在这个清单上),所以将一个开源项目工作提交管理层并非难事。

免费使用者不需要支付任何费用

当然,并非所有人都会对项目产生贡献。并非每个人都需要贡献。有一些人只是拿来主义,使用软件,但不向其他人提供任何回报。虽然有一些授权方 式是禁止这种行为的,但是其他的授权方式是不限制这一点的。为什么呢?因为免费使用者不会增加其他使用者的成本。事实上,他们甚至会给我们带来好处,虽然 这并非他们有意为之。

复制软件实际上是免费的。当然,复制需要一定的成本。但是大多数时候,这个成本是非常低的,我们几乎感觉不到它的存在。可能我们用来判定人们 下载一个文件所需要成本的工作本身的成本是大于下载成本的。这意味着人们复制我们的自由软件不会给我们带来任何明显的损失。它也不需要很大的运营成本;它 们不会消耗任何有限的资源。

但是这里所有的免费使用者都代表着使用比其他软件更好且更便宜软件的人。并且这意味着他们的成本更低,并且这会转换(通过竞争魔法)为更低的价格。人们由于不需要重复开发开源社区已实现的功能而节省下的金钱可以用在其他方面 — 某些新功能。

NASA 在 Mars Rover 中使用了开源软件。那么 NASA 对社区的回馈贡献是否重要呢?如果在您在美国交税,那么就不重要;您已经得到折扣了。这些钱是他们不需要花费的,并且属于他们的预算范围。(事实上,他们 确实有向社区贡献代码,这也是他们应该做的。但是即使他们没有这样做,我们会从他们使用开源软件的决定中受益。)

开源:不可或缺

在这里,如果您是一位软件开发人员,我几乎可以肯定,不使用开源软件您是无法完成日常工作的,而即使您可以不使用开源软件,您可能会很麻烦。如果您使用网络基础架构(如互联网),您不可能不使用开源软件。以下是一些证明开源软件不可或缺的例子。

编程工具

开源软件应用最广泛的领域之一就是编程工具。以下是最近十几年我用来编写代码的语言清单:

  • awk
  • C
  • C++
  • ECMAScript
  • Icon
  • Java™
  • Lua
  • Objective-C
  • Perl
  • PHP
  • PostScript
  • Python
  • Ruby
  • shell(/bin/sh 和同系语言)

对于大多数人而言,它们的共同点是什么?上面每一种语言都有相当完整的开源实现。请注意:每一个都有。这个编程工具清单的选择是非常好的。其中包括脚本语言和编译语言,有您可用来编写内核的语言,也有您可用来编写视频游戏的语言。

如果用在现代软件中,这似乎显得有些奇怪,但是它通常适用于需要使用某种脚本化功能来开发自有脚本语言的适度通用程序,它们一般是非常有限且问题多多。现在,在一个程序中只嵌入 Lua 或 Python 等程序是非常普遍的。它们是自由的,授权宽松,并且它们非常灵活。

类似地,许多编程语言以外的开发工具也广泛地以开源方式出现。虽然肯定也有一些商业编辑器,但是其中有一些是非常不错的,我认识的大多数开发 人员都会至少使用一种开源编辑器作为他们的主要工具。(我选择的是 nvi,我觉得它比一直存在的 vim 更好用和更熟悉一些。)编译工具,如 make 和 Ant,通常也是开源的。

无论从何种角度分析,开发工具成为开源占据的一个较大领域都不是一种巧合。开发人员习惯于开发编程工具。他们开发这些工具不是为了赚钱 — 只是为了能使用这些工具。共享这些工具使开发人员能够利用其他人的合力,更快地实现更好的工具。(请参考 “普遍性的胜利” 中关于这个问题的讨论。)

开源已经改变了软件开发人员的日常工作,而其中一个原因是开发人员很可能将开源模型推广到他们所开发的其他软件上。我们知道它的作用;我们每天都使用它来完成工作。年长的开发人员还体会过没有开源工具的日子是非常难过的。

参考实现与基础架构

TIFF 图像标准提供了一个开源参考实现。这意味着其他公司就没有理由再实现一个不兼容的实现;因为拥有这个已证明兼容的实现是免费的。这是一种保证格式可靠性和可用性的非常有效的策略。

提供具有完整源代码和宽松授权方式的规范参考实现的趋势使事情变得更简单。过去,极不兼容的文件格式实现是非常普遍的。(您仍然还能看到一些格式,其官方规范引用了一个特殊的历史实现,但是该实现没有源代码。)提供了参考实现的格式和协议更容易被采纳和传播。

当然,这也是产生最广泛采用的协议族的原因。

采用互联网创建的方法

由于戈尔先生的出现,开源软件已经成为互联网创造的主要及基础部分。BSD TCP/IP 协议及相关工具已经广泛应用于简化软件开发周期。从 NCSA 发布的 httpd 和 Mosaic 开始,构成互联网(和现在的万维网)的这些工具的大部分都已经是开源的。

开源是基础架构的候选者,顺理成章;您希望得到开放性,您希望有许多人来检查缺陷,并且使用这些软件来降低开发成本也是很重要的。而可能最重 要的是,开源在帮助您自由实现互操作性方面提供了很大的帮助。因为互操作性是网络工具的一个主要功能,它不是次要问题,所以这是非常有吸引力的特性。

开源对互联网影响是很大的。特别是,OpenSSL(及具体的工具,如 OpenSSH)的影响是巨大的。如果没有一个开放自由的实现,SSL 可能已经成为一个用于制造 “市场分化” 的工具,这意味着可能成为一个商业优势,而试图阻止人们进行安全传输。但现实是相反,它得到最广泛的应用。(而且,正如 Firesheep 开发人员所介绍的,它还应该 更加 广泛地使用。)

并非完全开源,而是另有目的

最后需要指出的是,有一些 “开源” 并不是正确的,而明显是由开源触动的。例如,Civilization IV 游戏的源代码已经向用户开放,用户可以对它进行修改和重新设计。id Software(著名的 Quake 和 Doom 的开发人员)的游戏预计最终会发布源代码,并采用 GPL 授权方式。

这些较老的游戏实际已经到了发展末期了,抛弃商业因素是它们赢得下一批玩家的一种非常好方法。这是一种由开源社区塑造的态度。

开源能够帮助人们认识到从某个时刻起您不再需要通过源代码保密来获得经济上的成功。请继续阅读第 2 部分内容,我将介绍一些允许人们通过开源软件赢得收益的业务模式。

原文:http://www.ibm.com/developerworks/cn/opensource/os-changeworld1/index.html

加载中
返回顶部
顶部