扫盲帖

新手涉及到的教学或入门贴,推荐新手必看,版主维护
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

扫盲帖

#1

帖子 fatloach » 2006-03-27 11:41

自由软件的定义
图片
我们维护本文来彰显自由软件定义,说明什么软件才合适被称为「自由软件」。

「自由软件」关於「自由」而不是价格,「自由 (Free) 」这个概念并不是指「免费的啤酒」,而是指「言论自由」【因为英文的自由和免费视同一个字: free】。

自由软件所指称的软件,其使用者有使用、复制、散布、研究、改写、再利用该软件的自由。更精确地说,自由软件赋予使用者四种自由:

不论目的为何,有使用该软件的自由(自由之零)。
有研究该软件如何运作的自由,并且得以改写该软件来符合使用者自身的需求(自由之一)。取得该软件之源码为达成此目的之前提。
有重新散布该软件的自由,所以每个人都可以藉由散布自由软件来敦亲睦邻(自由之二)。
有改善再利用该软件的自由,并且可以发表改写版供公众使用,如此一来,整个社群都可以受惠。如前项,取得该软件之源码为达成此目的之前提(自由之三)。
如果一软件的使用者具有上述四种权利,则该软件得以被称之为「自由软件」。也就是说,使用者必须能够自由地、以不收费或是收取合理的散布费用的方式、在任何时间再散布该软件的原版或是改写版 在任何地方给任何人 使用。如果使用者不必问任何人或是支付任何的许可费用从事这些行为,就表示她/他拥有自由软件所赋予的自由权利。

使用者也应该有自由改写软件的权利,并且可以将这些软件再利用在工作上或是娱乐上。

使用软件的这份自由权适用於任何人、任何组织、任何电脑系统、任何工作性质,不用特别和软件作者或是其他特别的人或单位报备。

再散布软件的自由必须同时适用於原版和改写版软件的二进制码和源码上,如果无法制作二进制码的版本,则此动作可以略过,但是如果后来的使用者找到其它可以制作二进制码的方式,她们必须有再散布二进制码的自由。

为了成就改写并发表改写版的自由,使用者必须有取得该软件源码的管道,所以,取得源码为自由软件之本。

为了使这些自由成真,只要使用者没犯下滔天大罪,这些自由权利不能被改变。如果使用者并未做错事,而该软件的作者却拥有取消或撤回其许可方式的权力,那么该软件不是自由软件。

但是,如果额外的规定不和上述四项主要的自由权利相冲的话,这些有关散布自由软件的额外规定是可被接受的。例如,另类版权 copyleft 规定说,当重新散布该软件时,作者不能加限制拒绝其他人主要的自由权利,这个规定并不和上述的主要自由相冲,反而更进一步保障了使用者的自由软件权益。

使用者可以付费取得 GNU 的软件,或者,使用者也可以免费取得这些软件,但是,不管使用者是如何取得这些软件的,她/他们必须永远有权利复制或是改写这些软件,甚至 贩售 这些软件。

自由软件因此并不是「非商业软件」。自由软件必须适用於商业用途。自由软件的商业开发模式已很常见;这样的自由商业软件相当重要。

如果不影响到后来的使用者发行改写的权利规定,则额外加入的规范如何将一个改写后的自由软件制作为套件的相关规定亦可行。同理,像这类「如果你用这种方式发行软件,你必须让这个软件也能在这种情况下可得」的措辞也是在许可之下的(这类规定也让使用者有该不该发行该软件的选择)。如果许可证要求「在当你发行修订版时,若先前的开发者要求一份拷贝,则你必须提供」的条件,它也是符合自由的。

在 GNU 工程中,我们使用 copyleft 这类许可方式来保护每个使用者都享有这些软件自由,但是 非 copyleft 的自由软件 也同时存在。我们相信有某些重要的原因使得 copyleft 的许可方式较其它自由软件许可方式要好 ,但是如果你的软件不是 在 copyleft 的许可之下,我们也使用它。

欲知自由软件、以 copyleft 许可的软件、和其它种类的软件的相连性,请见 「自由软件的种类」 一文。

有时候,政府 外销管制 和交易许可的规定会限制使用者全球性散布软件的权利和自由,虽然软件开发者/作者没有权力去排除或是消弭这些限制,但是,她/他们可以、 也必须拒绝将这些条件列入自由软件的使用法则中,如此这般,这些官方规定将不会影响到使用者的软件自由,和自由软件相关的人、事、物也因此不在这些政府部门管辖范围之内。

大部份的自由软件的许可证是基於 copyleft ,而可以加诸於其上的要求类型是有限制的。如果一份基於版权的许可证遵守了如上所述的自由时,那么就不太可能会遇上我们从未预期过的其它类型的问题(虽然偶尔还是会有)。不过,有一些自由软件的许可证是基於合同的条款,而合同可以被加诸较大程度的可能限制。这表示像是这样的许可证,会有许多可能的方式变得受限到无法接受,因而成为「非自由」的。

我们实在无法列出所有无法接受的可能的合同限制。如果一份基於合同的许可证,以一种基於版权的许可证所无法的不寻常方式,限制了使用者,并且不能如本文所述的视为合格〔的自由条款〕,我们将会试著审度这合同,并且很有可能认定它是非自由的。

当谈到自由软件时,最好避免使用「给」或是「免费」这类的措辞,因为这些措辞会给人给人「free」是指「价格上的免费」的误导,而忽略了使用软件自由的真义。有些词语像 「盗版」就有类似的涵义,我们希望自由软件的使用者不会想被这样指称。有关讨论这些措辞的用法,详见 「容易混淆的词语,请尽量避免」 一文,我们也有 「自由软件一词的翻译」 的多种语言版本。

最后,请注意,这些有关自由软件定义的标准需要审慎的诠释。我们根据某一软件选定的许可方式是否符合上述四点软件自由的精神和重点文字,来决定该软件是否符合自由软件的标准。如果某一软件含有不公平、违背上述四点自由软件精神的限制,就算该软件发行了,我们拒绝使用它。有时候,一份许可证会引发一些讨论,在接受它成为一份自由软件许可证之前,需要我们和一些律师法律专家们共同来判断和思考,当我们达成共识的时候,我们会更新自由软件标准,让使用者更容易了解什么许可方式是符合或是不符合自由软件定义的。

如果你对某份特定的许可方式是否符合自由软件的许可方式有兴趣,请见我们的 「许可方式一览表」 一文,如果你感兴趣的许可方式不在我们的列表中,请直接透过 email 问我们。来信请寄 <licensing@gnu.org> 。

可能的情况下,如果你真的需要一份新的许可证,那么在我们的协助下你可以确定那许可证是否真是自由软件许可证,从而避开许多实际上的问题。


--------------------------------------------------------------------------------

其它团体已经开始使用「开放源码 」一词,以用来指称与「自由软件 」在某种程度意义相当,但是仍不尽相同的事物。我们倾向於使用「自由软件 」的原因在於,一旦你曾听过它意指自由,而非免费,那么 你就可以从它的称呼上知道它所著重的是自由了 。

请将关於「自由软件基金会」以及「GNU 工程」的查询送到 gnu@gnu.org 。也有 其它方式可以联系 自由软件基金会。
请将失效链接以及其它网页的更正(或建议)送到 webmasters@gnu.org

请查阅 翻译读我 以取得关於「协调」与「寄交」翻译的信息。

请将有关翻译的问题送到 GNU/CTT 的 翻译人员 。
翻译: 林钰维 | Yuwei Lin | yuwei {at} ylin {dot} org 。
验证: 刘 昭宏 <chliu@gnu.org> 。

Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved.
本文允许在不变更文档内容的前提下刊登在任何形式的媒体中,但需保留此声明。

Updated: $Date: 2005/05/05 19:37:14 $ $Author: novalis $
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

GNU 工程

#2

帖子 fatloach » 2006-03-27 11:46

图片
第一个软件共享社团
当我於一九七一年开始为麻省理工学院(MIT)人工智能实验室工作时,我成为那时已经存在多年的一个软件共享社团的成员。软件的共享其实并不局限於我们的特定社团;它与计算机是同龄的,如同食谱的共享与烹调同样悠久一样。但是我们比大多数人做的更多。

人工智能实验室使用一个名叫 ITS(不兼容分时系统)的分时操作系统,它是由实验室员工电脑黑客们 (1) 为当年的一种大计算机数位 PDP-1 设计并用汇编语言编写的。作为社团的一个成员,人工智能实验室的一个员工电脑系统黑客,我的工作是来改进这个系统。

我们没有称我们的软件为「自由软件」,因为这个术语当时还不存在;但我们的软件的确是「自由软件」。不论何时,当来自其他大学或公司的人想要移植或使用程序时,我们都乐於提供。如果你看到某人正在使用一个你不熟悉但却有趣的程序时,你总可以要求参阅其源码,因此你可以读它、修改它、或者对它加以拆解拼装制成一个新的程序。


(1) 一部分大众传播媒体混淆地将「黑客」一词用来表示「安全破坏者」。我们作为黑客拒绝认可这个含义,并继续用这个词表示「那些喜爱编程并享受在其中变得更擅长於编程的人。」

社团的崩溃
这种情形在一九八○年代初期,当 Digital 公司不再继续其 PDP-10 系列时彻底地改变了。此系列的架构在六○年代著实优雅且有力,但却无法自然地扩充到在八○年代成为可能的较大的定址空间。这意味著几乎所有构成 ITS 的程序都已经被淘汰了。

人工智能实验室黑客社团在不久以前已经崩溃了。一九八一年,抽资脱离的 Symbolics 公司已经从人工智能实验室雇佣走了几乎所有的黑客,人口减少的社团已不能维持其自身。(Steve Levy 所著的《黑客》叙述了这些事件并给出了该社团在鼎盛时的美景。)当人工智能实验室於一九八二年购买一台新的 PDP-10 时,其管理层决定使用 Digital 的非自由分时系统而不是 ITS 。

VAX 或 68020 等当代的现代计算机,拥有其自己的操作系统,但它们均不是自由软件:即使只是获得一个可执行代码拷贝,你也必须签署一个保密协议。

这意味著使用计算机的第一步是承诺不去帮助你的邻居。一个互助的社团被禁止了。私有软件拥有者制定的规则是,「如果你与你的邻居共享,你就是一个侵犯版权者。如果你需要任何更改,求我们来做。」

认为私有软件社会体制 -- 不允许你去共享或改变软件 -- 是反社会的、也是不道德的,并且是完全错误的思想,也许对一些读者来说会产生惊讶。可是我们对於一个建立在分割公众并让使用者无助之上的体制又能够说些什么呢?对上述思想感到惊讶的读者或许将私有社会体制视为理所当然,或者使用私有软件行业暗示的条款来判断它。软件出版者长时间辛苦地努力去使人们信服,只有一种方式来看待这个问题。

当软件出版者谈到「坚持」他们的「权利」或「阻止侵犯版权」时,他们实际所「说」的是次要的。这些声明真正的讯息是他们将未阐明的假设视为理所当然;公众被认为应当无异议地接受这些。还是让我们来仔细检查这些吧。

一个假设就是,软件公司有毫无疑问的自然权利去拥有软件并因而有在其所有用户之上的权利。(如果这是一个自然权利,那么无论它对公众造成多大危害,我们也不能反对。)有趣的是,美国宪法和法律惯例否决这种观点;版权不是一个自然权利,而是一个人为的,政府强加的限制用户复制的自然权利的垄断。

另一个未申明的假设是,关於软件的唯一重要事情是它允许你作些什么工作 -- 我们计算机用户不应该在意我们被允许去拥有哪种社会。

第三个假设是,如果我们不提供软件公司在用户之上的程序的权利,我们将没有可以使用的软件(或,将决不会有一个程序来做这个或那个特定的工作)。这个假设在自由软件运动证明我们能够不必受其束缚而制造丰富的有用软件之前,也许看起来像是有理的。

如果我们拒绝接受这些假设,并基於普通常识下的道德来判断这些问题,当把用户放在首位,我们得到了非常不同的结论。计算机用户应该可以自由地去修改程序以适应他们的需求,并自由地共享软件,因为帮助别人是社会的基础。

这儿没有该结论背后广泛推理的空间,因此读者可参阅下边网页, http://www.gnu.org/philosophy/why-free.html

