自由软件和开源的历史(一)

Ran Levi 6 人浏览 收藏 0
自由软件和开源的历史(一)

第一部分


我想以忏悔开始:理查德斯托曼一直是我的英雄之一! Richard Matthew Stallman,也被称为 RMS,被认为是计算机历史上最伟大的黑客之一。他在 1970 年代编写的软件至今仍在使用。在大屏幕上,当我们看到一个留着胡子的黑客晚上在电脑前度过,白天睡在电脑旁边的床上时——我们实际上是在看斯托曼的神话人物,他的胡须凌乱,长长的灰色头发。他在一定程度上是这种陈词滥调的灵感来源。


Stallman 也被认为是开源运动之父,这是一种社会技术现象,它激发了我们日常使用的许多程序的创建:Android 操作系统、WordPress、Firefox 浏览器和许多其他程序。顺便说一句,Stallman 非常不喜欢被称为“开源运动之父”。我们稍后会在节目中讨论这个问题。


当我决定写一整集关于开源运动的历史时,我也借此机会通过采访 Richard Stallman 本人来实现一个古老的梦想。


[电话响起,理查德接起]


这次采访——怎么说呢——并没有像我预期的那样进行。与他的谈话让我怀疑了一些关于技术世界的前提,同时揭示了他个性中我从未了解的方面。


理查德·马修·斯托曼


理查德·斯托曼 (Richard Stallman) 于 1953 年出生于美国。即使是个孩子,他也表现出反建制的态度和叛逆。他的行为问题使他时不时地转学,这让他在社交上成为同龄孩子中的一个局外人。他甚至承认自己从未学会如何与他人正确相处。


然而,计算机是一个完全不同的故事。信不信由你,作为一名小学生,斯托曼阅读计算机手册并编写软件。当然,那是 1950 年代和 60 年代,计算机访问是一种罕见的特权——所以他编写的软件都是纸上谈兵。直到高中他才真正接触到真正的计算机,但那时他已经比大多数青少年更了解计算机。说理查德·斯托曼是一个才华横溢的人是轻描淡写的。


他在哈佛学习物理。尽管他喜欢上课,但有一件事让他非常不高兴。那时哈佛的电脑终端并不多,学生们对任何他们能得到的电脑时间都非常渴望。许多教授在他们的办公室里拿着电脑终端——但他们经常在晚上锁门。这是一种巨大的浪费:这些终端像珍贵的电子宝石一样被闲置了好几个小时——而外面却是真正非常想使用它们的人。


麻省理工学院人工智能实验室


离哈佛不远就是世界著名的科技大学麻省理工学院。在哈佛大学学习期间,斯托曼参观了麻省理工学院人工智能实验室——在那里他目睹了一种完全不同的态度。在麻省理工学院,计算机终端被认为是一种公共资源,没有人对其机器拥有直接和独特的所有权。如果其中一位教授在他的办公室里放了一台电脑终端,并敢于锁上他身后的门——学生们会真的破门而入——有时是用临时的攻城锤——然后拿走电脑。


人工智能实验室是许多对技术充满热情的年轻学生的家。当时他们被称为“黑客”,尽管该术语与今天的含义略有不同:当时,“黑客”是那些喜欢深入研究任何系统的内脏并对其进行更改的人。它当然没有今天所拥有的负面含义,即窃取信息或造成损害的人。人工智能实验室的黑客们想用他们拥有的工具创造有趣的东西,他们对那些试图约束他们的人没有任何宽容和耐心。对斯托曼来说,这是一见钟情——他很快就加入了实验室。


黑客


人工智能实验室的生活很紧张。教授和他们的学生白天使用实验室,他们一离开,黑客就接管并通宵工作。他们在凌晨 3 点点了中餐,然后继续开发他们的软件,直到他们躺在折叠床上睡觉。 Stallman 与其他程序员一起开发了被认为是现代技术史上里程碑的软件和想法。例如,他为人工智能领域创建了一个重要的算法,以及一个非常流行的文本编辑器,名为 Emacs。


斯托曼喜欢在实验室里的每一分钟。当他从哈佛毕业时——当然是在院长的名单上——他在麻省理工学院注册了硕士学位,主要是为了他可以继续在实验室工作。他被这种同志情谊和合作精神所折服;实验室是人们为了共同的事业和公众的利益而一起工作的地方。


