战争正在打响。什么时候不是在打仗呢?但我在这里不是在谈论一场物质战:我在谈论一场关于意义的战争。这场特殊的战争是一场关于“开源”含义的斗争。
人们出于许多原因组织成团体。这个故事始于一个名为“GNU项目”的组织的故事。它始于1983年,这是Usenet上的初步公告。我挑出了四个重要的段落:
从这个感恩节开始,我将编写一个与Unix完全兼容的软件系统,名为GNU(Gnu‘s Not Unix),并将其免费分发给所有能使用它的人。时间、金钱、程序和设备的贡献是非常需要的。我认为金科玉律要求,如果我喜欢一个程序,我必须把它分享给喜欢它的其他人。我不能凭良心签保密协议或软件许可协议,为了能继续使用电脑而不违反原则,我决定把足够的自由软件组装起来,这样我就可以不用任何不免费的软件了,如果我得到捐款,我也许可以全职或兼职雇几个人。薪水不会很高,但我正在寻找这样的人,对他们来说,知道自己在帮助人类与金钱一样重要。我认为这是一种让有志于工作的人能够将全部精力投入到GNU工作的方式,使他们不必再以另一种方式谋生。
谈论这篇文章有很多不同的方式:它包含了各种各样有趣的东西。但现在,我想谈谈这里的动机。主要有两个方面:第一,生产软件工件。第二个是大问题:需要产生工件,因为现有的工件与一组特定的值不兼容。
“意识形态”这个词是个棘手的词,但让我们用这个来自维基百科的定义:
意识形态是个人或团体持有的规范性信仰和价值观的集合,而不是出于纯粹的认识论原因。
GNU项目的形成是为了根据一种特定的思想来生产软件:共享软件。我不是在这里争论这个项目是否实现了这个目标,或者这个目标是好是坏。我的观点是,GNU项目的起源是由一系列规范信仰和价值观特别推动的。
两年后,自由软件基金会将成立,以支持GNU项目,并促进自由软件的概念。自由软件是与GNU项目的思想相一致的软件,自由软件的定义于1986年2月创建并发布。以下是该定义:
我们名下的“自由”一词不是指价格,而是指自由。第一,复制程序并将其重新分发给邻居的自由,这样他们就可以像您一样使用它。第二,改变程序的自由,这样你就可以控制它,而不是它控制你;为此,必须向你提供源代码。
从那时起,自由软件的定义已经扩展到四点。您可以在这里阅读当前的定义。
[t]“开放源码”一词的现代含义最初是由自由软件运动中的一群人提出的,他们批评“自由软件”一词所隐含的政治议程和道德哲学,并试图重新构建话语,以反映更具商业意识的立场。此外,术语“自由软件”的模棱两可被认为阻碍了商业采用。这群人包括克里斯汀·彼得森、托德·安德森、拉里·奥古斯丁、乔恩·霍尔、萨姆·奥克曼、迈克尔·蒂曼和埃里克·S·雷蒙德。彼得森在加利福尼亚州帕洛阿尔托举行的一次会议上建议“开源”,以回应网景1998年1月宣布的Navigator源代码发布。第二天,Linus Torvalds给出了他的支持,Phil Hughes在Linux期刊上支持这个术语。
在这里,我们看到了开源运动的创建。如果你更喜欢主要来源,这里是埃里克·S·雷蒙德(Eric S.Raymond):
具体地说,我们遇到的问题是“自由软件”这个术语本身,而不是概念。我已经确信这个词必须去掉,这个词有两个问题。首先,它令人困惑;“自由”一词非常含糊(自由软件基金会的宣传不得不不断地与之搏斗)。“免费”是不是意味着“不收费”?或者它的意思是“任何人都可以自由修改”,或者其他什么意思?其次,这个术语让很多公司类型感到紧张。虽然这在本质上并不会让我感到困扰,但我们现在有一种务实的兴趣,那就是让这些人皈依,而不是对他们不屑一顾。现在我们有机会在不损害我们的理想和对卓越技术的承诺的情况下,在主流商业世界取得重大进展-所以是时候重新定位了。我们需要一个新的更好的标签。
不久之后,“开放源码倡议”(Open Source Initiative)成立了。作为FSF的一面镜子,OSI将支持推广“开源”一词及其背后的意识形态。与自由软件定义一样,开放源码定义也是根据Debian的自由软件生产指南创建的。
再说一次,我们有一个按照意识形态路线创建的组织。但在这种情况下,略有不同。OSI网站的一个较旧版本说:
与会者决定,是时候抛弃过去与“自由软件”相关的说教和对抗态度,并严格基于激励网景的同样务实的商业案例理由来推销这个想法。
与会者认为,促使网景发布代码的务实的商业案例理由表明,这是一种与潜在软件用户和开发人员接触的宝贵方式,并说服他们通过参与一个积极参与的社区来创建和改进源代码。与会者还认为,有一个单一的标签来标识这种方法,并将其与哲学上和政治上关注的标签“自由软件”区分开来,这将是有用的。
要让意识形态运动持续下去,他们需要在新成员中重塑自己的价值观。在一段时间内,FSF和OSI在这方面做得很好。这两个运动,自由软件和开放源码,产生了许多软件,并获得了许多新的皈依者。但是…。发生了一些事。
我不太清楚事情是怎么发生的。我认为懒惰的答案是“GitHub!”。我确实认为GitHub发挥了作用,但我认为答案比这复杂得多。我个人认为性别扮演着巨大的角色。但那是一篇不同的文章。不管它发生的原因是什么,确实发生了一些事情。
在此过程中,开源遇到了许多运动都面临的问题:运动成员不再理解最初创建运动的意识形态。
如果你随便问一个开发人员“开源”对他们意味着什么,你不会经常听到“遵循开源定义的软件”。如果你问他们“自由软件和开放源码软件有什么不同”,你会经常听到“这不是一回事吗?”或者“你可以对开源软件收费,但它并不总是免费的。”你甚至可能听到“它在GitHub上。”
在与开发人员谈论开放源码时,您还会听到一些其他的东西。一些在我脑海里痒了好一阵子的东西,也是引导我写这篇文章的东西。您会经常听到开发人员谈论企业和开源开发人员之间的关系是多么混乱。很复杂。企业没有“给予足够的回报”,不会付钱给从事开源工作的人。这一切都是索取而不是给予。我自己也说过很多这样的话。
但事情是这样的:这就是为什么开放源码的概念一开始就被创造出来的原因。如果你问真正创造它的人,它就在那里,一目了然。开源是让自由软件更好地为企业服务的一种方式。当然,这并不意味着它是无可挑剔的。这种关系是可以改善的。我不认为这些开发人员是愚蠢的,也不是伪君子。
这就是我们今天所处的位置。自由软件运动应运而生,然后作为对此的回应,开放源码运动应运而生。今天的开发人员从来没有了解过这段历史,或者不关心它,或者积极地认为它是无关紧要的。所以我们有了一场战争。一场争夺开源意义的战争。一场战争伴随着推文、博客帖子和讨论。这是一场老保守派和新一代之间的战争,前者是最初创造这个想法的人,后者是接受了基本想法并将其付诸实施的开发人员。
我认为历史会重演。正如开放源码运动所说的“我们就像是自由软件,但是有了这些改变”,我认为我们将以一场新的运动告终。基于“开源”这个新名字的原因,我认为今天的开发者运动也需要一个新的名字。我不确定这场运动会是什么样子,我会在另一篇帖子中探索其中的原因。给你一个预告片:问题出在自由软件和开放源码的表述方式上。腐烂在根部,我还不确定有什么能取代它。