一个赤裸的道德选择。
随著我的社团没有了,要像以前那样继续是不可能了。取而代之的情况是,我面对一个赤裸的道德抉择。

加入私有软件世界是较容易的选择,签署保密协议并承诺不去帮助我的黑客伙伴。极有可能我也去开发在保密协议下散布的软件,因而对其他人增加压力迫使他们也去背叛他们的伙伴。

按此方式,我可能已经挣了钱,并或许自己开心地写代码。但是我知道在我的事业终点,我将回望筑墙隔开人们的这些年,会感到我竟投入了我的生命以使这个世界变成更坏的地方。

当有人拒绝给我和 MIT 人工智能实验室有关的我们打印机的控制程序源码时,我已经经历了处在保密协议的接受端。(该程序某些特色的缺少使得打印机的使用极其困难。)因此我不能告诉我自己保密协议是无害的。当他拒绝让我们分享其代码时,我非常生气;我不能够转过身来,然后自己也对每个人做这同样的事情。

另一个直截了当但不愉快的选择,是离开计算机领域。那样的话,我的技术将不会被滥用,但仍会被浪费。我将不会因隔离和限制计算机用户而被指责,虽然如此,这种情形仍然会继续发生。

所以我找寻一个程序员可以做一些好事的方法。我问我自己,有没有一个或一些程序我可以写,进而有可能再次形成一个社团。

答案是清晰的:我们首先需要的是一个操作系统。它是开始使用一台计算机的至关重要的软件。有了操作系统,你可以做很多事情;没有操作系统,你完全不能运行计算机。有了自由操作系统,我们能够再次拥有一个互助的黑客社团 -- 并邀请任何人参加。任何人都能够使用计算机而不必从图谋剥夺他或她的朋友开始。

作为一个操作系统开发者,我有做这个工作的恰当技能。所以即使我不能把成功当作必然,我认识到我被选择来从事这项工作。我选择将该系统做成与 Unix 兼容因而它可被移植,并使 Unix 用户可以容易地转换到它。 GNU 这个名字,依照黑客的传统选中,作为一个递归的「GNU's Not Unix」首字母缩写。

一个操作系统指的不仅仅是一个内核,刚足够运行其他程序。在一九七○年代,每个可以称作操作系统的系统包括命令处理器,汇编程序,编译器,解释程序,调试除错器,文本编辑器,邮件程序,以及其它许多程序。 ITS 、 Multics 、 VMS 和 Unix 都有这些。 GNU 操作系统也将包括它们。

后来我听到希勒尔的这些话 (1):

我不为我谁为我? 我只为我我为何? 若非现在要何时?
决定开始 GNU 工程正是基於一个类似的精神。

(1) 作为一个无神论者,我不跟随任何一个宗教领袖,但我有时候发现我钦佩他们中的一个说过的话。

自由自在般的自由
「自由软件」这个术语有时被错误地理解 -- 它与价格完全无关【在英语中,自由与免费同字(free),因此在自由软体运动中,一般以首字母大写来表自由(Free)】。自由软件是关於自由。因此这里是自由软件的定义:对你,一个特定的用户,一个程序是自由软件,当:

你有自由为任何目的去运行该程序。
你有修改该程序以满足你需求的自由。(为使该自由可以有效地实施,你必须可取得源码,因为在没有源码的情况下对一个程序做修改是非常困难的。)
不论免费或收取一定费用,你有重新散布拷贝的自由。
你有散布该程序修改过的版本,从而让社会得以受益於你的改进的自由。
由於 "free" 所指的是自由,而非价格,卖拷贝和自由软件之间并没有矛盾。事实上,贩卖拷贝的自由是至关重要的:以光碟型式卖出的自由软件收藏对於社团是重要的。同时,出售它们是为自由软件发展筹集资金的重要方法。因此,一个人们没有自由将它加入到这些收藏的程序就不是自由软件。

由於「自由」的含糊性,人们用了很长时间找寻其它选择,但是从没有人找到一个合适的选择。英语比其它语言有更多的单词和细微差别,但它缺少一个简单的、明确的单词用来表示「自由」,就像自由自在 -- 「无拘无束的」,使得这个字成为最接近此一含义的单词。诸如「解放的」,「自由自在」和「开放」等其它选择,都要么有错误的含义或一些其它缺点。

GNU 软件和 GNU 系统
开发一个完整系统是一个很大的工程。为了使其达成,我决定只要有可能就去改写并使用现有的自由软件。例如,在最初我决定用 TeX 作为主要的文本格式化程序;一些年后,我决定用 X Window 系统而不是为 GNU 写另一个视窗系统。

由於这项决定, GNU 系统与所有 GNU 软件的堆积不同。 GNU 系统包括非 GNU 软件程序,这些程序是由其他人或工程为了他们自己的目的而开发的。我们之所以能用它们是因为它们是自由软件。

开始该工程
我於一九八四年一月辞去我在 MIT 的工作并开始编写 GNU 软件。离开 MIT 是必要的,这样可以使 MIT 无法干涉将 GNU 作为自由软件而散布。如果我还在职, MIT 也许已经要求拥有这些作品,并可能强加他们自己的发行条款,或将它们变成私有软件包。我没有意图做大量工作而仅仅看到它变得没有用,因为做这件事情的既成目的是:创造一个新的共享软件社团。

尽管如此, Winston 教授,后来的 MIT 人工智能实验室领导人,友善地邀请我继续使用实验室的设施。

初期的脚步
开始 GNU 工程的不久之前,我听说了叫做 VUCK 的自由大学编译工具箱。(荷兰单词「自由」,写作为一个字母 V)这是一个设计来处理多种语言的编译器,包括 C 和 Pascal ,并支持多重目标机器。我曾写信给其作者询问 GNU 是否可以使用它。

他嘲弄地回答了,声明该大学是自由的而该编译器不是。因此我决定我的第一个为了 GNU 工程而写的程序将是一个多种语言,多种平台的编译器。

因为希望避免自己编写整个编译器的必要,我得到了在 Lawrence Livermore 实验室开发的多平台编译程序 Pascal 的源码。它支持并且用一种设计成为一个系统编程语言的 Pascal 扩充版本来编写。我加入一个 C 的前端,并开始将它移植到 Motorola 68000 计算机。但是当我发现该编译器需要百万字节的堆栈空间时,我不得不放弃。可用的 68000 Unix 系统仅仅允许 64k 字节。

我随后了解到 Pascal 编译器的运行是,分析整个输入文件成为一个语法树,转换整个语法树成一个「指令」链,然后生成完整的输出文件,而不曾释放任何存储空间。到了这个地步,总结下来我仍必须从头开始写一个新的编译器。那个新的编译器就是现在所知的 GCC;其中没有一点 Pascal 编译器的内容,不过我仍设法改编和使用我已写好的 C 前端。但那是几年后的事了;首先,我开发 GNU Emacs 。

GNU Emacs
我於一九八四年九月开始著手 GNU Emacs ,它於一九八五年初开始有用。这使得我可以开始使用 Unix 系统作编辑;因为没有兴趣学习使用 vi 或 ed ,直到那时我是在其它类型机器上做我的编辑的。

这时候,人们开始想用 GNU Emacs,因此出现了该如何发行它的问题。当然,我将它放在我用的 MIT 计算机的匿名 FTP 服务器上。(这台计算机, prep.ai.mit.edu ,因此成为主要的 GNU FTP 散布站点;当它一些年后退役时,我们将其名字转到我们新的 FTP 服务器。)但是在那时,一些感兴趣的人不在 Internet 上,不能通过 FTP 获得拷贝。所以问题是,我该对他们说什么?

我兴许会说,「找一个上网的朋友做一个拷贝给你。」或者我兴许会像我为原来的 PDP-10 Emacs 所做的:告诉他们,「邮寄给我一盘磁带和一个贴足邮资的回信封,我会将 Emacs 放在磁带上寄回去。」但是我没有工作,我正在寻找从自由软件挣钱的方法。所以我宣布我会邮寄一盘磁带给任何想要的人,并收取 $150 。用这种方法,我开始了自由软件发行的事业,它是现今发行整个基於 Linux 的 GNU 系统的公司的先驱。

是一个对任何用户都自由的程序吗?
如果一个程序在它离开其作者双手时是自由软件,这并非必要地意味著它对於每一个拥有其一份拷贝的人都将是自由的。例如,公众领域软件(没有被版权保护的软件)是自由软件;但是任何人可以制作一个由它修改而来的私有版本。同样地,许多自由程序被版权保护但是基於简单许可证加以发行,允许私有的修改版本。

这个问题的典型例证是 X Window 系统。由 MIT 开发,并用一个许可证方式作为自由软件发表,它很快即被不同的计算机公司所采用。他们将 X 以仅二进制形式的方式加到他们的私有 Unix 系统中,并被同样的保密协议控制著。这些 X 的拷贝,就像 Unix 一样,再也不是自由软件。

X Window 系统的开发人员根本不认为这是一个问题 -- 他们期望并有意使其发生。他们的目标不是自由,而仅仅是「成功」,那种定义为「有许多用户」的成功。他们不在意这些用户是否拥有自由,只是希望他们人数众多。

这导致一个矛盾的情形,两种不同的自由量计算方法对同一个问题「这是自由程序吗?」给出不同的回答。如果你基於 MIT 许可证的发行条款给出的自由作判断,你就会说 X 是自由软件。但是如果你以 X 一般用户的自由来衡量,你就不得不说它是私有软件。大多数 X 用户当时正在使用的是随 Unix 系统而来的私有版本,而不是自由版本。

Copyleft 和 GNU GPL
GNU 的目标是给用户自由,而不是仅仅成为流行。所以我们需要使用可以阻止 GNU 软件被转变成私有软件的发行条款。我们所用的方法被称之为「copyleft」。(1)

Copyleft 利用著作权法,但却翻转它惯常的目的而为我们所适用:它成为一种保持软件自由的手段,而不是将软件私有化的方法。

Copyleft 的中心思想是我们给予每个人运行该程序,拷贝程序,修改程序和散布其修改版本的许可 -- 但是没有增加他们自己的限制的许可。因此,定义「自由软件」的至关重要的自由是藉由每个人拥有一个拷贝而获得保证;这些自由因此成为不能剥夺的权利。

对於一个有效的 copyleft ,修改后的版本必须也是自由的。这确保了建立在我们工作基础之上的作品,一旦散布,对我们社团就成为可利用的。当有工作的程序员们志愿改善 GNU 软件时, copyleft 防止他们的雇主们说,「你不能共享这些修改,因为我们正准备使用它们来制作该程序的我们的私有版本。」

如果我们要确保程序每个用户的自由,修改必须是自由的这个需求是必要的。那些私有化 X Window 系统的公司通常作了一些修改以将其移植到它们的系统和硬件。这些改动与 X 的大规模相比而言是较小的,但是它们并非微不足道。如果进行修改是拒绝用户自由的一个藉口,任何人来利用该藉口将是非常容易的。

一个相关议题涉及到结合一个自由程序与非自由代码。如此的结合将不可避免地是非自由的;非自由部分的任何缺乏自由,将也是整个的缺乏。允许这样的组合将打开一个大得足够沉掉一艘船的洞。因此, copyleft 的一个至关紧要的需求是堵上这个洞:任何加到或与一个 copyleft 的程序所组合而成的程序必须也使更大的组合版本也是自由的和 copyleft 的。

我们为大多数 GNU 软件使用的 copyleft 的明确实现是 GNU 一般公众许可证,或简称 GNU GPL 。我们在特定场合下有其它种类 copyleft 可以使用。 GNU 手册也是 copyleft 的,但使用一个非常简化的 copyleft 类型,因为 GNU GPL 的复杂性对其手册是不需要的。

(1) 在一九八四或一九八五年, Don Hopkins (一个非常有想像力的朋友)寄给我一封信。在信封上他写了一些有趣的话,包括这个:「著作权没有:撤回所有权利」(Copyleft: all rights reversed)。【这里采用刘琼云译作《黑客伦理与资讯时代精神》(The Hacker Ethic, and the spirit of information age)第七十一页的译法,但在此仍用版权一词。是对「版权所有 翻印必究」(Copyright: all rights reserved)一句的对应感谢石头成提供的信息。】我用单词「copyleft」来命名我当时正在发展的散布概念。

