代沟
随着 Linux 的使用,开源软件的使用正在蓬勃发展。开源的好处正变得越来越广为人知——软件质量通过同行评审得到提高,如果源代码可用,则未来风险会降低。
开源项目依赖于积极主动、才华横溢的开发人员的贡献。像 Linux 这样的大型重要项目吸引了许多贡献者;一个软件开发工具项目可能会引起各种软件开发人员的兴趣;UNIX 系统专家为互联网工具项目做出贡献。然而,一个用于识别蝴蝶的软件项目可能不会引起太多兴趣,而唯一会为一个公司的应收账款系统项目做出贡献的人是那些为此付费的人。并非所有软件都能从开源中平等受益。
闭源软件的开发将继续下去。正如 Eric Raymond 在《魔法大熔炉》中观察到的那样,一些应用程序(相对于操作系统和实用程序)可能是闭源的良好候选者。应用程序的所有者可能会发现,至少在一段时间内,软件保持秘密和/或可出租比开源更有利。
对于本土商业系统的源代码来说,开源可能是不可取的,因为它泄露了太多关于企业程序和能力的信息。公司可能希望对其业务系统的源代码保密。
应用程序的所有者可能希望保持源代码闭源,以便可以出租(即,为金钱许可)该软件。许多应用程序的开发仅仅是因为有人相信他们可以通过出租它们来赚钱。
虽然开源的好处正变得越来越受到赞赏,但闭源软件将继续被开发出来。
闭源应用程序可以从使用开源组件中获益。
应用程序通常使用预先存在的软件组件。几乎所有程序都使用编译器附带的通用函数库。许多应用程序使用编译器或第三方提供的 GUI 框架来提供前端。一些软件使用专用库来执行统计分析或地图投影等操作。许多应用程序包含或知道在哪里可以找到一个自包含的“组件”,该组件提供复杂的功能,例如数据库引擎或地图绘制系统。
如果第三方组件是开源的,则使用它的风险较小。对于小型公司和个人开发人员开发的组件尤其如此。开发软件组件并靠出租它们赚钱非常困难。人们会想,“我不认识这些人。谁知道他们在里面做了什么?我的应用程序依赖于此功能。” 他们也会想,“如果这些人消失了怎么办?或者找到其他事情做?或者更改组件以至于我无法再使用它?或者不修复我需要修复的东西?” 他们也可能想,“这个组件现在可以满足我的需求。明年呢?如果我想要一些增强功能怎么办?这些人会在意我想要什么吗?” 开源解决了这些担忧。开发人员可以看到开源组件的功能以及它的工作方式。他们始终可以选择自己进行改进(或付费请人去做)。
如果一个组件是开源的,它的所有者就不能出租它。然而,可以在支持服务中赚钱,而最适合这样做的人是开发人员。一个没有信誉出租组件的小公司可能会发现,赚钱的最佳方式是将其开源。
与一个狭窄的应用程序项目相比,为一个组件的开源项目吸引贡献者可能更容易。组件的用户是程序员,他们构成了潜在贡献者的自然池,而狭窄应用程序的用户可能例如是牙医。
如果改进是组件被使用的唯一必要条件,则开发人员可能会有动力改进该组件。使用该组件的公司可能有动力花钱来改进它。
在使用闭源应用程序中的开源组件时,会出现一些担忧。最常用的开源许可证是通用公共许可证 (GPL)。它授予用户修改软件和分发此衍生作品的自由,但前提是(除其他限制外)衍生作品也根据 GPL 的条款获得许可。此许可证确保一件软件的所有用户,即使是修改版本的用户,都拥有查看和修改源代码的自由。自由软件基金会提倡使用 GPL。
根据 GPL 条款许可的组件不能在闭源应用程序中使用,但一些开源组件的开发人员希望看到它们在任何应用程序中使用,无论是开源还是闭源。库通用公共许可证(LGPL,也称为较宽松通用公共许可证)是为这种情况开发的。根据 LGPL 许可的组件可以包含在闭源应用程序中,只要用户可以获得组件的源代码、修改它并重新构建应用程序。
然而,在许多情况下,闭源应用程序的开发人员不能(或不愿意)使用根据 LGPL 许可的组件。商业产品的开发人员和为自己使用而编写软件的公司通常不希望如此迫切地需要任何给定的组件,以至于要屈服于此许可证的限制。
还有限制较少的开源许可证。根据 MIT 许可证条款许可的组件可以被任何人用于任何用途。这种许可使组件在闭源开发中实际可用。开源社区中的许多人认为此许可证具有颠覆性,正是因为它使将开源软件引入闭源应用程序变得切实可行。
编写开源软件的人是黑客——这个社区起源于 MIT 人工智能实验室。
它始于 1959 年,当时技术模型铁路俱乐部的信号和电力小组的一群人获得了访问一台小型计算机 TX-0 的权限。这与大型 IBM 大型机不同,在大型机上,人们提交一叠穿孔卡片,然后等待自己的作业运行。使用 TX-0,人们实际上可以坐在控制台上直接与机器打交道。俱乐部喜欢它。他们喜欢尝试让它做他们想做的事情的挑战,以及最终成功时的力量感。他们从几乎没有任何操作系统的方向开始。他们编写了自己的系统函数和简单工具,并使用它们来构建更好的工具。
这些人是最初的黑客——一群认为编程是世界上最重要事情的人。他们是探险家。他们是一个社群。他们共享信息和想法,并且他们共同相信,如果信息和想法自由流动,每个人都会受益。他们分享了他们工作的成果——工具、实用程序、实验、游戏和笑话。一个人在黑客社区中的地位几乎完全基于这项工作。
人们在 MIT 社区中进进出出。一些黑客转移到其他机构,并通过 ARPA-Net(现代互联网的前身)保持联系。社区变成了一个网络社区,不再有特定的地理位置。随着大学生都可以访问互联网,这个社区发展壮大。互联网成为许多黑客关注的焦点;它的基础设施主要由黑客开发。现在,焦点已转移到 Linux 以及在其下运行的软件。
正如 Eric Raymond 在他的论文《Noosphere 的宅基地》中所描述的那样,黑客文化是一种礼物文化——社区内的地位取决于一个人创造和赠送的东西。开源软件是人们编程(测试和调试)并赠送结果的产物。这项工作大部分是在那些也有带薪工作的人的业余时间完成的。
人们出于各种原因为开源项目做出贡献:对问题着迷、渴望有意义的编程项目、想要参与社区、有机会证明自己或渴望亲自使用新软件。他们继续为社区和文化做出贡献,因为它有效。从未见过面的人,每个人都在做他们想做的事,可以在业余时间创造出色的软件。
通用公共许可证被认为强烈支持黑客文化。对于没有根据 GPL 许可的软件项目,可能很难吸引贡献者。对于涉及根据 MIT 许可证许可的组件的项目,这可能尤其困难。
过去,开源社区的人们是开源软件的主要用户,但这已经改变了。许多新的 Linux 用户不是程序员,他们中的许多人永远不会为开源项目做出贡献。开源开发人员并没有因此感到被欺骗;他们感到被证明是正确的。对于黑客来说,衡量软件价值的最终标准是人们是否觉得它有用。
Linux 对开源运动非常有益。大量的人正在尝试它。更多的人正在听说它。人们正在推动在他们工作的地方使用它。越来越多的人正在了解开源运动及其价值观,并参与到开源项目和开源社区中。社区从开源软件的日益普及中受益,无论这种使用是否直接支持开源开发。例如,当牙医使用 Linux 时,社区会受益。
然而,假设一位牙医和我想要聚在一起编写一个应用程序,该应用程序实现了他绝密的超级账单技术。该技术是商业秘密,因此该应用程序必须是闭源的。现在,假设当我编写它时,我想使用一个开源库来进行统计。如果这使我的账单应用程序成为“衍生作品”,并且我将遇到一堆许可麻烦,我将做其他事情。我不是要派生一个新的统计库——我只是想使用它。如果牙医在 Linux 上运行他的账单应用程序是一件好事,那么该应用程序使用开源部件为什么不是一件好事呢?
使用开源组件的人越多,就会有越多的人认为某些组件需要进行一些小的更改,他们应该为开源项目做一些工作。如果在商业应用程序中使用开源组件,企业会不时地发现花钱请人开发这些组件符合他们的利益。这对开源运动有利。
互联网已经从微小到小型到巨大再到庞大。开源软件的使用也经历了从微小到小型到巨大的过程。开源和互联网之间的相似之处特别有趣,因为这两种文化相互重叠——互联网的基础设施是由黑客开发和维护的。
互联网及其文化可以被视为经历了四个世代
美国国防部将 ARPA 网与其他国防网络连接起来,以支持军事研究。这证明是研究人员交流和共享信息的绝佳方式。对网络的需求增长,但访问权限仅限于计算机科学研究人员、政府雇员和政府承包商的小型社区。一种基于共享的文化得以建立。
国家科学基金会委托 NSF-NET 将大学与五个超级计算机中心连接起来。如果学生可以普遍访问,NSF 将支付校园连接费用。四年制大学的任何人都可以访问网络。一切仍然围绕共享展开;商业用途被提供资金的人禁止。
对网络的需求增加,商业互联网服务提供商出现。互联网的商业用途仍然受到批评(有时甚至受到抨击),但对于为自己的访问付费的个人和企业来说,没有人可以禁止它。重点从共享转移到使用——冲浪、聊天、发送电子邮件、浏览、寻找酷的东西和娱乐。商业用途增加。企业拥有网站的想法从不可靠变得显而易见。最初的文化,其严格的习俗强制执行共享的道德规范,显然正在失去其主导地位。
数百万人使用互联网。你可以做任何你想做的事。严格的习俗已经让位于真正的自由。它正在改变世界。比以往任何时候都有更多的人在互联网上分享。这是大规模的黑客精神。
Linux 最初是一个主要由程序员使用的操作系统。现在,它被各种各样的人使用,并且 Linux 用户中程序员的比例正在稳步下降。这些非程序员大多对黑客文化的传统知之甚少。他们中的许多人仅仅为了赚钱而使用 Linux,而这几乎是可能发生在开源运动中的最好的事情。
开源软件不会在短期内取代闭源软件。人们编写闭源应用程序是因为他们相信可以通过出租它们来赚钱,他们将继续这样认为。公司为自己使用而编写软件,并希望保护其商业秘密。
闭源开发是开源组件的绝佳市场。使用开源组件的公司越多,他们就越会为开源开发做出贡献。
程序员可以在业余时间创建像 Linux 这样的东西是很棒的,但他们也在带薪工作上花费了大量时间。组件开发可能是开源运动入侵公司时间的地方。
