免费使用者不需要支付任何费用 当然,并非所有人都会对项目产生贡献。并非每个人都需要贡献。有一些人只是拿来主义,使用软件,但不向其他人提供任何回报。虽然有一些授权方 式是禁止这种行为的,但是其他的授权方式是不限制这一点的。为什么呢?因为免费使用者不会增加其他使用者的成本。事实上,他们甚至会给我们带来好处,虽然 这并非他们有意为之。 复制软件实际上是免费的。当然,复制需要一定的成本。但是大多数时候,这个成本是非常低的,我们几乎感觉不到它的存在。可能我们用来判定人们 下载一个文件所需要成本的工作本身的成本是大于下载成本的。这意味着人们复制我们的自由软件不会给我们带来任何明显的损失。它也不需要很大的运营成本;它 们不会消耗任何有限的资源。 但是这里所有的免费使用者都代表着使用比其他软件更好且更便宜软件的人。并且这意味着他们的成本更低,并且这会转换(通过竞争魔法)为更低的价格。人们由于不需要重复开发开源社区已实现的功能而节省下的金钱可以用在其他方面 — 某些新功能。 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,通常也是开源的。 无论从何种角度分析,开发工具成为开源占据的一个较大领域都不是一种巧合。开发人员习惯于开发编程工具。他们开发这些工具不是为了赚钱 — 只是为了能使用这些工具。共享这些工具使开发人员能够利用其他人的合力,更快地实现更好的工具。(请参考 “普遍性的胜利” 中关于这个问题的讨论。) 开源已经改变了软件开发人员的日常工作,而其中一个原因是开发人员很可能将开源模型推广到他们所开发的其他软件上。我们知道它的作用;我们每天都使用它来完成工作。年长的开发人员还体会过没有开源工具的日子是非常难过的。 |