自由软件基金会
随著使用 Emacs 兴趣的增长,其他人加入了 GNU 工程,我们决定这是再次寻求资金的时候了。在一九八五年,我们创立了自由软件基金会,一个免税的为自由软件发展的慈善团体。 FSF 也接手了 Emacs 磁带发行工作;后来它通过往磁带上增加其它自由软件(既有 GNU 也有非 GNU ),也通过出售自由手册扩展了该业务。

FSF 接受捐款,但是其大部分收入常常来自销售 -- 自由软件的拷贝,和其它相关的服务。今天它卖源码的 CD-ROMs ,二进制代码的 CD-ROMs ,精细打印的手册(均有再散布和修改的自由),以及豪华发行(这儿我们为你选择的平台制作完整的软件收藏)。

自由软件基金会员工们已经编写和维护了一系列的 GNU 软件包。两个值得注意的是 C 库和外壳(shell)。 GNU C 库是每个运行於 GNU/Linux 系统的程序使用来与 Linux 通信的。它是由自由软件基金会的一个成员, Roland McGrath 开发的。被大多数 GNU/Linux 系统使用的外壳程序是 BASH , the Bourne Again Shell (1) ,它们是由 FSF 员工 Brian Fox 开发的。

我们资助了这些程序的开发因为 GNU 工程不仅仅是关於工具或开发环境。我们的目标是一个完整操作系统,而这些工具对於这个目标是需要的。

(1) 「Bourne again Shell」是一个对名为「Bourne Shell」的 Unix 常用 shell 的玩笑。

自由软件支持
自由软件哲学抵制一种特定的分布广泛的商业实践,但是它不是反商业的。当商业活动尊重用户的自由时,我们祝愿它们成功。

销售 Emacs 拷贝展示了一种自由软件生意。当 FSF 接手该工作时,我需要另一种谋生方法。我在销售我所开发的自由软件相关服务中找到了它。它包括教学,主题诸如如何对 GNU Emacs 编程,如何定制 GCC,和通常是移植 GCC 到新平台的软件开发。

今天,这每一种的自由软件生意被许多的公司实践著。有些公司发行CD-ROM 的自由软件收藏;其它的则贩卖从回答用户问题到改正程序错误,到增加大的新功能等不同层次上的服务。我们甚至开始看到基於发起新的自由软件产品的自由软件公司。

值得特别注意的是,许多公司尽管将它们自己与「open source」发生联系,实际上它们的生意基於与自由软件合作的非自由软件。它们是私有软件公司而不是自由软件公司,其产品诱惑用户远离自由。它们称此为「增值」,反映了它们希望我们采用的价值观念:便利在自由之上。如果我们更珍惜自由,我们应该称它们为「减去自由的」产品。

技术目标
GNU 的首要目标是作为自由软件。即便 GNU 不比 Unix 有技术优势,它却有一个允许用户合作的社会优点,和一个与道德有关的优点,也就是尊重用户的自由。

但是应用众所周知的好的经验标准於该工作是自然的 -- 例如,动态地分配数据结构以避免武断的固定大小限制,并在任何有意义之处处理所有可能的 8 位代码。

另外,我们放弃了小内存大小的 Unix 设计,决定不支持 16 位机器( 32 位机器在 GNU 系统被完成时成为主流是很清楚的),并且不为了减少内存使用而作任何努力,除非超过了百万字节。在处理非常大但不是至关紧要的文件的程序中,我们鼓励程序员们将整个文件读入核心,然后浏览其内容而不必顾虑输入输出的问题。

这些决定使得许多 GNU 程序在可靠性和速度上超越了它们在Unix 上相当的其它程序。

捐赠的计算机
随著 GNU 工程名声的增长,人们开始提供捐赠运行 Unix 的计算机给此工程。这些是非常有用的,因为开发 GNU 部件的最轻松方法是在一个 Unix 系统上做,并一个一个地替换该系统的部件。但是这种作法产生了一个道德问题:我们拥有 Unix 拷贝从根本上来说是否正确。

Unix 从以前到现在都是私有软件,而 GNU 工程的哲学则说我们不该使用私有软件。但是,应用与推论出 「自我防卫中的暴力是正当的」 相同的论理,我的结论是:在开发将用来帮助其他人停止使用私有软件包的自由软件代替品的关键时刻,使用私有软件包是合理的。

但是,尽管这是一个可合理化的罪恶,它仍然是罪恶。今天我们不再有任何 Unix 拷贝,因为我们已经用自由操作系统代替了它们。如果我们不能替换一台计算机的操作系统为自由操作系统,我们则替换该计算机。

GNU 任务列表
随著 GNU 工程的进行,以及越来越多的系统部件被发现和开发,最终使得做一个剩余差距列表成为一件有意义的事情。我们用它来招聘开发者编写遗漏的部分。这个列表成为众所周知的 GNU 任务列表。除了遗漏的 Unix 部件之外,我们列出了额外的各种各样的其它有用的软件和文档工程,我们认为,这些是一个真正完整的系统所应当拥有的。

今天,几乎已经没有什么 Unix 部件还留在 GNU 任务列表中 -- 那些工作都已经被完成了,只除了一些无关紧要的。但是该列表满是可以叫做「应用」的工程。任何吸引多於一个有限用户种类的程序都将是加到操作系统的有益之物。

即便是游戏也被包括在任务列表上 -- 而且是从最初就开始了。Unix 包括游戏,所以 GNU 自然地也应该包括。但是对游戏来说兼容性不是一个问题,所以我们没有跟著 Unix 已有的游戏列表走。作为代替,我们列出了一系列不同种类的用户可能会喜欢的游戏。

GNU 库 GPL
GNU C 库使用一个称做 GNU 较少一般公众许可证(LGPL)的特殊种类的 copyleft,它允许私有软件可以链接到该库。为什么让此成为例外?

这不是一个原则问题;没有一个原则说私有软件产品有资格包含於我们的代码中。(为什么要对一个断言拒绝与我们共享的工程作贡献呢?)对 C 库或任何库使用 LGPL,是一个策略上的事情。

C 库做的是原生工作;每个私有系统或编译器都带有 C 库。因此,只将我们的 C 库给自由软件用并不会给自由软件带来任何好处 -- 这将只会阻止使用我们的库。

有一个系统是这个的例外:在 GNU 系统中(这包括 GNU/Linux),GNU C 库是唯一的 C 库。所以 GNU C 库的发行条款决定了它是否可以用来为 GNU 系统编译一个私有程序。允许私有应用在 GNU 系统上运行没有与道德相关的理由,但是从战略上看,不接受它们似乎是更多地阻碍使用 GNU 系统,而不是鼓励自由应用的开发。

这就是为什么使用 LGPL 对於 C 库是一个好的策略。对於其它库,策略性的决定需要一个案例一个案例地个别考虑。当一个库做的是一种能帮助编写特定种类程序的特殊工作时,那么将其用 GPL 发行,限制其只能被用於自由软件,是一种帮助其它自由软件开发者的方法。这给了他们在面对私有软件的竞争时的一个优势。

考虑一下 GNU Readline 这一个被开发用来为 BASH 提供命令行编辑的库。 Readline 是用普通的 GNU GPL 发行的,而不是 LGPL。这可能真的减少了 Readline 的使用量,但是这对我们没有损失。因为在此同时,至少有一个有用的应用软件被特别地做成自由软件从而可以使用 Readline,那是对於社团的真正收获。

私有软件开发者们有金钱供给的优势;自由软件开发者们则需要相互获得优势。我希望有一天我们将拥有对私有软件不存在的类似可利用的巨大且受 GPL 保护的库集合,提供作为新自由软件建筑区块的有用模组,并且进一步强化对於将来自由软件开发的优势。

抓痒?
Eric Raymond 说「每个好的软件作品都开始於抓一个开发者的个人痒。」也许那有时会发生,但是许多 GNU 软件的基本部分是为了有一个完整的自由操作系统软件而被开发的。它们来自於一个愿景和一个工程,而不是来自於冲动。

例如,我们开发了 GNU C 库是因为一个类 Unix 系统需要一个 C 库,开发了Bourne-Again Shell(bash) 因为一个类 Unix 系统需要一个外壳,以及开发了 GNU tar 因为一个类 Unix 的系统需要一个 tar 程序。对我自己的程序也同样是如此 -- GNU C 编译器,GNU Emacs,GDB 和 GNU Make。

一些 GNU 程序被开发来应付对我们自由的特定威胁。因而,我们开发了 gzip 来代替因 LZW 专利而使社团失去的 Compress 程序。我们发现人们开发 LessTif,近期更开始了 GNOME 和 Harmony,来解决因某些私有软件库(见下文)所带来的问题。因为用户们不应该在秘密和自由之间作选择,我们正在开发 GNU Privacy Guard 以代替流行的非自由加密软件。

当然,编写这些程序的人们变得对这项工作发生兴趣,许多人由於他们自己的需要和兴趣而给它们增加了许多功能。但是那并不是这些程序之所以存在的原因。

未预料的开发
在 GNU 工程刚开始时,我设想我们将开发整个 GNU 系统,然后完整地散布。但那并不是它如何发生的。

由於 GNU 系统的每个部件都是在 Unix 系统上实作出的,因此远在一个完备的 GNU 系统实际存在之前,每个部件都可以在 Unix 系统上运行。这些程序有的变得流行,使用者开始扩充并且移植它们到许多不兼容的 Unix 版本,有时也会移植到其它的系统。

这个过程使得这些程序更加强而有力,并且吸引了 GNU 工程的资金和贡献者。但是这或许也延迟了数年来完成一个最小运转系统,因为 GNU 开发者们的时间被投入到维护这些部件和给已有部件增加功能当中,而不是转移到编写一个接一个遗漏的部件上。

GNU Hurd
一九九○年, GNU 系统几乎已经完成;唯一主要遗漏的部件是其内核。我们已经决定将内核实现成在 Mach 之上运行的服务器进程集合。 Mach 是在 Carnegie Melon 大学,后在犹他大学开发的微核; GNU HURD 是一个运行於 Mach 之上的服务器集合(或称为「角马兽群」),并且负责 Unix 内核的各种任务。开发的启动由於我们等待 Mach 如其许诺的那样被作为自由软件发行而延误。

选择该设计的一个原因是为了避免此工作中看来似乎是最困难的一部分:在没有一个源码层次的调试除错器的条件下调试除错内核程序。在 Mach 中,这部分的工作已经被完成,因此我们期待著像用户程序般使用 GDB 来调试除错 HURD 服务器。但是这花了很长时间才成为可能,而相互发送讯息的多线程服务器最后仍旧难以进行调试除错。这使得让 HURD 能够稳固地工作的进程延长了很多年。

Alix
GNU 内核原本并不设想被称作 HURD。它的原名是 Alix -- 按我当时的情人命名。她,一个 Unix 系统管理员,指出她的名字是如何适用於一个 Unix 系统版本的普通命名模式;作为一个笑话,她对她的朋友们说,「有人应该按我的名字命名一个内核。」我没说什么,但已决定用一个名叫 Alix 的内核使她惊奇。

事情并没有保持不变。 Michael Bushnell (现在的 Thomas),内核的主要开发者,属意 HURD 这个名字,并重新定义 Alix 来指内核中的某个特定部分 -- 该部分就是捕获系统呼叫并以发送讯息给 HURD 服务器来处理它们。

最终, Alix 和我分手了,她改了名字;与此无关地, HURD 设计被改变因而使得 C 库得以直接发送消息给服务器,这导致 Alix 部件从设计中消失。

但是在这些事情发生前,她的一个朋友在 HURD 源码中偶然见到 Alix 这个名字,并向她提及此事。所以该名字已经起了作用。

Linux 和 GNU/Linux
GNU Hurd 还没有准备好可以作为产品使用。幸运的是,另一个内核已经可以取得。在 一九九一年,Linus Torvalds 开发了一个与 Unix 兼容的内核并称之为 Linux 。大约在一九九二年,将 Linux 与不是非常完整的 GNU 系统相结合产生了一个完整的自由软件操作系统。(当然,结合它们本身也是一件重要的工作。)由於 Linux ,我们今天因此可以实际运行一个 GNU 系统的版本。