“气氛非常活跃和合作。我们正在使用和开发我们自己的操作系统,这对我来说是绝对理想的工作。我得到报酬去做我绝对喜欢的事情!我作为其他开发人员的一部分在做这项工作,没有明确的界限。还有一些人也是实验室的工作人员,在改进系统,但欢迎任何人改进系统!我们很高兴得到任何人的贡献,他们甚至不必与麻省理工学院有联系。当其他人出现并开始使用该系统时,我们很高兴,如果他做了任何深思熟虑的事情。如果他们也开始为系统做出贡献——嗯,那太好了!我们很高兴与麻省理工学院以外的人分享我们的软件。当他们认为它有用时,我们很高兴。”


实验室内部非常透明和开放,人们经常阅读和回复彼此的电子邮件。斯托曼在 1986 年的一次演讲中讲述了以下故事:


“我记得一个有趣的丑闻,有人请求帮助使用麻省理工学院开发的 [某个程序]。他向其中一个工作人员发送了一些帮助请求,几个小时后他从其他人那里得到了答复。他吓坏了,他发了一条消息“某某肯定在读你的邮件,难道你的系统上的邮件文件没有得到适当的保护?” “当然,我们的系统上没有文件受到保护。有什么问题?你早点得到答案;你为什么不开心?当然,我们会阅读彼此的邮件,因此我们可以找到像您这样的人并帮助他们”。有些人就是不知道自己什么时候过得好。”


GNU 的根源和自由软件基金会


但这种理想的环境并没有永远持续下去,麻省理工学院的人工智能实验室是其自身成功的受害者。 1950 年代和 60 年代的大多数计算机用户来自学术界,他们习惯于相互分享想法和软件。但是在 1970 年代后期,当计算机开始在商业领域普及时,许多新公司开发了满足工业需求的专有软件,这些公司向客户提供软件以换取付款是很自然的,而不是免费赠送。 .这标志着自由软件交换文化的终结。这些公司还为麻省理工学院的黑客提供了非常高的薪水,他们的才能现在需求量很大。几年之内,麻省理工学院人工智能实验室变得空无一人。当然不是身体上的——教授和他们的学生仍然使用这个设施,但无政府主义黑客无处可去。


尽管理查德斯托曼留在实验室,他很快意识到这个地方的精神已经发生了变化。剩下的程序员并没有那么兴奋地相互分享知识和创造性的解决方案。在勇敢的新商业世界中,知识就是力量。知识就是金钱。程序员过去在实验室中为自己常用而编写的高质量软件被平庸的专有软件所取代;至于阅读其他人的电子邮件,那简直是不可能的。


斯托曼继续他的日常工作,但他内心的某种东西希望重新点燃实验室曾经拥有的雄伟气氛的火花。 1980 年代初,斯托曼找到了一种方法,重新点燃火花的关键是“分享”。


源代码


在编程世界中,“共享”这个词比它在公众中的日常使用有着更深刻、更复杂的含义。我会解释的。假设我是一家餐厅的厨师。今晚我要做一道很棒的意大利肉酱面——我母亲的传奇食谱……我把这道菜端上桌,我的客人根本吃不饱我的意大利面。你可以说我和我的客人“分享”了这道菜——但这并不完全正确:我分享了这道菜,但我没有分享食谱。不告诉他们我是怎么做意大利面的——我是在阻止他们自己做。只有分享我的秘方,我才能给他们比一碗美味的意大利面更有意义的东西;只有通过分享意大利肉酱面的想法和我母亲的特殊制作方式,他们才能希望重新制作我的菜,改变它,创造出一种新的,也许比我的更美味的菜。


在编程世界中,这个“配方”被称为“源代码”:它是程序员为处理器执行而创建的特定指令列表。然后,这些指令通过特殊过程转换为我们用户熟悉的常规软件。例如,游戏一开始是一长串指令。我可以与某人分享我编写的游戏副本——就像分享一盘意大利面一样——但只有当我分享源代码时,才会被视为“完全共享”。可以访问我的源代码的程序员可以理解我使用的技术和想法,从中学习,并可能创建游戏的新版本和改进版本。


但这当然正是商业公司拒绝共享其软件源代码的原因。程序的源代码通常被认为是最高工业机密并受到严密保护,因为哪个游戏公司会希望其竞争对手开发其游戏的改进版本?


一个新的操作系统


