哲学与奇思妙想
自由和开源软件不仅仅是一种计算方式,更是一种生活方式,对吧?或者,它只是一种获得酷炫免费物品的方式?或者,它是对抗极权政府、社团主义/重商主义统治的终极保险?或者,也许它是一个工具包,形成企业赖以建立的共同文化基石?也许不是——我感到困惑。
实际上,这种困惑对于开源领域的新手来说并不罕见。人们最初到底为什么要免费发布他们的软件?为什么会有人想使用开源软件?这些问题与选择发行版有什么关系?顺便问一下,为什么有些发行版会去除火狐浏览器的标志,或者不包含播放 DVD 或网络视频的功能?
有时在生活中,哲学决定现实,而不是相反,而至少部分情况是这样的一个领域是自由和/或开源操作系统的打包、设计和发行。
后来成为开源运动的事物诞生于六七十年代的激进主义,由理查德·斯托曼等极左准马克思主义无政府主义者、埃里克·雷蒙德等客观主义理想主义者以及政治/哲学光谱上其他地方的色彩鲜明的人物阐述。早期黑客文化中产生的理想主义和紧张关系继续影响着整个社区,并影响着一些最大的科技公司的商业模式。即使哲学没有影响,仅仅是到处存在的免费软件的数量也已变成现代计算宇宙的 DNA(例如,微软在其 Windows 网络堆栈中严重依赖 BSD 代码)。Linux——也许部分原因是发明者林纳斯·托瓦兹声明的意识形态中立性,部分原因是其更广泛的普及性——看起来只不过是孕育了许多主要发行版的不同哲学派系的战场。有些人甚至大声争论我们都喜欢的操作系统是 Linux 还是 GNU/Linux(说到这里,斯托曼阵营的各位可能要开始写仇恨邮件了)。
在这个所谓的盲目消费主义时代,很难相信像哲学这样神秘的东西会影响您的计算机功能,但事实就是如此。实际上,哲学在 Linux 发行版的设计中起着重要作用的几个不同领域——其中一些来自上述的紧张关系,而另一些则来自更实际的范式考量。要理解 Linux 发行版为何以现在的方式组合在一起,了解这些轴线会有所帮助。
这些哲学上的差异直接影响发行版的设计决策,从而导致了 Linux 发行版的三个主要类别。
第一类是自由发行版,它遵循斯托曼及其阵营提出的哲学。此发行版不接受任何受专利限制或商业软件,并且可能不包括根据 LGPL 或 Mozilla 公共许可证等许可证发布的混合软件。自由软件运动最初兴起于 20 世纪 70 年代和 80 年代的黑客文化中,当时拥有计算机的人几乎完全是程序员和工程师。随着商业软件随着个人计算的兴起而出现,斯托曼及其同伙开始关注他们作为用户(过去这个词的含义比现在多得多)和程序员的权利,因此他们创立了 GNU 项目,该项目最终旨在组装一个完全自由(如言论自由和免费啤酒中的自由)的操作系统。由非营利自由软件基金会阐述并最终体现在 GNU 通用公共许可证中的 GNU 哲学,非常巧妙地利用版权来颠覆信息的中心化控制。
自由发行版有时非常致力于自由软件模型,以至于它们会去除例如火狐浏览器的商标化艺术作品,并用更通用的作品取而代之,以避免不得不处理商标法律问题或其他可能使整个发行版的许可复杂化的问题。Fedora Core 和 Slackware 是遵循此哲学的发行版的主要示例。
第二类是商业发行版,受到第一阵营的诸多诟病。这种发行版利用了 GNU GPL 允许商业打包(只要源代码也可用)以及利用 GNU 软件与各种商业和准商业程序一起创建发行版的事实,该发行版试图达到与竞争商业操作系统相同的水平,并且往往旨在占据相同的空间。这些发行版通常会捆绑专有工具,或带有系统管理工具的专有覆盖层,并且通常会在通用专有许可证下获得许可,并注明包含的大部分软件是 GPL、LGPL 或其他自由许可证,但专有工具和软件不受传统的开源思维的约束。因此,在修改或重新分发操作系统时,需要谨慎。SUSE 是目前可行的商业发行版。
第三个主要类别是混合发行版,其方法往往非常务实,而不是在意识形态上倾向于自由软件运动或商业操作系统。这些发行版在很大程度上倾向于自由/开源软件,但仍然包含(捆绑或通过轻松下载的附加组件)专有字体、编解码器和其他法律性质模糊的好东西(例如 DVD ripping 和解密软件),这些东西通常不包含在商业发行版中或无法用于商业发行版,除非自行编译。这种类型的发行版是最近才出现的。在 20 世纪 90 年代末和 2000 年代初,发行版的打包方式要么是商业软件,要么是自由软件 + 支持,并在计算机商店的软件盒中出售。互联网泡沫的破灭和宽带的广泛普及,再加上 DMCA 造成的法律问题,催生了对发行版的需求,这些发行版既能提供自由软件的好处,又能提供商业软件的功能,同时还能使发行商免受与专利侵权或规避版权相关的法律问题的影响。因此,这最后一种类型已成为最受欢迎的类型,尽管其他两个类别肯定仍然存在。Mandriva 和 Ubuntu 都牢牢地属于这一类别。
许可哲学之间的斗争并不是唯一有助于塑造发行版的问题。还存在计算模型的问题。Sun 微系统(最初名为斯坦福大学网络)过去常常认为“网络就是计算机”。由于 Linux 源自 System V UNIX——通过其对伯克利软件发行版 (BSD) 所做创新的依赖——并且 UNIX 一直是一个以网络为中心的操作系家族,因此某些或大多数 Linux 发行版会遵循这种以网络为中心的哲学是有道理的。分时计算和带有新外壳的分时计算(即云计算)是以网络为中心的发行版的主要范式。另外两个是基于集群的计算和远程运行在中央服务器上的哑终端(两者在科学和商业环境中都很有用)。某些 Red Hat 版本是专门为这种计算模型量身定制的。
另一方面,我们有桌面发行版。这是个人计算革命的操作系统。它在本地存储操作系统和所有用户数据(而以网络为中心的系统更喜欢相反的方式)。这些发行版通常是通用的,包括一系列可以满足几乎所有需求的软件,从设置家庭 Web 服务器到运营小型企业,从玩游戏到 Web 浏览和文字处理或制作播客。桌面发行版是 Linux 发行版中的瑞士军刀。Ubuntu、SUSE 和 Mandriva 都展示了这种方法的实际应用。
您可以通过查看文件系统结构来了解您的特定发行版的早期传承。您的软件包管理器是否将软件安装到 /usr/local/* 或 /usr/*?如果是前者,您的发行版可能最初是为办公环境设计的以网络为中心操作系统。如果是后者,您的发行版可能已被设计(或者在某些情况下,已被重新设计)为以桌面为中心。
唉,有些事情是瑞士军刀无法胜任的,在过去的四年中,为了解决桌面发行版在不同特定用途方面的缺点,出现了几种定制用途的发行版。其中最明显的是工作室发行版,专为高需求环境中的实时音频和视频制作而定制,但也存在针对防火墙、Web 服务器和笔记本电脑的定制发行版,以及针对教堂、行动团体、黑客和破解者以及祖父母(即无法将其机器视为电器以外的任何东西的用户)的市场特定发行版。
超越定制发行版领域,有一个完整的定制 Linux 发行版领域值得特别提及:Live CD。Knoppix 是这里的先行者,从那时起,这个领域就爆炸式增长。使用 Live CD,您几乎可以在任何硬件上运行 Linux,包括您最常用的程序(如果一个 Live CD 没有,很可能另一个会有),而无需触及机器的硬盘。Live CD 对于诊断、测试发行版是否能与您的硬件良好兼容,或者将熟悉的环境带入敌对领域非常有用(例如,在拜访您不希望发现您喜欢访问 dolphinsex.com 纯粹是为了研究,同时撰写您最新的关于水生哺乳动物之间跨物种爱情的浪漫史诗的亲戚时)。
如果不提及嵌入式发行版——Linux 和衍生操作系统(例如 RockBox 和 Android)的版本,这些版本旨在在手持设备、网络设备、NAS 服务器以及消费者喜欢使用和黑客喜欢重新利用的数十种其他小工具、玩具、工具和机器上运行,那么对不同方法的讨论将是不完整的。其中一些您可以在网络上找到下载,但更多的是在制造各种设备的各种公司内部创建和使用,并且通常包含大量专有代码以与设备的固件交互。
发行版对其自身进行分类的第三个轴线与您如何回答“谁的工作是管理系统?”这个问题有关。
Linux 的架构将系统功能与用户访问隔离——这是 Linux 被证明对病毒和蠕虫具有非凡免疫力的主要原因。在经典设置中,我将其称为办公室管理,这意味着只有 root 帐户才能安装和删除软件、修改系统设置、加载和卸载内核模块以及更改硬件。用户帐户可能仅仅使用软件并访问由该特定用户生成或与其他用户共享的数据文件。这仍然是最常见的设置,它在小型办公室、家庭办公室和家庭环境中很有用,在这些环境中,多个用户将定期访问给定系统。
但是,笔记本电脑和上网本通常不需要这种严格的隔离,因为用户几乎总是系统管理员。那些面向此市场和单用户桌面的发行版根据家庭管理模型运行——也就是说,为了消除必须单独登录 root 的负担,许多现代发行版默认情况下不启用 root 帐户。相反,主用户也是系统管理员,并且只需提供密码即可执行管理功能。Ubuntu 及其衍生版本默认使用此方案,尽管它们可以轻松转换为更经典的管理方法。
最后一种主要的管理范式最常见于嵌入式系统和设备中。这些小工具,例如您可靠的蓝色 Linksys 路由器,通常是无头的,并且通过 SSH 或(更常见的是)通过易于理解的 Web 界面从主系统远程管理。
发行版倾向于沿着的最后一个轴线并不完全是哲学上的,但它仍然是一个真实的考虑因素。如果您要组合一个发行版,您的最终用户是谁?
为黑客组装的发行版默认情况下会安装大量安全审计和编码工具,也许还会安装一些黑帽工具,只是为了好玩。这些实用程序几乎总是可以在其他发行版上找到,但很少默认安装。Slackware 的目标明确地针对这一人群。
另一方面,为最终用户设计的发行版可能会安装一些游戏、办公套件、一两个媒体播放器和一些小玩具,但总的来说,它的目标是不让用户不知所措。为用户提供一种运行良好的工具和一个良好的软件包管理器,让人们根据需要填补空白。小巧的占用空间和防呆设置是这里的关键。Xandros 和 Linux Mint 是这种类型的目标成功地走向极致的主要示例。
高级用户完全是另一种动物。这些用户希望能够一直摆弄系统,直到他们的专业知识用尽为止,并且一种工具用于一项工作永远不够。毕竟,您上次见到完美的工具是什么时候?高级用户想要拥有一切,并且知道如何从他们的系统中榨取最后一点功能。他们想要一个高度优化、很少(甚至从不)崩溃的操作系统,并且他们可以在不必弄脏双手的情况下控制到进程级别。为高级用户设计的系统往往既光滑又颓废,配备了会让大多数最终用户爬进紧身衣并为他们的妈妈哭闹的工具。工作室发行版,例如 PlanetCCRMA 和 64 Studio,往往属于此类。
管理员是最后一种主要的用户类型,为这些用户设计的发行版往往功能强大但缺乏花哨的功能。它们也往往在最终用户永远不敢涉足的环境中运行,例如服务器农场、渲染集群和数据中心。
Linux 发行版的过多可能会让任何人的眼睛都变得呆滞,而且(特别是对于 F/OSS 世界的新手来说)很容易将发行版设计的多样性归咎于仅仅是难以驾驭的、政治化的黑客文化,他们有太多的时间而没有理智。现实情况略有不同。上面概述的轴线划分了发行版打包者必须权衡的主要设计考虑因素,并且您在每个轴线上放置图钉的位置通常也会对您想要支持的硬件类型、您是否以及何时会发布内核源代码、您是否随附模块化内核、您将使用哪种软件包管理器以及您将如何管理围绕您的产品涌现的社区产生连锁反应。
同样,理解这些考虑因素可以帮助使 F/OSS 领域看起来不那么像战场或垃圾场,而更像它真正的样子:一个丰富的生态系统,有点像丛林,不同的设计不断演变以服务于不同的经济和生态位,始终充满有趣的实验——其中一些实验取得了巨大的成功。
Dan Sawyer 是 ArtisticWhispers Productions (www.artisticwhispers.com) 的创始人,这是一家位于旧金山湾区的小型音频/视频工作室。自 20 世纪 90 年代末以来,他一直是自由和开源软件的热情倡导者。他目前正在播客他的科幻惊悚片 Antithesis 和他的短篇小说集 Sculpting God。他还主持“The Polyschizmatic Reprobates Hour”,一个文化评论播客。作者联系信息可在 www.jdsawyer.net 上找到。