我们称此版本的系统为 GNU/Linux ,以表达它是 GNU 系统和以 Linux 作为内核的组合。

我们将来的挑战
我们已经证明了我们开发系列广泛自由软件的能力。这并非意味著我们是无敌的和无法被停止的。一些挑战使得自由软件的将来充满不确定性;与它们会战将需要坚实的努力和耐力,有时持续数年。这将会需要那种人们在当他们珍惜他们的自由,并且不让任何人将其夺走时所显示的决心。

下边四个段落讨论这些挑战。

秘密的硬件
硬件厂商愈加倾向於对硬件规范保密。这使得编写让 Linux 和 XFree86 能支持新硬件的自由驱动程序变得困难。现在我们已经完成了自由操作系统,但是如果不能支持明天的计算机,我们将会在明天失去它们。

有两种方法来应付这个问题。程序员可以采用逆向工程的手段来了解如何支持这些硬件。其他的人则可以选用被自由软件支持的硬件;随著我们的人数增加,规范的保密将成为一个弄巧成拙的策略。

反向工程是件大工作;我们会有程序员具备足够的决心去担负这件工作吗?是的 -- 如果我们已经建立了一个认为自由软件是一个原则问题的坚固信念,则非自由驱动程序就是无法忍受的。我们中的大多数人会花额外的钱,或甚至一点额外的时间,从而可以使用自由驱动程序吗?是的,如果拥有自由的决心是广泛传播的。

非自由库
一个运行於自由操作系统之上的非自由库的行为就像是一个针对自由软件开发者的陷阱。库中的那些吸引人的功能是诱饵;如果你使用该库,你就跌入了陷阱,因为你的程序不能有用地成为自由操作系统的一个部分。(严格来说,我们可以包含你的程序,但没有了该库它就无法 运行 。)更糟糕的是,如果一个使用私有软件库的程序流行起来,它可引诱其他不怀疑的程序员们落入陷阱。

这个问题的第一个例子是八○年代的 Motif 工具箱。尽管当时还没有自由操作系统,但是 Motif 以后会对自由操作系统造成什么问题是很清楚的。 GNU 工程以两种方式做了回应:通过请求个别的自由软件工程在支持 Motif 的同时也支持自由 X 工具箱小部件,并请求一些人编写替代 Motif 的自由软件。该工作花费许多年时间;由 Hungry 程序员们开发的 LessTif,在一九九七年才成为够强而得以支持大多数 Motif 应用程序。

在一九九六年和一九九八年间,另一个非自由 GUI 工具箱库,叫做 Qt ,被用在 KDE 桌面这一包含大量自由软件的集合中。

自由 GNU/Linux 系统无法利用 KDE,因为我们不能使用其库。尽管如此,一些不严格坚持自由软件的商业 GNU/Linux 系统发行商将 KDE 加入到他们的系统中 -- 产生了一个具有更强能力,但却更少自由的系统。 KDE 小组积极地鼓励更多的程序员们使用 Qt ,成百万的新「Linux 用户」从来都不知道有这样一个问题的存在。情形相当糟糕。

自由软件社团以两种方法对这个问题作出回应: GNOME 和 Harmony 。

GNOME 即 GNU 网络对象模型环境(Network Object Model Environment),是 GNU 的桌面工程。从一九九七年开始,由 Miguel de Icaza 在 Red Hat Software 支持下开发,GNOME 开始提供类似的桌面工具,排外地只使用自由软件。它也有技术上的优势,如支持多种语言,而不仅仅是 C++。但是它的主要目的是自由:不需要使用任何非自由软件。

Harmony 是一个兼容替代库,设计用来在没有 Qt 的情况下也有可能运行 KDE 软件。

在一九九八年十一月, Qt 的开发者们宣布了一个许可证的改变,当其实施后,应该会使得 Qt 成为自由软件。虽然没办法确信,但是我想这应该部分归功於社团对於 Qt 是非自由软件时所造成的问题的坚定回应。(新的许可证既不方便也不公正,所以仍旧值得去避免使用 Qt 。)

[后记:在二○○○年九月, Qt 以 GNU GPL 加以发行,因此实际上解决了这个问题]

我们将如何回应下一个诱人的非自由库呢?整个社团会了解需要远离陷阱吗?或者我们中的许多人将为了方便而放弃自由,从而产生一个大的问题?我们的未来将取决於我们自身的哲学。

软件专利
我们面临的最坏威胁来自於软件专利,它可以对自由软件的演算法和功能加以限制多达二十年。 LZW 压缩算法专利是一九八三年申请的,因此我们仍旧不能散布自由程序来产生适当的压缩 GIFs 。在一九九八年,一个用来产生 MP3 压缩音效的自由软件程序由於担心专利官司威胁而被从发行中拿掉。

但仍有办法应付专利:我们可以研究寻找证据证明一个专利是无效的,也可以寻找其它方法来完成工作。但是这每一种方法只有在某些时起候才起作用;当它们都失败时,一个专利可能会迫使所有的自由软件缺少某些用户想要的功能。当这发生时我们可以做些什么呢?

我们中的那些因自由的缘故而重视自由软件的人们无论如何都将与自由软件待在一起。我们将设法不用专利保护的功能而完成工作。但是那些因为他们认为自由软件的技术出众而重视它的人们,有可能在专利抑制自由软件时认为这是自由软件的失败。因而,虽然讨论软件开发的「大教堂」模式的实际效力和一些自由软件的可靠性和能力是有用的,但我们必定不能停在那儿。我们必须探讨自由和原则。

自由文档
我们自由操作系统的最大不足不是在软件中 -- 而是缺乏我们可以包括在我们系统中的好的自由手册。文档资料是任何软件包的基本部分;当一个重要的自由软件包没有与好的自由手册一起出现,那将是一个大的缺陷。今天我们有许多这样的缺陷。

自由文档资料,如同自由软件,是自由问题,不是价格问题。自由手册的标准几乎与自由软件完全相同:它是为了给予所有用户确定的自由。重新发行(包括商业销售)必须被许可,不论是在线还是书面形式,因而手册能够伴随每个程序的每个拷贝。

允许修改也是至关紧要的。作为一个普通规则,我不相信人们拥有修改所有种类文章和书籍的许可是至关紧要的。例如,我不认为你或我应该被迫给予修改像本文这样描述我们行为和我们观点文章的许可权。

但是有一个特殊的原因关於为什么修改自由软件文档资料的自由是至关紧要的。当人们行使他们修改软件的权利,并且增加或改变其功能时,如果他们是尽职的,则他们也将修改文档资料 -- 因而他们能随著修改过的程序一起提供正确和可用的文档资料。一个不允许程序员们尽职并完成该工作的手册不符合我们社团的需要。

加诸在修改应该如何完成的某些限制并不会造成问题。例如,保持原作者的版权声明,发行条款,或作者列表的要求是可以的。要求修改后的版本包括它们修改版本的声明也是没有问题的,即使有整节没有删除或修改,只要这些节涉及非技术主题。这些类型的限制不是问题,因为它们不阻止尽职程序员修改手册以适应修改过的程序。换种说法,它们不妨碍自由软件社团完全利用该手册。

尽管如此,必须有可能修改手册的所有 *技术* 内容,并将结果以所有常规媒体形式通过所有常规渠道发行;否则,这些约束就阻碍了社团,手册不是自由的,此时我们需要另一个手册。

自由软件开发者们将有知晓和决心去生产一个全系列的自由手册吗?我们的未来将再次取决於哲学。

我们必须谈论自由
估计当今有数千万的用户使用诸如 Debian GNU/Linux 和 Red Hat Linux 的 GNU/Linux 系统。自由软件已经发展到了这样实用的优势,使得用户纯粹为了实用原因而聚集到它身边。

这种现象的好结果是明显的:更多开发自由软件的兴趣,更多自由软件商业的用户,以及更多鼓励公司开发商业自由软件而不是私有软件产品的能力。

但是对软件的兴趣增长快於对其所基於的哲学的了解,这带来了麻烦。我们面对上边描述的挑战和威胁的能力依赖於坚决主张自由的意志。为了确定我们的社团拥有这个意志,我们需要在新的用户来到社团时向他们传播这样的思想。

但是我们正在这点上失败:吸引新用户加入社团的努力大大超越了教育他们成为我们社团的好公民的努力。我们需要做这两件事,而且我们也需要保持这两个努力的平衡。

"开放源码"
当一九九八年社团的一部分决定停止使用术语「自由软件」并改为说「开放源码软件」时,教导新用户有关自由的观念变得更加困难。

一些喜欢该术语的人意欲避免「自由」与「白送」的混淆 -- 这是一个正当的目标。可是其他人,打算将激励了自由软件运动和 GNU 工程的原则精神抛到一边,反而迎合行政和商业用户,而这些用户中的许多人持有一种将利润置於自由,社团和原则之上的意识形态。因而,「开放源码」的花言巧语集中在制作高质量,强有力软件的潜能上,但是避开自由,社团以及原则的思想。

「Linux」杂志是其一个清晰的例子 -- 它们被与 GNU/Linux 合作运行的私有软件广告所充斥。当下一个 Motif 或 Qt 出现时,这些杂志将警告程序员们远离它还是为它们登载广告呢?

商业支持可以许多方式为社团作贡献;其它种类的支持也都一样,它是有益的。但是为了赢得他们的支持而少说自由和原则可能损失惨重;它使得前述「超越和公民意识教育」之间的失衡变得愈加糟糕。

「自由软件」和「开放源码」或多或少地描述了同一软件类别,但是它们谈论的软件和价值则是不同的事情。GNU 工程继续使用「自由软件」这个术语,来表达不仅仅是技术,自由也是重要的思想。

尝试!
Yoda 大师的哲学「没有『尝试』」(There is no try)】听起来幽雅,但是它对我不起作用。我已经在「担忧我是否可以完成任务的顾虑中,以及不确信如果完成了任务,我所做的是否足以达到目标」中,做了我的大部分工作。但是无论如何我尝试了,因为在敌人和我的城市之间除了我之外没有别人。令我自己惊讶的是,有时我成功了。

有时我失败了;我的城市中有些已经陷落。随后我发现另一个受威胁的城市,并为另一场战斗做好准备。随著时间的消逝,我已经学会寻找威胁并把我自己放在它们和我的城市之间,召唤其他黑客来加入我。

现在,我常常不是唯一的一个。当我看见一大群黑客努力坚持下去时的感觉是一种安慰和乐趣,我意识到,目前,这个城市也许能幸存。但是危险每年都变得更大,并且现在 Microsoft 已经明确地将目标对准我们社团。我们不能把自由的将来视为理所当然。别把它看作是理所当然!如果你想要保持你的自由,你必须准备好去捍卫它。



请将有关 自由软体基金会 与 GNU 的 查询 与 问题(以英语)送到 gnu@gnu.org
或(以中文)送到 chliu@gnu.org
您也可以使用 其它方法联系 自由软体基金会。

请将有关 GNU 中文翻译小组 的意见(以英语或中文)送到 chinese-coordinators@gnu.org
有关 GNU 中文网页 的意见(以英语或中文)送到 chinese-translators@gnu.org
有关 原始英语网页 的意见(以英语)送到 webmasters@www.gnu.org
其它问题则(以中文)送到 chliu@gnu.org

Copyright (C) 1998, 2001 Richard Stallman.
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

Linux 和 GNU 工程

#3

帖子 fatloach » 2006-03-27 11:48

图片
每天都有许多计算机用户使用一个被改动过的GNU 系统 (18k 字节),但是他们并没有意识到它。 经过一系列的事件,现在被广泛使用的 GNU 版本则经常被称作“Linux”,可是许多用户并不了解与之相关的 GNU 工程。

Linux 确实存在;它是一个内核,许多人都在使用它。但是你不能仅使用内核本身。内核只有作为整个系统的一个部分才有用处。Linux 是和 GNU 操作系统结合在一起使用:系统本身是 GNU,与 Linux 作为内核一起工作。

许多用户没有并不完全了解 Linux 内核和被称作“Linux”的整个系统的区别。而不加区别地使用这个名字并不能对理解有帮助。

程序员一般都知道 Linux 是一个内核。但是因为他们也听到整个系统被称作“Linux”,他们回根据名字去想象历史。比如,很多人认为当 Linus Torvalds 完成了内核后,他的朋友四处寻找其他的自由软件,而且所有的可以被组装成一个类似 Unix 系统的程序都是现成的。