Stallman 知道,要创建一个程序员社区的关键,所有人都对技术有着相同的热情和为共同事业做出贡献的意愿,是通过创建一个完全合作的环境,没有秘密或限制:意思是,程序员需要分享他们正在编写的源代码。换句话说,这正是一群人吃着准备好的食物和不那么有趣的谈话之间的区别,与一群站在厨房桌子周围的厨师热情地争论是否应该在这道菜中加入迷迭香,或者更确切地说是牛至。他们将共同创造出一种绝妙而独特的菜肴,否则就不会存在。


“但我想再次创建一个社区,人们可以在其中一起工作,本着科学合作的精神做出贡献,为每个人制作软件。所以我意识到我们拥有这样一个社区的唯一方法就是我们使用免费软件!我们必须确保我们使用的所有软件都是免费的——然后我们才能拥有这样一个社区。但是没有足够的免费软件,所以这就是我的工作。我不得不推出一个免费的软件操作系统——但这次是为现代计算机而不是 1968 年的计算机设计。所以,这就是我开始做的。我宣布了 GNU 操作系统的开发,并邀请人们加入并提供帮助。”


操作系统是创建新软件过程中的重要工具;它是软件运行的基础——就像道路、标志和红绿灯是交通的基础一样。当时最常见和流行的操作系统是Unix,大多数程序员都熟悉它。 Unix 归 AT&T 所有,任何想要使用它的人都必须付钱给公司。 Stallman 想要创建一个类似于 Unix 的操作系统——但一个免费的,也就是说——不是专有的。 1983 年,他在一个在线讨论组中发表了声明,并宣布了他的新项目:GNU 项目——努力创建一个新的、现代的操作系统。缩写 GNU 代表:GNU is Not Unix。这被称为“递归首字母缩略词”,因为字母“G”代表首字母缩略词本身。


一年后,也就是 1984 年,Richard Stallman 离开麻省理工学院,专注于他的项目,并成立了一个名为“自由软件基金会”(FSF)的组织。他想将 1960 年代和 70 年代非常普遍的“共享”思想制度化,并创建一个意识形态清晰的社会运动,一个成员相互支持和帮助的运动。不用说,这种意识形态鼓励人们创造和分享“自由软件”。


什么是“自由软件”?


这是斯托曼对“自由软件”的定义。请记住,程序员是从零开始计数,而不是从 1 开始……


“有一个‘自由软件’的定义。如果一个程序为用户提供了四项基本自由,那么它就是自由软件。这些是:

自由 0:根据您的意愿运行程序的自由,无论您有什么目的。

自由 1:可以自由地研究程序的源代码,并对其进行更改,使其按照您希望的方式运行。

自由 2:可以自由制作完全相同的副本并在您愿意时将其赠送或出售给他人。

自由 3:可以自由复制修改后的版本,并在您愿意时将其赠送或出售给他人。”


需要注意的是,Stallman 抓住一切机会强调一个事实,即“自由软件”中的“免费”一词指的是“自由”而不是“免费”。


“免费这个词有多重含义。当我使用它时,它意味着自由,就像自由一样。我很小心,当我说‘零价格’时,我从不说免费——我说免费是因为我想让它清楚我的意思。”


为什么 Stallman 强调自由是软件的主要和重要特征?在我作为软件工程师工作的这些年里,我阅读了无数关于软件工程的书籍和文章,所有这些都充满了创建“好”软件的建议和技术——但在任何一篇文章中都没有提到自由这个词。他们。根据斯托曼的说法,是什么让它如此重要?


自由软件的重要性


嗯,他认为分享知识和想法是软件创新的关键。用户无法访问其源代码的专有软件可能有用——但它对创新毫无贡献;事实上,它甚至会阻止它。


假设我是一名程序员,有一天我意识到我正在使用的软件——例如微软的 Word——可以通过添加一些功能得到显着改进。此功能可能是主要功能——例如添加对新外语的支持,也可能是次要功能,例如添加新图标。由于 Microsoft 不会让我访问“Word”的源代码,因此我无法进行这些改进。当然,我可以重写一个更好的“Word”版本……但这并不实用。当我想做的只是添加一个功能时,我需要多年的工作才能从头开始创建软件。这是一个常见的例子,说明无法访问程序的源代码如何阻碍创新。


控制的斗争


缺乏自由也可能以其他不那么明显的方式有害。