他们的发现不是巧合 -- 这就是 GNU 系统。可用的自由软件加在一起就组成了一个完整的系统,这是由于自 1984 年就开始的 GNU 工程一直在为此努力。GNU 宣言(31k 字节) 早已设立了开发一个类似 Unix 的自由系统的目标,称作 GNU。GNU 工程的最初公告 也勾画了 GNU 系统的原始提纲。在 Linux 被编写时,这个系统几乎已经完成。

大多数自由软件的工程都是为了特定的工作开发特定的程序。比方说,Linus Torvalds 编写类似 Unix 的内核(Linux); Donald Knuth 编写一个文本格式化工具(TeX); Bob Scheifler 开发一个窗口系统(X Window System)。对于这项工程编写的程序都作出了贡献,对这些贡献进行评估是很自然的。

如果以这种方法来衡量对 GNU 工程的贡献,我们会得出什么结论?一个 CD-ROM的提供商发现在他们的“Linux 发行版”中,GNU 软件 占最大的比重,大约占全部源代码的 28% ,而且这还包括一些关键的部件,没有这些部件,系统就无法工作。Linux 本身占大约 3%。所以如果你要根据程序的作者来选择一个名字的话,最合适的选择是“GNU”。

但是我们不认为这是一个解决问题的适当方法。GNU 工程以前不是,现在也不是一个开发某个软件包的工程。它不是一个 开发 C 编译器的工程, 尽管我们做了。它也不是一个开发一个文本编辑器的工程,尽管我们也做了。GNU 工程的目标是开发一个完全自由的类似 Unix 的系统: GNU。

许多人已经为系统中的自由软件作出了重大贡献,他们都应该获得荣誉。但 GNU 是一个系统而不是一些实用程序的组合的原因是,GNU 工程的最初目标就是做一个完整系统。我们曾经为完成一个完整的系统做了一个所需程序清单,而且我们有系统地寻找,编写这些程序,并且寻找别人编写清单上的每一个程序。我们编写了关键的但是十分枯燥的主要部件,比如汇编语言和连接器,因为这是系统所必需的。除了编程工具,一个完整的系统还需要更多的东西, Bourne Again SHell 程序, PostScript 解释器 Ghostscript, 和 GNU C 库 同样是很重要的。

到了 90 年代初期,我们曾经把除了内核以外的东西放到一起组成了一个系统(我们同时也在做内核的工作)称为 GNU Hurd, 运行在 Mach 上)。开发这个内核比我们想象的要难得多,我们现在仍然在 为此工作。

庆幸的是,你不必再等了,因为 Linux 开发成功。当 Linus Torvalds 写成了 Linux,他填补了一个重要的空白。人们可以将 Linux 和 GNU 系统组成一个完整的自由系统:基于 Linux 的 GNU 系统(或简称为 GNU/Linux 系统)。

把它们组合到一起听起来很容易,但是这并不是一个简单的工作。 GNU C 库 (简称 glibc) 需要作大量的修改。集成到一个完整的发行系统中也是一项很大的工作。它需要对如何安装和启动系统进行定位 -- 这个问题直到现在还在完善,因为我们还没有抓住要点。那些开发了不同的发行系统的人们作出了巨大贡献。

除了 GNU,还有一个独立进行的工程开发了一个自由的类似 Unix 的操作系统。这个系统被称为 BSD,它是由 UC Berkeley 开发的。 在 GNU 工程的鼓舞下,BSD 的开发者开始进行他们自己的自由软件的开发工作,并时常受到 GNU 人士的鼓励,但是他们的实际工作与 GNU 差别不大。今天 BSD 系统采用一些 GNU 软件,就象不同版本的 GNU 系统也采用 BSD 的软件一样。总的说来,它们是两套独立开发的不同的系统。今天一个免费的操作系统几乎都是采用 GNU 或 BSD 系统的一个派生版本。

GNU 工程支持 GNU/Linux 系统,就象支持 GNU 系统一样 -- 包括资金的支持。我们为重写与 Linux 相关的 GNU C 库提供资金,以至于它们现在可以很好地集成在一起,直到最新版本的 GNU/Linux 仍在使用这个库而无需修改。我们也为早期 Debian GNU/Linux 的开发提供资金。

今天我们的绝大多数的工作都在基于 Linux 的 GNU 系统上完成,我们希望你也如此。但是请不要含糊地使用 Linux 而使公众迷惑。Linux 是内核,系统的关键部件之一。系统或多或少实际上都应该是 GNU 系统,再加上 Linux。当你在讨论到这个组合系统时,请使用 “GNU/Linux”。

如果要为 GNU/Linux 作链接,本页和 http://www.gnu.org/gnu/the-gnu-project.html 都是很好的选择。如果你想为 Linux(内核)作链接,http://www.kernel.org/是一个很好 URL。

返回 GNU 主页。

请将有关自由软件基金会(FSF) & GNU 的查询 & 问题发送到 gnu@gnu.org。也可以通过 其他联系方法 联系自由软件基金会(FSF)。

请将有关网页的建议发送到 webmasters@gnu.org,其他问题发送到 gnu@gnu.org

Copyright 1997, 1998 Richard Stallman

中文翻译:白若玉
翻译校正:刘昭宏

全文在保证完整性的前提下可以在任意媒体转载 - 须保留此标注。

Updated: 30 Nov 2000 paulv
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

Hurd 简介

#4

帖子 fatloach » 2006-03-27 11:54

图片
内容列表

* Hurd 简介
* Hurd 的优点
* Hurd 的含义
* 此工程的重要地位

Hurd 简介

GNU Hurd 是 GNU 工程中取代 Unix 的核心。 Hurd 是一组运行在 Mach 微内核上的服务器,用来实现 Unix 或其他核心(如 Linux)实现了的文件系统、网络协议、及文件访问控制等其他功能。

目前,Hurd 运行在 IA32 系统上。未来 Hurd 应该,而且可能会被移植到其他硬件系统或微内核上。
Hurd 的优点
Hurd 不是一个已知的最先进的内核,但它有一些诱人的特点:

它是自由软件
任何人在遵守 GNU General Public License (GPL) 的条件下,都可以使用、修改或重新发布它。
它的兼容性
Hurd 提供了一个熟悉的编程和用户环境。对於所有的意图和目的来说,Hurd 都是一个现代的类 Unix 的内核。 Hurd 使用了 GNU C 库,而此库的开发紧紧追踪 ANSI/ISO、BSD、POSIX、Single Unix、SVID 及 X/Open 等标准。
可持续发展的构造
与其他流行的内核软件不同,Hurd 拥有面向对象的结构,这就使得它不断发展而不用改变当前的设计。这种结构将有助於完成 Hurd 主要的重设计和修改而不必完全重写代码。
它的规模很大
Hurd 实现了强有力的多线程,以便它在单处理器和对称多处理器上都可以高效运行。 Hurd 的接口设计成允许透明网络组的共有,但这个特性尚未实现。
它是可扩展的
对於学习怎样成为一个内核黑客或者在内核技术中实现新想法来说, Hurd 是一个有吸引力的平台。系统的每一个部分都设计成可修改和扩展的。
它是稳定的
在开发和测试新的 Hurd 内核组件时,可能不需重新启动机器(即使是意外的)。运行自己的内核组件不会妨碍其他用户,而且这并不需要特殊的系统权限。由於这种设计,扩展内核的程序是安全的:除非他们认可这种改动或者你是系统管理员,否则你的修改不可能影响到其他用户。
它已经存在
Hurd 是正在工作中的真实的软件。不是一个研究项目或提案。你可以开始使用并开发它,而根本不必等待。

Hurd 的含义
据 Thomas Bushnell,BSG,Hurd 的主设计师所述:

『Hurd』代表『Hird of Unix-Replacing Daemons』,而『Hird』又代表了『Hurd of Interfaces Representing Depth』。据我所知,这里,我们拥有了第一个以一对双关语命名的软件。

此工程的重要地位

今天,Hurd 与 GNU Mach 微内核、GNU C 库和其他 GNU 系统中的 GNU 以及非 GNU 程序一起,提供了一个相当完整且可用的操作系统。因为还有许多错误和未完成的特性,所以 Hurd 还不能用作生产。然而,它应该为更深入的开发和非关键性程序的使用提供了一个良好的基础。

GNU 系统 (也称作 GNU/Hurd) 完全是自我包含的(你可以使用 GNU 自身编译它的所有部分)。你可以并行运行若干个 Hurd ,甚至可以用在另一个 Hurd 上运行的的 gdb 来调试某一 Hurd 上运行的关键服务。你可以运行 X 窗口系统,使用它的应用程序和 Apache 等高级服务器应用程序。

反过来看,对块设备(如声卡)和其他设备的支持大部分还处在短缺之中。即使提供了 POSIX 接口,一些额外的接口,像 POSIX 共享内存或旗语等都仍在开发之中。

所有这些适用於目前正在开发的版本,而不是上次的发布(0.2)。我们鼓励每一个感兴趣的人试用最新的开发版,并将反馈信息发送给 Hurd 的开发者。


请将有关 自由软件基金会 与 GNU 的 查询 与 问题 送到 gnu@gnu.org。你也可以使用 其他方法联系 自由软件基金会。

请将有关网页的意见送到 web-hurd@gnu.org,其它问题则送到 gnu@gnu.org

请将有关中文网页的意见送到 chinese-coordinators@gnu.org,其它问题则送到 chliu@gnu.org

Copyright (C) 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
【本文允许在不变更文档内容的前提下刊登在任何形式的媒体中,但需保留此声明。】

翻译:王 星博 <jessew@enorth.com.cn>
验证:刘 昭宏
请将有关翻译的问题送到 GNU/CTT 的 翻译人员。
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

Debian 是什么?

#5

帖子 fatloach » 2006-03-27 11:58

图片
Debian 是什么?
Debian 计划 是制作了一套自由操作系统的独立组织。我们所创造这个操作系统叫做Debian GNU/Linux,或是简单的称为 Debian。

操作系统是使计算机运行的基本程序和工具的集合,其中最主要的部分称为内核 (kernel)。内核是计算机中最基要的程序,负责一切基本的调度工作,并让您运行其他程序。

Debian 系统目前是采用 Linux 作为内核。Linux 是一个由 Linus Torvalds 所创作的自由软件,目前有位于全球成千的程序员参与支持的工作。

但是把 Debian 移植至其他内核的工作也正在进行,最主要的就是 Hurd。

Hurd 是一组在微内核(例如 Mach)上运行的服务器,它们可以提供各种不同的功能。Hurd 是由 GNU 计划 所设计的自由软件。

这份操作系统中的大部分的基本工具来自于 GNU 计划;因此我们把它们命名为 GNU/Linux 和 GNU/Hurd。这些工具同样都是自由的。

当然,人们真正需要的是应用软件,也就是帮助他们完成他们想完成的工作的程序:从编辑文档,进行商业交易,玩游戏,到写更多其他的软件。Debian 带来了超过 个软件包(为了能在您的机器上轻松的安装,这些软件包都已经被编译包装为一种方便的格式)──这些全部都是自由软件。

这有点像一个高塔:在最底层的是内核,在内核上面的是所有的基本工具,然后是所有您在计算机上运行的软件。最后,在这个高塔顶端的就是 Debian──把每件事情谨慎的组织和配合在一起,使得它们能够在一起和谐地运作。

这全部都是免费的吗?
您也许会奇怪:为什么人们愿意花费他们自己的时间来写软件,谨慎的包装它,然后再把它全部送给别人?正如同有许多不同的人选择做出这样子的贡献一样,这个问题也有许多不同的答案。有些人只是喜欢帮助别人。有些人利用写程序来学习更多关于计算机方面的知识。也有些人是在寻找一种避免商业软件价格膨胀的途径。还有越来越多的人是为了对他们从其他人的自由软件中得到的好处表达谢意。在学术界中,有许多人创作自由软件来确保有更多人能够从他们的研究成果中得到好处。在商业界中,也有人利用协助维护自由软件的机会来确保他们在软件发展的过程中占有一席之地──当您需要某些新功能时,没有比自己动手做要来得更快的方法了。当然,我们之中也有许多人纯粹只是觉得这样十分的好玩。

由于 Debian 对自由软件有着深厚的承诺,因此我们觉得我们应该把这样的承诺化为一份正式的文档。这就是社群契约的由来。

尽管 Debian 坚信自由软件,但有些时候人们也需要在他们机器上安装商业软件。Debian 会尽可能的支持这样的行为,而我们也可以看到用来将商业软件安装到 Debian 系统中工作的软件包的数量一直在不断地增长。
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

OpenOffice中文

#6

帖子 fatloach » 2006-03-27 13:28

图片
关于中文計划

为甚么要搞这中文計划?很簡單。就是因为我們都喜爱 OpenOffice.org,希望能尽一分力,把 OpenOffice.org 的好处帶給更多国人。我們这中文計划由志愿开发者組成,全部成員都是分文不收的。

近年来,越来越多台湾、香港、大陆、以及散布于世界各地的华人使用 OpenOffice.org。所以 OpenOffice.org 的中文支援也因华人用家的需求而不断改进。自 OpenOffice.org 1.0.3 以来,OpenOffice.org 的中文支援已不算差。但当然,亦总会有些不善之处。当我們发觉有关于中文支援的問題时,我們会代表华人用家反映,或是会亲自操刀改錯。总之让 OpenOffice.org 的中文支援更趋完善是我們的成立目的之一,还請各位开发者踊跃加入。

此外,正所謂“四海之内皆兄弟,紅花綠叶是一家”,无论在海内外的中国人,都会对某些資訊特别关心的。所以,除了一般 OpenOffice.org 的新聞外,我們亦会将关于 OpenOffice.org 的中文支援与及 OpenOffice.org 在大中华的发展等資訊帶給大家。不过正如古人所言,“世事如棋日日新”,要提供丰富的訊息給各位也不是易事。“独乐乐,不如众乐乐”,所以啰,若閣下知道甚么有趣的訊息的話,請务必把消息提供与咱,将訊息与广大华人使用者分享罢!


OpenOffice.org 是一套跨平台的办公室软体套件,能在 Windows、Linux、MacOS X (X11)、和 Solaris 等作业系统上执行。它与各个主要的办公室软体套件相容。OpenOffice.org 是自由软体,任何人都可以免费下载、使用、及散布它。下列是 OpenOffice.org 的主要元件:
Writer
让您的文档无所不能

Writer是一个现代的、功能完备的文字处理和桌面发布软件。

它既可以方便地制作一份备忘录,也可以制作出包含目录、图表、索引等一部完整的书籍。 您可以只专心制作文件的內容 - 而Writer可以让您非常顺利的把文件修饰得美轮美奂。

『帮助助理』功能包含了信函、传真、会议议程、和备忘录等标准文件的模版,也能执行邮件合并等较复杂的任务。 当然,您也可随意创建自己的模版。

『样式与格式化』功能让每位用户能直接套用样式表中的样式。

您可使用『自动更正字典』,让OpenOffice.org在您键入字词时作自动拼写检查。

『自动完成字词』功能在您键入字词时提供常用字词建议,助您快速完成编辑字词或句子。

当您编辑文件时,『自动套用格式』功能可帮助您规范格式,让您能专心处理您的文件內容。

『文本框架』和『链结』功能让您可以完全依照自己的设计来制作时事通讯及传单等文件。

『目录』或者『索引』、『题录』、『插图』、『表格』及其他对象可增加您的复杂文档的实用性。

通过电子邮件寄出你的文件 - Writer能直接连结到您的电子邮件软件。

为确保你的文件能正确地呈现在每一个读者的眼前,您可以在Writer內把您的文件导出成HTML或 Portable Document Format (PDF) 格式。

以 OpenDocument 格式来储存你的文件。OpenDocument 是一个新的办公文件国际标准。这基于XML的格式不必拘泥于Writer,也可以用任何支持 OpenDocument 的软件来访问它。

当然,您还可在Writer內访问以前的Microsoft Word文件,或把您在Writer內编写的文件储存为Word格式发送给仍然使用微软产品的人。

Impress
使您的讲演更深刻生动

Impress是一个可用来制作高效率多媒体演讲稿的出色工具。利用平面和立体的图案、特效、动画和高效能绘图等工具, 您的演讲将会更为精彩。

「母版模式」简化了资料准备的任务。

『自动版面配置』功能帮助您简化版面设计的准备。

它支持一系列『视图模式』: 绘图 / 大纲 / 投影片浏览 / 预览页 / 讲义页,以兼备不同演讲者及观众的需要。Impress 还有可供选择的多面板视图模式,方便您的使用。

Impress更有一系列易用的『画图』与编辑『图表』工具, 以增加演讲的趣味性。

把常用的绘图工具 '摆放' 在屏幕显眼的地方, 让您能快速选取。

幻灯片的『动画』与『效果』使您的演讲变得栩栩如生,『艺术字体』为文字加入了炫目的平面或立体效果。即使制作逼真的立体图片也只是一剎那的动作。

将您的文件保存为 OpenDocument格式 (新的办公文档国际标准),这种基于 XML 的文件格式使您不必拘泥于 IMPRESS 工具,其他 OpenDocument 兼容的软件也可以访问您的文件。

当然, 您还可在Impress內打开以前的Microsoft PowerPoint文件, 或以PowerPoint格式储存您在Impress內制作的文件发送给仍然使用微软产品的用戶。并且, 您可利用Impress內建的功能把演讲制作成Flash (.swf) 文件。

功能全面的表格处理工具

CALC是一个您一直想要的表格处理工具。初学者觉得它直观易学; 专业从事数据挖掘或分析的人欣赏它全面的高级功能。

凭借『数据助理』技术,您可以轻易地从公司的数据库中取出数据,形成二维表格、概括转换为更具实际意义的信息。

『自然语言模式』让您用熟悉的交谈方式 (如 “sales – costs”) 来设计模式。

『智能求和按钮』能根据上下文自动插入总和或分类汇总。

『帮助向导』功能引导您选择和使用高级表格处理功能。

『样式』功能让您灵活运用单元格格式选项,包括旋转內容、模版、背景、边框等。建立在内在函数的模版功能定制自己的表格处理文件的样式,使您能更专心地处理实际工作內容。

『条件控制』功能允许『如果..... 那么?』分析。只要按一下键,条件控制功能便能替您分析表格中的内容,例如比较高/中/低销售额预报。

还有『主题设计』功能,只要按一下键,您便可隐藏或显露它。也可使用默认或者自己定义的主题。

以 OpenDocument 的格式来储存你的表格处理文件。OpenDocument 是一种新的办公文件国际标准。这以 XML 为基础的格式意味着除了 OpenOffice.org 外,你也可以用任何支持 OpenDocument 的软件来打开文件。

当然,您还可以自由的使用以往的 Microsoft Excel 文件,或将您在Calc內编写的文件储存为Excel格式发送给仍然使用微软产品的用户。为确保所有读者都能阅读您的表格处理文件,您可在Calc內把您的文件导出成PDF格式 - 不用花费再买其他额外的软件。

Draw
强大的图形工具包

Draw为计划任务提供快照,提供图表和图形的处理工具。

把最常用的绘图工具 '摆放' 在屏幕显眼的地方,让您能轻松找到使用。

利用『样式』功能设定您的图像样式,简化工作的方式。

『3D控制器』让您将平面对象转换为立体对象,如球体、环面、立方体等。

对象『布置』:您可把多个对象组合、分拆、重组或编辑已组合的群组。优雅的『透视图』功能让您以自己喜爱的纹理、光度、透明度、比例等,创建逼真的照片图像。

巧妙使用『连接符』,可以用线条把对象连结,缩短制作流程图、组织图、网路图等过程。

『线条图』能自动计算及显示线条长度和宽度。

使用『图库』的图片作为您的美工图案;创建您自己的作品并能添加到图库內。

将图像储存为OpenDocument格式(新的世界标准办公文档)。因为这种格式是基于XML,所以你不必局限于Impress,你可以使用任何兼容OpenDocument的软件处理你的图像文件。

支持导入所有通用的图形格式(包括BMP、GIF、JPEG、PNG、TIFF和WMF)。

使用Draw的免费功能可以创建方便的Flash(.swf)文件。


Base
访问数据库的新途径

新的2.0版本的 BASE 可以使您无损的操作数据库数据,不必使用您自己的数据库软件或者BASE自己基于HSQL内建数据库引擎创建和修改表、表单、查询、报告。 BASE 为初、中、高级用户分别提供了向导、设计视图或 SQL 视图来设计数据库。
维护您的数据

使用 BASE ,您可以:

* 为您的数据创建新的表-也可以根据您的需要改变他们
* 表的索引维护,以加快数据访问
* 在可编辑表格内浏览表,可增加、更改、删除记录
* 从数据中用报告向导产生可令人信服的报导
* 用表单向导产生数据库应用实例

通过您的数据,通过 BASE 不仅能浏览数据,而且:

* 完成简单(单行)或者复杂(多行)数据的排序
* 通过简单(单选)或者复杂(逻辑查询)过滤器浏览到数据的子集
* 创建复杂的查询以新途径显示你的数据,包括概括和多表视图
* 用〔报告自动生成〕功能产生多种形式的报告

技术要点:

* BASE 包含一个完整的 HSQL 数据库引擎版本,以 XML 文件储存数据,它可以自然访问 dBASE 文件以简化数据库工作
* 为了更多专业需求, BASE 支持多种流行的数据库(Adabas D, ADO, Microsoft Access, MySQL),和通过工业标准的 ODBC 和 JDBC 驱动的数据库。它也支持 LDAP 兼容的地址簿,如Microsoft Outlook, Microsoft Windows, 和 Mozilla等的普通地址簿


关于 OpenOffice.org
目录

* 任务
* OpenOffice.org 的成立背景
* OpenOffice.org 的程式設計簡介
* 授权証书
* OpenOffice.org 組织架构

任务

制造一套领先全球,国际化,和跨平台的办公室套件軟体。并开放其 APIs 及以 XML 为档案格式的基础,让使用者可以自由取用 OpenOffice.org 的功能及其档案中的資料。

回一般問題
OpenOffice.org 的成立背景

StarDivision 是 StarOffice 的始创公司,在八十年代中期于德国创立。升阳于一九九九年收购 StarDivision 后,于二零零零年六月推出 StarOffice 5.2,并将大部分 StarOffice 的原始碼及相关开发技术移交与自由軟体社群 OpenOffice.org。StarOffice 6.0 和以后的版本都会以 OpenOffice.org 为基础。

回一般問題
OpenOffice.org 的程式設計簡介

OpenOffice.org 的 API 以 UNO (UniversalNetwork Object) 写成。所以本身是电脑語言中立的。現在来說,OpenOffice.org 主要是以 C++ 撰写的,但亦能以 Java(TM) 来編写。OpenOffice.org 正在寻找义工协助撰写 C 的 Binding,希望在不久的将来也能以 C 来撰写 OpenOffice.org。另外,除了无电脑語言的限制外,完成了的外掛模組也可以直接在不同的作业系統平台上使用。

升阳所公报的“Foundations of Office Productivity in a Networked Age” 道出了 OpenOffice.org 的技术进程計划及 OpenOffice.org 源碼規划慨论。不过因为 OpenOffice.org 是开放源碼軟体,所以 OpenOffice.org 的社群需要負起完成 OpenOffice.org 的任务宣言的責任。

回一般問題
授权声明

在源碼方面,OpenOffice.org 用的是双重授权法:GNU 次通用公共授权 (LGPL) 与 Sun Industry Standards Source License (SISSL)。而对于发报于网上但不会包含在軟体内的文件,OpenOffice.org 則用 Public Document License (PDL)。欲知詳情,請到本网站的授权声明网頁中看看。
头像
fatloach
帖子: 121
注册时间: 2005-10-16 23:21
来自: 北京
联系:

GNOME项目的历史

#7

帖子 fatloach » 2006-03-27 13:50

GNOME项目的历史--miguel回忆录

关于GNOME项目早期的一些故事

翻译:EricNeon

校对:LoneStar

原文出处:miguel的个人主页

Copyright (c)Gnome-cn.org 本文档允许在GNU自由文档许可证1.2版及由FSF发布的后续版本的框架内被复制、散发或者修改。
目录