乍一看,我们可能会认为我们的笔记本电脑、平板电脑和智能手机给了我们无限的自由:我们可以发送电子邮件、上网、玩游戏、支付账单……我们可以做的太多,还有更多!但即使大多数人都没有意识到,这种无限的自由不过是一种幻觉。例如,您可以在 iPhone 上玩游戏,但只能玩“应用商店”中提供的游戏。 Google 为您提供了一个免费的电子邮件帐户,但会读取您写的每一个字——Facebook 也是如此。现代软件就像一座有着透明墙壁的监狱:你认为你是自由的。但如果你试图离开,你很快就会发现你实际上被锁在里面。 Richard Stallman 声称这个无形的监狱对我们个人和社会都有负面影响。在 1986 年的同一次演讲中,他说:


“当一个人花费大量时间使用计算机系统时,该计算机系统的配置就成为他所居住的城市。就像我们的房屋和家具的布置方式一样,决定了我们生活在其中的感觉,我们使用的计算机系统也是如此,如果我们不能改变我们使用的计算机系统以适应我们,那么我们的生活就真的在别人的控制之下。看到这一点的人在某种程度上变得士气低落:“试图改变这些事情是没有用的,它们总是会变坏的。甚至麻烦它也没意义。我会投入我的时间......当它结束时,我会离开并尽量不再去想它。”那种精神,那种不热情,是因为当你有公共精神的时候,不被允许把事情做得更好。”


斯托曼将控制软件视为普通公民与社会强大力量之间权力斗争的一部分——阶级斗争的术语几乎与马克思主义等旧社会意识形态相同。


“如果用户没有所有这些自由,并且他们没有完全控制程序——这意味着是程序控制用户,而所有者控制程序。因此,该程序是一种工具,赋予所有者对用户的权力。这就是为什么非自由软件是不公正的。而这种力量对开发者来说是一种不断的诱惑。如今,专有软件开发人员的道德标准已经落空,让非自由软件监视用户,故意阻止他们做他们想做的事情是标准做法——这就是所谓的“DRM”,数字限制管理——还有后门接受其他人的命令来对用户做某事。一些专有软件是审查平台。”


斯托曼关于自由与合作的思想获得了很大的支持,自由软件运动变得越来越大。其成员组织会议,出版在线杂志,并在互联网上创建群聊。其他程序员加入了这场运动,以帮助他完成 GNU 项目;这当然更需要,因为编写操作系统是一项需要数千小时的复杂任务。但是,尽管他充满了志愿精神、合作和帮助,但在 1990 年代初期,斯托曼发现自己面临着一个严重的问题。


赫德内核


粗略地说,一个操作系统可以被描述为由两部分组成:“内核”和“信封”(也称为“应用层”)。信封包含计算机用户使用的软件,例如计算器、文件浏览器或绘图软件。操作系统的内核是将软件连接到硬件(处理器、内存、磁盘等)的部分。如果我们将操作系统视为戏剧,那么信封就是舞台,内核就是幕后的机制:灯光技术人员、布景经理、化妆师和所有必要的服务提供商运行节目。


由于内核通常是操作系统中最复杂的部分,Stallman 和自由软件基金会的成员决定最后编写它。当他们完成了信封并最终准备好编写内核时 - 结果发现任务比他们预期的还要复杂。名为“Hurd”的内核过于复杂和不稳定,到了某个时候,每个人都清楚它没有希望取代流行的操作系统“Unix”。


GNU 项目陷入了威胁整个自由软件运动的技术流沙:虽然信封已经准备好,但没有内核——没有操作系统,就不可能编写自由软件——而编写自由软件是重点.


Linux 加入 GNU 项目


帮助来自一个意想不到的来源。 1991 年 8 月,一位名叫 Linus Benedict Torvalds 的年轻芬兰学生在其中一个群聊中发布了一条消息:


“你好,每个人都在使用 minix [一个操作系统]-

我正在做一个(免费的)操作系统(只是一个爱好,不会像 gnu 那样大而专业)[...]。这从四月就开始酝酿,并开始准备。我希望对人们在 minix 中喜欢/不喜欢的东西有任何反馈,因为我的操作系统与它有些相似。 [...] 欢迎任何建议,但我不保证我会实施它们

注:本文转载自Ran Levi,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除。

热门文章

最新文章



返回顶部