1. 早期的日子 [1]
2. GNOME工程的基础 [2]
3. GNOME诞生 [3]
4. GNOME峰会
5. #gimp
6. GNOME标志
7. GnomeCal
8. Gnumeric和Canvas
9. Federico加入Red Hat实验室。
10. QPL
11. 0.99代码冻结
12. GNOME 1.0
13. 十月GNOME (1.0.55)
14. GNOME早期产业
15. GUADEC(GNOME用户和开发者欧洲会议)
16. Bongo GNOME (1.2)
17. GNOME基金会
18. Sun创建GNOME亲和实验室
19. GNOME 1.4
20.

一个关于gnome工程经历事件的不完整的回忆录。也许有一天我会写完它。

[1]早期的日子

GNOME源于一个想改进自由软件的朋友的团队所做的各种尝试,我在这里列出了一些最终导致GNOME工程诞生的设想和计划。 你也可以从Story of Ximian找到相关信息。

[2]GNOME工程的基础

1996年我的朋友Elliot Lee 在Red Hat作为网络管理员工作了一个夏季。我们交换了许多共同感兴趣的与自由软件未来密切相关的看法,彼此都为自由软件的进步贡献了各自不同的成果。在 Windows 95传入以后,自由软件世界缺乏一种与之抗衡的技术,我们在对应领域明显滞后了。我为Java Awt的自由软件替代品出一点力(在过去的那些日子,JAVA被寄予厚望,去解决UNIX系统的软件缺乏问题)。

当时我和Ralf Baechle一起将Linux移植到SGI平台的工作,它得到SGI的一部分投资。有时我会花几个小时在其他的自由软件尝试上,这将有助于缩小私有程序与linux之间的差距。我的在SGI的朋友Ariel Faigon提到过自由软件的未来,以及缺乏桌面应用,和OLE模型的问题。

Elliot和我设法组织各种成果去解决linux界面一致性问题。我们的首次尝试是libapp,是一个函数库,用来访问公共资源(设备管理、保留文档最近访问记录、模拟操作以及其他)。但我们从未真正完成这个项目。此时,产生一个象GNOME这样完整系统的主意从问题中浮现出来,我们首先瞄准了简单的任务。

一年前在亚特兰大Linux博览会我遇见了Todd,他对基于Scheme(一种GNU程序语言,类似lisp)的一个完整的桌面系统非常感兴趣。这个项目只延续了一些屏幕截图,我们没能走得更远。

1996年我从UNAM(墨西哥国立自治大学)的Facultad de Ciencias学院最新成立的计算机科学系招募了两个学生。这两个学生就是Arturo Espinosa和Federico Mena。他们在自由软件混合项目上工作,在项目周边我最喜欢的语言在于time Scheme(一种Scheme开发工具)。他们和我一起用自由软件工作,并从事Universidad Nacional Autonoma de Mexico(墨西哥国立自治大学)Instituto de Ciencias Nucleares学院的令人愉快的项目。在那里我们还参与Mexican Linux Users Group(墨西哥人linux用户组)的工作。

在1997年夏天,我的朋友Randy Chapman邀请我去微软面试,在SPARC平台上的Solaris系统开发IE浏览器(由于我曾做过Linux到SPARC的移植工作背景)。那个夏天我去微软面试,并生平第一次见到了Randy Chapman和Nat Friedman 。我们已经通过linuxNet IRC网络相识很久了。

在微软,我学习了ActiveX和COM的原理,我立刻对它产生了浓厚的兴趣。当我返回墨西哥,Federico和我开始为unix设计一种GUI 控制的底层架构,我们称之为“GNOME”。他回来后作为 GIMP 的维护者工作,我们的努力目标是在当时能采用TK。这个项目是导致后来变成Bonobo架构体系的萌芽(十六个月后我才开始着手做Bonobo)。

此时Kool Desktop Environment project(K桌面环境项目)展示了许多承诺:一个程序员团队开始了一个尝试,用C++基本GUI工具箱为unix带来一个桌面。我写信给我的朋友 Erik Troan建议他把那个代码加到Red Hat发行版中,我还写信给Richard Stallman让他知道这个有趣的项目的存在。 KDE 是按 GPL 许可证条款发布的。我分别从Erik和Richard那里得到回信,他们都指出KDE依赖于Qt这一块非自由软件的成果。Qt不允许最终用户修改、重发布和发布修改后的代码,因此违反GPL。

作为一个自由软件狂热者,我联系到Troll科技——Qt的作者,我建议Qt修改许可证方案,使他们既可以继续开公司,同时又授给用户以上权力。但是没有得到回信。当时Troll科技FAQ也包含了关于GPL和忽略双重-许可(dual-licensing)计划的重大错误。在中断联系之后,我们决定为这个问题做点事。同样令人生气的是事实上KDE开发人员对解析他们FAQ文档以及邮件列表中凸现的问题不感兴趣。

我们评估了做个Qt自由替代品的方案,然而重新实现的效率很低,且要花很久。GNUstep、Wine和LessTif是其他已经尝试重执行一个私有API的项目,而在长期的开发历史之后也仅取得有限的成就。

各种来自LinuxNet网络#linux频道的朋友也是项目的发起的负责任的一部分。

[3]GNOME诞生

更新:我们在GNUstep项目上尝试工作了几天。Francisco Bustamente (bit), Federico 和我将用我们所能得到的所有的东西来工作,但是它太庞大、太慢、太多BUG、太不完善,团队几乎没有组织可言。在反复地基于它来工作的尝试之后,我们终于决定放弃。

于是我们在1997年八月的某一天开始了GNOME项目。公告的草案已经散发给我的各式各样的朋友,也包括Richard Stallman、Marc Ewing、Elliot Lee、Erik Troan、Spencer Kimball以及Peter Mathis。当项目准备完毕,Federico和我向一些邮件列表发布了GNOME项目正式成立的公告:GIMP邮件列表、Guile邮件列表、GNU 项目公告邮件列表和comp.os.linux.announce。

Federico和我在我们休闲的时间开始开发GNOME库。他通常更多地在GIMP上工作,而我则更多地工作在X11 IRIX emulation code for Linux on the SGI/Indy. 我们设置了makefile以模拟Gtk+设置。

来自邮件列表中人们的贡献有了一个永久的结果:CORBA已经成为我们组成体系的基础,而DocBook将为GNOME文档的写作所使用。最初,我们找到施乐的ILU(注解:内码统一系统:Inter-Language Unification System,符合 CORBA 设计的一个免费 ORB, 它为不同操作平台上的各种语言提供分散式的物象连结),但它的许可证书不是自由的,所以我们不得不搜寻其他选择:我们尝试了MICO一段时间,但它太庞大,对于大多数的开发者和用户来讲又太迟钝。然后我们找到了Flick的优化编译器,终于Dick和Elliot在它上面开始了工作。

这里指出我们的一个朋友注册了gnome.org并为GNOME提供了CVS服务器。那年的十一月,GNOME已经产生足够的动力促使Federico和我中断了与其他项目的联系,全身心地投入到我们自己地GNOME工作中来。我们用开发GtkXmHTML 引擎度过了十二月份的假期,而我开始阅读Slashdot。

我们在十二月上旬与Marc Ewing和DrMike在Red Hat公司会了面。为了这次会面,我不得不放弃U2乐队在墨西哥城的巡回演唱会。我记得,那是通过卫星电视实况转播的,但Erik把我拉去跳舞。

Marc创建了红帽子高级开发实验室,这是世界上第一个针对改进GNOME的由开发人员创建的小组。RHAD Labs创建于1998年一月。Marc和DrMike从事于GNOME帮助浏览器;Raster从事于Gdk_Imlib,Enlightenment 以及Gtk+主题引擎。那年晚些时候,Owen、Jonathan、Dave和Federico也加入进来。

GNOME峰会

GNOME 0.13, 0.20和0.30已经发布,而且我们在Duke大学主办的Linux世界博览会上做了演示。这也是我第一次介绍GNOME项目(不管我的笔记本在筹备的时候发生多少问题,那次演示是成功的)。

这个也是我自从在微软遇见Nat Friedman之后第一次看见他,那真是非常有趣。他从事于一个为各种终端程序做更多扩展的小玩意上。那玩意最终将让它加入GNOME终端,并证明是每个自封为终端竞争对手的东西所必须具备的。

Marc Ewing和Michael Fullbright组织GNOME高层:在GNOME开发者们都能够到达的地方首次聚会。这是在第三届linux世界博览会之后的几天在Duke大学组织的。各地的GNOME黑客参加了会议,不同的我们聚集在一起探讨项目将可能接受的不同的发展方向。

出席的各地黑客包括:Chris Lahey、Larry Ewing、Adrian Likins、Raster、Tim Gerla、Jonathan Bladford、Rosanna Yuen、Matthew Wilson、Federico Mena、Marc Ewing、Michael Fullbright、Mark Chricton、Jay Painter、Alan Cox。特别值得注意的露面包括David Miller (他到那里得到了一件GNOME衬衫)和Telsa Gwynne (他后来成为文档努力相关的人员)。Elliot Lee在那天晚些时候到达。

除了 Jay,其他人至今仍参与 GNOME 开发。

#gimp

各种与GIMP和Gtk+有关的黑客通常徘徊在irc.mint.net的#gimp频道。许多非常天才的人曾经经过这个频道并对各种问题提供他们的输入和帮助。许多来过#gimp的人会成为GNOME的贡献者。#gimp 也是一个讨论GNOME的好论坛,它并不过分地吸引那些原本对项目的成就不太感兴趣的人把注意力引到项目上来。

它保持在那个方向,直到#gimp频道里的大多数的讨论已经涉及到GNOME,在那个时候,Zach创建了一个新的#gnome频道,GNOME的大部分讨论也就转移到了新的频道中。

GNOME标志

Tuomas Kuosmanen (Tigert)是我的一个曾经去过#gimp的朋友。Tuomas自己成为一个GIMP用户做了各种标志,针对GIMP吉祥物(Wilber)他也做了一些小图标,看上去非常漂亮的。我们开始在GNOME里使用Tuomas的图标,他为我们不同的GNOME应用软件画了些图标,也画了一些固定的图标(我想出的主意,Eckehard做的,给应用程序增加一致性的外观)

当我们为GNOME面板寻找一个图标时,我们去了Tuomas的网站,我们精选了一个他绘制的还没有任何联想的图标——一个方块中充满气的倾斜的脚掌。这是一个很长时间被用于菜单图标的脚掌。

脚掌生产成了问题,比如有人看见过一个类似的标志样子,DrMike和Rasterman都担心可能会引发问题,因为我们的GNOME大脚看上去和www.bigfoot.com的标志类似。

Red Hat实验室决定在几个月后主办一次为GNOME而设的竞赛,奖品是一台数字图形输入板。标志比赛有一个限制:它是由GIMP人群发起的,因此一个必要条件是制作标志必须用GIMP。这意味着我们不能得到其他的为项目做的vector-based标志。有许多好的建议,它们当中有许多都非常棒。

我们选择了一个Tuomas自己设计的新版本的大脚掌。最大的不同在于新的脚掌看上去包含一个“G”(另一只是只右脚,这只是左脚,G型)。 标志相当漂亮,我们直到今天还在使用它。

GnomeCal

Craig Small已经在GNOME的日历应用程序上工作,但是他时间有限,不允许他继续这项工作。于是他给出了一个GNOME开发复杂性的称述,没有在发展这个程序中做出更多的贡献。我准备去提华纳(墨西哥北部城市)为北方一个叫Telnor的电话公司提供Solaris咨询服务。在Telnor我看见一个新版的CDE(在大学的机器中,我们没有用到任何新版的Solaris,我们没有足够的硬盘空间来运行CDE),而这上面有一个非常漂亮的日历软件。

当我回来以后,我建议Federico在10天内写一个日历软件(因为Federico从来不透露他会在周末去墨西哥国立大学的ICN从事 GNOME工作;-)。第一天我们盯着OpenWindows日历,那天我们阅读了所有实现日历所必须的相关的标准文档,并开始开发。十天后,我们到了最终期限,我们实现了GnomeCal(Arturo在最后的两天中帮助我们实现日历中的年份的浏览)。这个日历软件有一个非常优美漂亮的内在结构,看上去比从那里出来的任何其他东西都要好看。用户界面也是那么漂亮足以在GNOME早期的那些日子里担此大任。它甚至可以和那些私有的小型日历软件的特色媲美。在当时,我们对Outlook一无所知。

当时,实现一个日历服务器支持看上去像是个好主意,但我们没有时间去做。现在,奇怪的是居然没有一个人去实现一篇以后可能会用上的不那么体面的说明。甚至在今天,CAP控制未被广泛实现。如今有了一个叫做CRISP的CAP简化版本的新尝试。

几年后,我们重新回到日历的开发上。这一次,它将被整合到Evolution群件组,并成为Helix Code商业代码的一部分。

Gnumeric和Canvas

当开发应用程序时,我开始变得很失败。我保持在Tk漂亮的Canvas窗口部件这点上,就像一个非常容易改良的代码的诚实优秀的例子。我们花了无数个小时在撰写回调驱动上,撰写事件驱动,一遍又一遍地重写代码,一遍又一遍地让它布满BUG。我深信Federico深入到了Tk canvas里面。我感觉十分无力,因为我仍然对X的概念非常模糊,要被它击倒了。

Federico花了几天时间学习Tk canvas,然后他又花了几天时间把他学的讲给我听。他做了一个个Tk canvas的执行,他运行了好几个月(对Usenix大会非常及时,我记得整个早餐时间向Marc展示代码,他对开发的状态有增加了一些焦虑。)。

那年Linux大会在德国举行。Marius Volmer提出了一堆关于canvas实现的问题:为描述语言包装canvas不太容易,实际上是非常困难。当我从大会回到墨西哥,我们讨论了Canvas必须要改进的方面。

新的Canvas设计是非常清晰的,它完全地基于GtkObjects和使用GtkArgs而不是像我以前说的那种本地系统(那些是缺损的,非常破旧)。

在这个时候,我开始设计并实现Gnumeric电子表格。Gnumeric成为实现我们自己的canvas条款的第一个应用软件,它也是重点测试canvas的第一个软件。应Gnumeric的要求,我们针对Canvas做了改变和改进。

Federico加入Red Hat实验室。

Federico花了一年时间从大学毕业,而后移居北卡罗莱纳到红帽子实验室从事GNOME工作。他在红帽子实验室的第一个任务是改进 GNOMECal日历(GnomeCal)。本来打算让他在日历软件上实现群件功能,但势在必行,最终期限和红帽子里的其他任务使Federico不能继续这份工作(顺便说句,这事是极端复杂的、提供坏标准的分类齐全的收藏。直到今天,要让一个独立的程序员接受仍然是件困难的事情,如果你希望按照标准的话)。

QPL

大概在1998年十一月,Troll科技宣布了他们的计划(纠正我:是十一月?)在新的许可证下发布Qt的未来版本(Qt2),将遵从开源定义。这个公告事实上有两个方面:它封杀了Harmony项目(这是个Qt API的自由克隆项目);削弱了对于人们为什么支持GNOME而不是等待新Qt库的思考。

1. 99代码冻结

在1998年十一月我们开始为GNOME 1.0冻结代码。我们为了融合Raph Levien的反锯齿canvas工作,数次打破了冻结。有不同的兴趣混合在这里:一方面,红帽子需要一个桌面环境,另一方面,为了使之成为可能,各地的黑客们已经工作了很长的时间。把反锯齿canvas加入到GNOME的标准版将难以解释,这会稍微耽误发布。

GNOME 1.0

GNOME 1.0版是1999年三月发布的。它是在加利福尼亚州圣何塞举办linux世界博览会期间公布的。这个版本表明GNOME 1.0版API冻结。这个版本包含几个BUG。运行在linux发行版中的第一个GNOME版本就是由GNOME1.0衍生出来的,其包括超过普通1.0 的改进。

GNOME变得难以构建和赶上时代潮流,这导致一些软件只在1.0版本中做点短暂的测试,而给GNOME 1.0一个不够稳定的坏印象。这个版本已经在面板中包含了一个非常基本的CORBA支持,一个不错的对象激活系统(不是最佳,但基本能用。GNOME 1.4中被OAF取代,2.0中被bonobo-activation取代,2.4中被libbonobo取代)。

我们修复了人们报告的BUG甚至可能的问题,然后我们不停地发布新包(一发现问题就发布修正Bug的包,这永远是个惯例)。红帽子在他们的5.0的操作系统上搭载了GNOME 1.0.xx版本, 这个版本包含一大堆的Bug修复,但是它仍然不很稳定。他们也在这个发行版中包含了KDE。

十月GNOME (1.0.55)

这个版本是Elliot Lee在红帽子整理的。这个版本的目的是修复所有陷入困境的人所报告的错误。但是这时,新的GNOME bug 跟踪系统已经使用了一段时间了,它帮助开发人员捕捉问题并在版本中修正。这个版本的GNOME相当稳定,任何人可以从各种linux发行版的卖主那里获得一份。

Elliot的工作是制作一个强大的对GNOME有利的发行版,于是这个版本就疯狂地开展了。十月GNOME 1999年十月。版本号1.0.55 与GNOME核心包以及二进制软件地主版本号相符。版本名字与数字遵循了这样一个事实,即我们视图避免与 KDE 项目的版本号竞争。因此,使用了1.0.55这个标记,“October GNOME”关键字用于指代这个版本。

GNOME早期产业

1999年十月,两个以GNOME为基础的公司在美国合并:Eazel和Helix Code。两家公司始终都是既经营GNOME的各个基础设施部分又经营GNOME桌面的各个组成部分。Eazel是由Andy Hertzfeld、Bart Decrem以及Mike Boich创立的。Helix Code是Nat Friedmand和我创立的。你可以阅读 Helix Code的历史 。

Eazel的主要中心是文件管理器和文件管理向导服务;Helix Code起运了一个叫做Helix GNOME的GNOME预包装版本,它的中心放在在Evolution中包含个人向导服务。

Bertrand在2000年第二季度成立了Henzai。他的公司聚焦于在PDA设备上的GNOME。

Gnumatic在2000年组建,从事金融软件业务,由Linas Veptas领导。Gnumatic生产GnuCash,一种Unix下的个人理财软件。

GUADEC(GNOME用户和开发者欧洲会议)

Mathieu Lacage在2000年三月在法国巴黎组织了GNOME用户和开发者欧洲会议 (GUADEC)。GUADEC 最初只是由Havoc、Federico和me一个为法国电信的学生精心策划小型研讨会。我和Mathieu讨论计划中的把GNOME用户和开发者欧洲会议变成一个大型GNOME会议的获得募捐的可能性。在他同意时,我开始从美国和德国各地的自由软件公司筹集资金。Mathieu与公司和发起人一起在法国做着同样的事。到最后,我们为四十个核心GNOME 开发人员来法国四天的行程设法筹集足够的资金。

GUADEC会议是成功的:它帮助世界各地的GNOME开发人员能够相互了解; 在会议中开发人员、投稿者、翻译人员的文档撰稿者之间高带宽通讯真正推动GNOME前进成为可能;一个项目的全景能够说明更多人更多的事物在这一刻实现同步。

有两个以GNOME为基础的公司Eazel和Helix Code在会议中表现了一番。我们最终失去了Elliot Lee,他没有走完全程。

这次会议是那年晚些时候Bongo GNOME版本成功的基础。

这封信发送给了世界各地的 GUADEC的发起人。

Bongo GNOME (1.2)

GNOME 1.2是主要的用户界面,升级和改进版。

在2000年一月Jacob Berkman开始在gnome核心中并入用户界面改进代号,这意味着来自GNOME UI小组和他、George以及其他各种黑客的各种主意加入到系统中。这个版本还包括memprof (mem buddy)为首次和将起到重要作用的用Glade GUI设计工具构建的应用程序,(当然也包括实现此目的的Glade和Glade库)。

在延迟了一个月之后,Bongo GNOME在2000年五月发布。这个版本原先假定命名为“四月GNOME”,后因延迟被迫被命名为“五月GNOME”。但是人们觉得在短短几年内我们就会用完月份数,在称呼某个版本与以前的版本时就会有点困难了。因此我们坚决地为Bongo GNOME版本和所有的被采用的包标识为1.2作为其版本号。

GNOME的这个版本也至少与他们年前运行的GNOME 1.0相兼容:每个应用程序都被重新编写,GNOME 1.0 API能够不加任何修改地运行在GNOME 1.2。Foobar菜单也出现在这个版本中,来自用户界面分组的输入可以在桌面的周围看见。

Helix Code公司提供了编译好的测试包,支持7个运行于 Intel 或 PowerPC上的Linux发行版,以及一个Solaris版。这就是著名的Helix GNOME发行版。

GNOME基金会

在2000年八月在加利福尼亚州圣和塞召开的linux世界博览会上GNOME基金会宣布成立。这里是公告的连接。

新闻中展示了广泛的覆盖面。

各种公司加入进来继续GNOME用户环境和基础技术的开发。在基金会公告之后,许多来自始创成员的倡议公布:

·Sun微系统采用GNOME技术作为他们Solaris系统上的用户环境。

·惠普采用GNOME作为他们HP-UX操作系统的用户环境。

·Sun将在他们最新的开源StarOffice套件移植Gtk+工具包,使之与GNOME Bonobo构成体系整合在一起。

·IBM为GNOME贡献了 SashXB极速开发环境。

·GNOME将采用 Mozilla,并将其整合为桌面策略的一部分。

·GNOME项目将采用OpenOffice技术。

这些公告只是一个大的描绘中的一部分:Eazel的文件管理器出现在GNOME 1.4;Helix Code的Evolution群件组出现在GNOME 1.4。加之Gnumatic、VA-Linux、TurboLinux的支持。

在这里指出Sun对GNOME的许诺是非常广泛的:他们的团队围绕GNOME从事各种技术。Nautilus和Evolution整合在StarOffice中在linux世界博览会上做了演示。

Sun创建GNOME亲和实验室

在2000年九月,Sun宣布成立一个亲和实验室以帮助改善GNOME以方便那些没有技术的人使用。

GNOME 1.4

GNOME 1.4 版本工程师是Jacob 和Maciej。这个版本将包括第一次作为GNOME的一部分的Bonobo组成体系,也将包含新的文件管理器Nautilus 和Evolution 组件套。


翻译EricNeon仿佛好象可能是
http://wiki.ubuntu.org.cn/UbuntuChina组
核心成员任务与分工
计划和方案制定和编写由 EricNeon
只是 小道八卦 本泥鳅 还未证实
头像
内存不足
论坛版主
帖子: 3277
注册时间: 2005-08-18 18:43
联系:

#8

帖子 内存不足 » 2006-03-27 14:40

盲人过来摸一摸 好多都没见过。 8)--如果破坏了泥鳅的布局自动删贴
໌→ iCookie Gtk Theme
໌→DropPlusBluetheme
กรัก กรัก`菠萝
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

#9

帖子 millenniumdark » 2006-03-27 18:59

赞!!!
加精!
woods_1901
帖子: 106
注册时间: 2006-04-08 15:22

#10

帖子 woods_1901 » 2006-04-16 19:15

我还真是文盲,看了一遍没有看全懂,再看一遍
Thinkpad R400. Debian Wheezy. Vehicle Dynamics. Germany.
http://wiki.ubuntu.org.cn/UbuntuSkills
狼神
帖子: 51
注册时间: 2006-05-18 20:01

#11

帖子 狼神 » 2006-05-18 20:14

原来是讲自由软件!还以为是讲班图呢!
头像
reshine
帖子: 91
注册时间: 2006-04-29 1:43
联系:

#12

帖子 reshine » 2006-06-22 21:06

此帖经典! 粗粗的看了几段,先保存一下,以后再仔细看看!
头像
dugowe
帖子: 34
注册时间: 2006-06-14 13:43
联系:

#13

帖子 dugowe » 2006-10-16 14:40

... mark 一下
头像
AIM
帖子: 58
注册时间: 2006-05-22 18:19

#14

帖子 AIM » 2006-11-01 19:29

此贴值得收藏! :D
spt_genius
帖子: 11
注册时间: 2006-10-23 23:53

#15

帖子 spt_genius » 2006-11-16 20:04

解脱了,终于可以脱离文盲了。 :lol:
回复