跳转到内容

FLOSS 概念手册

25% developed
来自维基教科书,为开放世界提供开放书籍

不喜欢阅读?以下的大部分内容都以音频和视频形式解释在这里

介绍 / 概念

[编辑 | 编辑源代码]

FLOSS 代表什么?

[编辑 | 编辑源代码]

FLOSS 代表“自由/自由开源软件”。

在法律上,自由软件和开源对共享源代码以及共享者在法律上需要承担的义务的态度截然不同。不同的态度是政治意识形态的产物,无法轻易调和 - 尽管可以通过参考“共享类似”和“联盟”的法律概念来中立地解释(仅限于此)。FLOSS 这一术语的出现仅仅是为了避免向普通用户解释或定义这些概念,这些用户只想了解对最终用户的意义。通常不包括贡献者之间的法律谈判。

什么是自由软件?

[编辑 | 编辑源代码]

自由软件是指任何人都可以自由使用、复制、改进、检查或分发的软件,无论是免费还是收费。更准确地说,它指的是软件用户应该享有的四项基本自由。

  • 用户应该能够将软件用于任何目的。(自由 0 - 计算机中的许多东西都从 0 开始)
  • 用户应该能够仔细检查和研究软件,并能够自由修改和改进它以更好地满足他们的需求。(自由 1)
  • 用户应该能够将软件副本提供给其他需要使用软件的人,无论是免费还是收费。(自由 2)
  • 用户应该能够改进软件,并将他们的改进自由地分发给更广泛的公众,以便他们作为一个整体从中受益。(自由 3)

这没有什么新鲜或特别之处。这就是早期的“大铁”时代软件的开发方式,当时公司通过销售硬件赚钱。但是后来,软件公司出现了,他们开始改变游戏规则。他们只把软件看作是赚钱的手段,而不是使生活更轻松的手段,随着“包装许可证”的出现,甚至提供经过适当测试的程序的必要性也消失了。

在法律上,自由软件由使用和分发软件的许可证定义,该许可证保证了所有这四项自由。任何向其他用户授予所有这些自由的用户都保留他们使用软件的权利。严格来说,软件是共享类似的,但仅限于遵守这些义务的用户。所有其他人将被取消资格,并且可能会失去使用、扩展、分发或从中派生新作品的权利。

这不是开放内容,开放内容有自己的规则

[编辑 | 编辑源代码]

一些相关的共享类似运动不接受所谓的自由 0 - 它仍然极具争议性。因此,这些运动既不是自由软件,也不是开源。但是,它们是更广泛的开放内容运动的一部分。一个典型的许可证限制某些人或群体的使用,但允许其他人根据共享类似条款使用它,例如 CC-by-nc-sa(知识共享署名-非商业性-相同方式共享许可证),它在内容和代码开发者中非常流行,这些开发者不希望商业实体在没有付费的情况下建立在他们的作品之上。

作为用户,我为什么要检查和修改我的软件?

[编辑 | 编辑源代码]

重要的是,不是你修改或查看源代码,而是你不能被阻止这样做,或者由其他人为你做,并且你不会依赖于特定的人或实体来做。更不用说,公司确实会倒闭——将他们的专有产品一起带走——有时会让依赖它们的使用者没有办法支持某些重要的产品。

随着技术的进步,硬件、软件和用户的需求都在变化。而软件,作为一种让生活更轻松的工具,也必须能够轻松快速地进行修改。因此,即使你个人无法更改或修改软件,你也要确保你不会受到软件创建者的垄断力量或甚至只是他们个人想法的影响。

除此之外,还需要能够检查软件,以查看它是否有恶意功能。例如,检查程序是否在监视你。Windows 的一个版本被设计为向微软报告你硬盘上的所有软件。但微软并非孤军作战:KaZaa 音乐分享软件的设计使得 KaZaa 的商业伙伴可以将你电脑的使用权出租给他们的客户。你(或任何其他人)需要能够检查和修改你的软件,才能保护自己免受此类侵害。即使你不知道该寻找哪些不好的东西,但很快就会有人发现程序中的这个“坏东西”并散布有关它的消息。

还有其他原因,例如能够 修复错误根据你的需要修改程序。这些将在稍后解释。

"免费"并不意味着我不必为软件付费,是吗?

[编辑 | 编辑源代码]

不。英语中的 "free" 有两种含义。

  1. "免费"在 "免费啤酒" 中,指的是零成本。
  2. "免费"在 "言论自由" 和 "自由市场" 中,指的是自由。

免费软件中的 "免费" 指的是我们上面提到的人们拥有的自由。在免费软件的定义中,并没有规定你不能以价格出售它。事实上,有些公司的整个商业模式就是围绕收集、编译和销售免费软件而建立的。但是,由于获得免费软件许可的人可以自由地转售或赠送它,因此你几乎总能在互联网上 或其他地方 轻松找到它(合法地)下载。

当你听到 "免费软件" 时,请想起自由、自由和 "自由企业"。

那么,其他类型的软件有什么是 "不免费" 的呢?

[编辑 | 编辑源代码]

如今世界上大多数非免费软件不是出售的,而是授权的。从复杂的操作系统到微小的游戏或屏幕保护程序,软件的最终用户都拥有在最终用户许可协议中规定的条件下使用它的许可。该协议列出了用户可以使用软件的条件——通常会对软件的用途施加限制。在几乎所有情况下,用户都被明确禁止 "拆开软件" 以研究它的工作原理,不能修改或改进它,只能制作软件的单个副本(用于备份目的),并且严格禁止将副本提供给其他人。

你所说的 "copyleft" 是什么意思?版权有什么问题?这有什么不同?

[编辑 | 编辑源代码]

从法律上讲,copyleft 是许可证中的一个类似共享条款,要求用户、分发者或任何基于原始作品的衍生作品作者遵守某些条件(或 "自由")。其中一项条件是根据许可证的条件平等地对待所有其他用户、分发者和衍生作品作者。其中一项平等条件是从不这样做的人那里撤回所有许可权利。

历史上,免费软件通过要求所有修改和扩展版本的程序也必须是免费软件来实现 copyleft,使用程序中的版权(以及相关的权利来限制使用它或它的衍生作品)作为杠杆。但这并没有解决所有问题。特别是,它没有阻止衍生作品作者为他们的改进申请软件专利,也没有阻止任何人基于原始软件构建 Web 服务并通过 "混搭" 方法进行扩展。这些缺陷应该在 GPL 3.0 版本中得到解决。

原始 GPL 尽管有缺陷,但它试图在所有同意其四项自由的用户之间建立一个非常小的联盟。要理解这一点,我们必须回顾替代方案。

使程序免费的最简单方法是将其置于公共领域,不受版权保护。这允许人们共享程序及其改进,如果他们愿意的话。但这也允许不合作的人将程序转换为专有软件。他们可以进行更改,多或少,并将结果作为专有产品进行分发。以这种修改形式接收程序的人没有获得原始作者赋予他们的自由;中间人剥夺了这种自由。此外,免费软件的开发人员将被迫与他们自己软件的改进版本竞争(开源允许这样做)。

Copyleft 规定,任何重新分发软件的人,无论是否有更改,都必须传递继续复制和更改软件的自由。如果他们不这样做,他们就会失去自己的权利。正如斯托尔曼所说:"Copyleft 保证每个用户都有自由,并确保没有人从免费软件中剥夺自由。"。

要对程序进行 copyleft,首先声明它受版权保护;然后在许可证文档中添加分发条款——它们构成一项法律文书,赋予每个人使用、修改和重新分发程序代码或任何源自它的程序的权利,但前提是分发条款保持不变。因此,代码和自由在法律上密不可分。

根据自由软件基金会的说法,"专有软件开发人员使用版权来剥夺用户的自由;我们使用版权来保证他们的自由。这就是我们颠倒名称的原因,将 "版权" 改为 "copyleft"。" 然而,从历史上看,这个词仅仅是唐·霍普金斯给理查德·斯托尔曼的一封信中添加的笑话或双关语,他在注释中写下了 "copyleft - 所有权利反转"。

最流行的 copyleft 许可证是 GNU 通用公共许可证

有哪些许可证可以保护免费软件?

[编辑 | 编辑源代码]

有很多许可证可以使软件变得免费。但只有其中一些保留了用户自由,即 copyleft。非 copyleft 许可证包括 X11、BSD、Artistic ... 最强大的 copyleft 许可证以及最广泛使用的免费软件许可证是 GNU 通用公共许可证,简称 GNU GPL。

有关更完整的许可证列表,请查看 GNU 网站

[编辑 | 编辑源代码]

我们免费软件社区认为,阻碍软件使用的损害不能用通过出售软件获得的利润来证明。我们使用其他方法来赚钱。

此外,如果有人没有免费获得软件,他们很可能根本就不会获得它。例如,考虑一下所有从点对点程序中非法获得专有软件的人。

与你假设允许分发和修改会导致损失相反,理查德·斯托尔曼列出了限制分发和修改造成的物质损害的三个级别

  1. 使用该程序的人更少。
  2. 没有用户可以调整或修复程序。
  3. 其他开发人员无法从程序中学习或基于它进行新的工作。

如需详细分析,请查看斯托曼撰写的论文"为什么软件不应该有所有者""为什么软件应该免费"

软件程序的这种自由很有趣。这能扩展到其他形式的信息,比如书籍吗?

[编辑 | 编辑源代码]

是的。例如,大多数免费软件程序的用户手册都是根据免费或版权许可发布的。目前,许多文献都以许可性条款提供,例如GNU 自由文档许可证 (GFDL)知识共享署名 - 非商业性使用 - 相同方式共享。

但与软件不同,书籍和文章包含言论和个人观点。此外,对特定工作的个人署名也很重要。因此,无限修改的益处并不总是适用于文学、科学或其他内容。因此,开放内容运动更侧重于类似共享条款。

这些条款并不局限于那些免费软件或开源软件的要求。例如,它们包括知识共享非商业性使用许可证,除非商业方协商平行商业许可证(也可能是类似共享许可证或更像是专有许可证),否则禁止商业方使用。其他类似共享条款建议对衍生作品的创作者遵循具体的争议解决、科学方法或新闻报道程序。

与最初的自由软件基金会一样,每个条款都会创建一个全球联盟,主要依靠许可证来执行其规则,并利用使用或改进内容的权利作为杠杆。

FSF 本身已经认识到开放内容和自由软件之间的区别。GNU 自由文档许可证被维基百科和维基教科书使用,其中包含条款,拒绝任何不署名作者或其他贡献者的人使用内容的权利,但这与自由软件条件类似。GFDL 清晰明确地允许商业用途,并且支持注释和“不变部分”,可以可靠地确定材料的来源或可靠性,或总结对其的异议 - 尽管这些目前没有被维基百科或维基教科书使用,但它们对于不允许所有用户编辑的那些服务而言,仍然是必要的。

自由软件历史

[编辑 | 编辑源代码]

这整个自由软件运动是从什么时候开始的?

[编辑 | 编辑源代码]

软件共享与计算机一样古老。但自由软件运动的历史可以追溯到麻省理工学院人工智能实验室的软件共享社区。理查德·斯托曼于 1971 年加入该实验室时成为该软件共享社区的成员。

在 20 世纪 80 年代初期,由于一系列事件,黑客社区崩溃了。理查德·斯托曼是实验室里为数不多的黑客之一,他面临着严峻的道德选择。他可以选择接受世界已经改变并开始使用专有软件。或者他可以创建一个自由的操作系统,从而重建一个合作黑客的社区。简而言之,他要么改变自己,要么改变世界。

斯托曼决定改变世界。于是 GNU(发音为 Guh-new,与 canoe 押韵)项目诞生了,这是一个免费的 Unix 操作系统替代品。1984 年 1 月,斯托曼辞去了在麻省理工学院的工作,开始编写 GNU 软件。斯托曼编写的第一个 GNU 软件之一是 Emacs 文本编辑器。随着时间的推移,越来越多的黑客加入了斯托曼,并开始组建一个完整的自由软件主体。这涵盖了从像 ls 和 cp 这样的微型程序到像 GNU 编译器集合和 Bash shell 这样的庞大软件包。

Free software Timeline
自由软件时间线

好吧,那 Linux 是什么呢?它是什么时候出现的?

[编辑 | 编辑源代码]

直到 1991 年,GNU 项目才创建了完成一个完整操作系统的所需程序,除了一个重要的部分 - 内核。简而言之,内核是提供对机器硬件的安全访问的软件,并决定哪些软件在何时使用哪些硬件。到那时,一位名叫林纳斯·托瓦兹的芬兰学生编写了一个名为 Linux(发音为 Lee-nux 或 Lin-ux)的免费 Unix 兼容内核。内核与其他 GNU 软件包结合在一起,形成了一个完整的可使用操作系统。如今,这种组合被称为 GNU/Linux,尽管它经常被错误地称为 Linux

这开源是什么东西?

[编辑 | 编辑源代码]

开源与自由软件类似。最大的区别是开源将 FLOSS 仅仅视为一种制作更好软件的方式,并不重视人们的自由。

开源是怎么开始的?

[编辑 | 编辑源代码]

1998 年,一些自由软件开发者意识到,如果他们对伦理和自由保持沉默,只谈论自由软件的实际利益,他们也许能够更好地传播自由软件,特别是向企业传播。术语“开源”被提出来作为实现这一目标的方式。

为什么开源和自由/自由软件经常被归类在一起?

[编辑 | 编辑源代码]

大多数(并非全部)开源软件也可以被视为自由软件,反之亦然。

哪个更好?自由软件还是开源软件?

[编辑 | 编辑源代码]

这两个术语实际上总是应用于相同的软件程序,但自由软件作为一个运动,要比开源更好,因为它重视你的自由,并为软件开发提供了更优越的模型,而开源只倡导一种开发模型。

生产方法

[编辑 | 编辑源代码]

自由软件究竟是怎么制作的?

[编辑 | 编辑源代码]

与其他软件的制作方式相同。人们坐在电脑键盘前,输入命令和代码并编译它们。

为了正确理解自由软件的制作方式,我们需要了解所有软件——自由和专有软件——是如何制作的。

点击以下链接以了解有关谁在做这件事? 的更多信息: http://widi.berlios.de/paper/study.html

好吧,那么软件是如何制作的呢?

[编辑 | 编辑源代码]

软件程序本质上是一组指示计算机执行特定任务的指令。由于计算机本身没有思考能力,因此它只能理解用特定语言编写的指令,这种格式被称为“目标代码”。不幸的是,对人类来说,目标代码看起来像乱码。在创建软件时,人类使用一种他们容易理解的特定格式,称为“源代码”。源代码使用字母、数字和标点符号,就像任何人类语言一样,可以被学习过的人类理解。因此,我们现在有源代码,一种人类编写或创建程序的格式,但对计算机来说看起来像乱码;以及目标代码,一组计算机可以理解但对人类来说看起来像乱码的指令。一个名为编译器的特殊程序将源代码转换为目标代码。重申一下,人类用名为源代码的格式写下他们想要计算机做的事情。然后它被翻译成计算机唯一理解的语言——目标代码。一个名为编译器的特殊程序进行这种翻译。

现在我已经理解了软件是如何制作的,那么自由软件是如何制作的呢?

[编辑 | 编辑源代码]

记住,大多数人不能轻易理解目标代码。因此,如果一个人想要仔细研究、修改或改进一段软件,他们必须能够访问该软件的源代码。由于自由地检查、修改或改进软件是自由软件概念的核心,因此,要将一段软件视为自由软件,人类必须能够访问该软件的源代码。

与专有软件不同,专有软件只有原始软件创建者(或他们明确授权的人)才能访问源代码,任何感兴趣的人都可以访问自由软件的源代码。因此,如果自由软件的用户想要修改或改进它,他们可以自由地这样做。在许多情况下,进行改进的人会通过互联网将改进后的软件提供给更广泛的公众。根据定义和实践,通常只通过互联网相互联系的人协作创建自由软件。自由软件创建过程中经常被忽视的一个关键方面是来自普通用户的投诉和建议形式的反馈。这种反馈被积极寻求,并且存在许多工具可以使普通用户轻松地将这些投诉、错误报告和建议整合到生产方法中。

那么这与其他类型软件的生产有什么不同呢?

[编辑 | 编辑源代码]

通常,生产非自由软件的实体对谁能够访问其程序的源代码有非常严格的限制,并且只以目标代码格式分发其软件。这样做的原因是,虽然将源代码编译成目标代码非常容易,但从目标代码中获取原始源代码非常困难。一个比喻是乳酪。虽然用牛奶制作乳酪很容易,但从乳酪中获得牛奶几乎是不可能的。

什么样的人制作自由软件?

[编辑 | 编辑源代码]

许多编写自由软件的人都是志愿者,他们可能有一份与之无关的白天工作。这些人将空闲时间用于开发自由软件。

从自由软件分发中获益或提供自由软件支持的商业组织也通过投资其利润的一部分来开发自由软件。Red Hat就是一个这样的组织。

有许多非营利组织通过自由软件用户的捐款筹集资金来开发自由软件。自由软件基金会就是这样一个组织。其他例子包括SPI、GNOME基金会、Mozilla基金会等等。

一些自由软件包是由大学开发的。Festival文本转语音引擎、Octave(Matlab克隆)是大学开发的软件的例子。

许多商业组织也为自由软件的开发做出贡献,因为这些组织从现有的自由软件代码库中获益。例如,IBM维护着Linux移植到PowerPC CPU的版本,因为它需要一个操作系统来运行其CPU。

但我仍然不明白,为什么有人会想免费赠送他们的作品?他们从中得到了什么!?

[编辑 | 编辑源代码]

出于爱或为了钱。

是的,人们确实通过将他们创建的软件发布为自由软件来赚钱。像MySQL和Red Hat这样的公司机构,因为它们将自己创建的软件发布为自由软件(并提供自由软件的支持合同)而赚钱。并且他们发现,他们能够赚到的钱比他们将软件保留为非自由软件时所能赚到的钱多得多。

使用“赠送”一词来表示“将程序分发为自由软件”具有误导性。它暗示问题是价格,而不是自由。避免混淆的一种方法是说“发布为自由软件”。

人们编写自由软件的原因有很多。有些人可能只是想让自己的作品传播到世界各地。许多人希望生活在自由中。他们为自由软件做出贡献,以便他们能够继续生活在自由中。有些人编写自由软件只是为了好玩。他们热爱编程,因此利用他们的编程技能做一些有用的事情。

你可能想阅读埃里克·雷蒙德的论文,标题为Noosphere的宅基地。埃本·莫格伦在他的名为无政府主义的胜利:自由软件和版权的消亡的论文中解释了“莫格伦对法拉第定律的隐喻推论”。这条定律也解释了为什么人们开发自由软件。

使用自由软件的论据

[编辑 | 编辑源代码]

我仍然没有被说服。在软件设计方面,大型计算机公司肯定最了解?为什么我要使用由业余爱好者设计的软件?

[编辑 | 编辑源代码]

自由软件并非由业余爱好者创建。自由软件开发过程是公开透明的。如果你想将你的代码包含在一个自由软件项目中,它将受到许多人的审查。业余或写得很差的代码会被直接拒绝。

虽然你认为“大公司”在软件设计方面更胜一筹的说法值得怀疑,但“大公司”也可以自由地开发自由软件。而且它们确实开发了自由软件。例如,Red Hat、Sun、Novell和IBM都开发了自由软件。

如果有一群人想编写特定软件,他们可以筹集资金,聘请一家编程公司,让专业人员编写软件,然后将其发布为自由软件。没有理由让自由软件必须由业余爱好者编写。

即使由业余爱好者设计的自由软件比由专业人员设计的非自由软件更差,你可能仍然想使用自由软件,因为它赋予你自由,而自由更重要。此外,喜欢这个想法的更好的程序员可以为这个项目做出贡献。

大型公司在软件设计方面更了解,这绝对不正确。它们依赖于一小群程序员,并且通常不像自由软件那样与用户密切接触。因此,自由软件开发人员通常更了解用户的需求以及他们对现有版本的投诉。一些大型公司允许技术能力不足的营销专家做出软件设计决策,这些决策优先考虑营销需求,而不是用户的需求和软件的健壮性。

无论如何,对许多自由软件应用程序的检查表明,如今它们与等效的非自由应用程序一样好甚至更好,或者正在快速达到这一水平。并且很大一部分自由软件开发人员并非业余爱好者。而且你如何知道销售非自由软件的大公司是否雇佣了业余程序员来编写代码?

我们使用什么取决于我们想要什么。对于电脑用户来说,能够完成他们想要完成的事情的软件是必要的。如果这样的软件不存在,那么他们就不能做那种特殊的工作。工作能完成得有多好,以及完成得有多快,取决于可用的软件和硬件的质量。因此,人们希望拥有能够让用户以最少的努力完成工作并获得最佳输出的软件。软件的这些特性通常会随着时间的推移而改进,术语“站在巨人的肩膀上”适用于自由软件,因此改进会带来进一步的改进。在非自由软件下,它总是“重新发明轮子”,或者更糟糕的是,为了让另一家公司或个人改进代码而规避专有限制。

但比所有这些更重要的是软件的自由度。如果软件受到限制,并且制作软件的公司隐瞒了有关软件是如何创建以及文件是以什么格式创建的所有信息,那么用户就会依赖于该公司,并受到剥削。由于这些在更大的背景下更为重要,因此在使用非自由软件时,使用自由软件非常重要。

但是漏洞怎么办?自由软件更容易受到病毒感染吗?

[edit | edit source]

这个问题涉及两种不同的计算机相关问题 - 漏洞和病毒。

漏洞是程序中无意的错误。在使用自由软件时,当你发现程序中的漏洞时,你就有权行使自由二,即帮助自己并纠正程序的自由。如果你不是程序员,你可以自由地将漏洞报告给软件维护者,或者雇用任何程序员来纠正程序。你不必受制于任何单一组织。通过向软件包的维护者提交漏洞修复,软件包会越来越好。

病毒是一种恶意程序,它通过在其他程序中嵌入自己的副本来感染其他程序。有关这些安全风险的更多信息,请参见下面的部分。

由于源代码是可用的,是不是很容易让人找到安全漏洞并利用它?

[edit | edit source]

是的,但在源代码到达利用漏洞的人手中之前,它会经过开发自由软件的人手中。他们通常会修复这些漏洞。

在使用自由软件的情况下,利用漏洞的事件会非常、非常快地报告和修复,通常在几小时内。

换个角度看,由于源代码是可用的,所以很容易有人找到安全漏洞,甚至在它被利用之前就制作一个补丁!

此外,GNU 操作系统从一开始就以安全为设计理念。

所以你是说自由软件的演进速度实际上比非自由软件快?

[edit | edit source]

自由软件的演进速度非常快。这主要是因为它涉及到它的用户,用户会为工具的开发贡献漏洞报告,甚至代码补丁。开发的路径和速度非常开放,只有真正需要的功能和问题才会被解决。快速发布和经常发布是这种开发的主要“口号”。

但是请注意,这仅有利于已经达到普遍使用的阶段的工具。一旦发生这种情况,用户也有兴趣推广并实际参与开发。在某种程度上,这确保了只有值得的和有用的工具才能以这种方式获得支持。

与流行的假设相反,这种模式是自由放任,以尽可能真实和高效的方式。供求关系在供应者和消费者更多的情况下运作得最好。而这就是这里发生的事情。

演进的速度实际上是由软件的流行度和实用性决定的。软件越流行,它演进的速度就越快。事实上,如果任何事情阻碍了这种速度,比如不感兴趣的维护者或被放弃的公司,通常其他的人会作为项目的开发者站出来。或者有时,项目的派生分支会产生(不是说它们没有在其他时候产生),以继续开发,在另一个旗帜下进行,因为原始源代码可以被任何人自由使用或维护。

与专有软件采用的孤立开发模式相比,这是一个巨大的优势。对于工具的延续性也不存在任何疑问,这是软件演进路径中的最终障碍。

这个概念在埃里克·雷蒙德的论文《大教堂与集市》中得到了很好的解释。

自由软件只被电脑爱好者使用,对吧?

[edit | edit source]

错。

自由软件被那些更看重自由的人使用,而不是其他任何东西。

全世界数百万人在访问互联网上的热门网站时,实际上是在使用自由软件,而没有意识到这一点 - 请参见下面的部分。

有哪个知名组织真正利用自由软件获得了优势?

[edit | edit source]
  • 此页面托管在运行自由软件(GNU/Linux,Apache/1.3.29(Unix),PHP/4.3.4)的服务器上。
  • 超过 98% 的域名服务器都使用名为 BIND 的自由软件来识别页面(如 http://wikibooks.org/)所在的机器。
  • 超过 80% 的所有网站服务器都使用名为 Apache 的自由软件来提供他们的网站。但不幸的是,由于 Apache 没有遵守 copyleft 协议,因此这些服务器中的许多都运行着 Apache 的专有版本。
  • 超过 60% 的所有网络服务器都运行 Linux 内核,另一个自由软件。
  • 大多数计算机上的 TCP/IP 实现(包括那些运行非自由操作系统的计算机)都是自由软件。
  • "Digital Domain 使用 105 台运行 Red Hat [GNU/]Linux 的 DEC Alphas 来模拟和渲染詹姆斯·卡梅隆的《泰坦尼克号》中的水" -- http://www.computer.org/computer/homepage/0202/ec/

与自由软件的个人关系

[edit | edit source]

使用自由软件,我可能会遇到哪些问题?

[edit | edit source]

与非自由软件一样的问题。

今天自由软件的一些问题是:

  • 不一致。以手册为例。有些自由软件附带信息手册,有些附带 man 页面,有些附带 HTML 文档,有些附带纯文本文件,还有一些只附带源代码注释!
  • 无法使用某些专利算法。但这不是自由软件本身的问题。
  • 某些设备的驱动程序不可用,尤其是“WinModems”。
  • 自由软件在美国法律上不能用于某些涉及复制保护技术的活动。这包括播放加密的 DVD。

好吧,但是为什么我需要修改我的软件呢?

[edit | edit source]

有很多原因。例如,某个软件不支持你的本地语言。你希望这个软件能提供你的本地语言版本,以便你可以使用它。如果这个软件是专有的,你将不得不去恳求软件的“所有者”。如果他认为进行更改不盈利,他不会进行更改。使用自由软件,你可以自己进行更改,或者你可以去一家编程公司,要求他们为你进行更改(理查德·斯托曼就是通过这种方式在一段时间内维持生计)。使用自由软件,你并非无助。

还要考虑这种可能的情况。在你接受教育期间,你可能编写过一个项目、论文或学位论文。很有可能,你可能使用过朋友或大学的计算机来创建这些作品。没有保证,你几年后在怀旧的心情下决定翻阅过去的作品时,就能获得与创建该文件时相同的软件或软件包。此时,你会想修改现有的软件来读取新的文件格式。

如果你是一个需要(或者像经常发生的那样,受法律义务)长期保存某些信息的组织,通过第三方供应商修改你的软件的权利是最重要的权利。

听着,我不是电脑高手!我直接使用打包软件不是更容易吗?如果出现问题,我该找谁呢?

[edit | edit source]

如果你不是电脑专家,使用自由软件就更重要了。这样,你就不用依赖于你购买非自由软件的公司。

首先,阅读软件附带的文档。如果这没有帮助,请尝试使用搜索引擎(如 mozDex)在网上搜索。最后,尝试以下方法之一。

如果你正在寻找“免费”的帮助,你的当地总会存在一个自由软件用户组或 Linux 用户组。找到一个。或者询问任何提供支持的无数邮件列表或论坛。你会对收到的回复和支持感到惊讶。一个论坛是 Nuxified.org。还有更多受欢迎的论坛,但有些没有树立好榜样——他们使用非自由软件(如 vBulletin)来为他们的网站提供动力。

如果你愿意花钱,你始终可以聘请一家公司或一位咨询程序员来帮助你。

你也可以从专业公司购买支持。由于软件本身是开放的,支持供应商无法像使用专有软件那样把你锁定。你始终可以自由地选择另一个支持供应商。

此外,如果你的需求非常大,拥有一个内部软件开发和支持团队,他们将使用自由软件来满足你的需求,并不断维护它,这将是非常划算的。

但我怎么知道我能信任一个没有与拥有信誉的大公司相关联的人呢?

[edit | edit source]

许多大公司确实为自由软件提供支持。许多大公司为他们的服务收取的费用是许多个人或小型公司的几倍。请记住,在自由软件场景中,你只为服务付费,而不是为产品或软件包付费。因此,将会有巨大的节省,即使那些从事自由软件的公司或顾问是其领域的专家和市场领导者,他们也将始终拥有较低的营业额。

此外,一家鲜为人知的小公司/个人可能会获得坏名声。

我应该使用哪个 GNU/Linux 发行版(简称发行版)?

[edit | edit source]

有许多公开可用的 GNU/Linux 发行版。 Distrowatch维护着一个发行版列表,其中包含其功能的摘要。 Fedora Core(以前称为 Red Hat)、OpenSuseUbuntu是新用户受欢迎的发行版(按字母顺序排列)。还有许多其他发行版,例如 Damn Small Linux、Gentoo、Morphix、Slackware 等等。

Ubuntu是一个基于 Debian GNU/Linux 的发行版,但旨在易于使用。他们提供了非自由软件,但默认情况下不会启用它。它有一个 Live CD 可供使用,允许你在不安装到计算机上的情况下测试发行版。

OpenSuse是一个功能强大且易于使用的发行版。他们的评估版包含非自由软件,但开源软件版不包含。

Fedora Core也是新用户友好的。

如果你精通计算机并且对 GNU/Linux 系统有一些工作经验,请尝试使用 Debian。Debian 的主要优势在于其庞大的软件包数量。它还支持许多不同的架构。Debian 还具有不使用 Linux 作为内核的发行版,例如 Debian GNU/Hurd 和 Debian GNU/kFreeBSD。只有在你真的有兴趣开发自由软件时才使用这些发行版。但是要注意,Debian 在其软件包存储库中包含非自由软件,这些软件包的名称以“-nonfree”结尾。

为了避免使用非自由软件,你应该避免使用 Mandriva(以前称为 Mandrake)、MEPIS、KNOPPIX、Linspire……这些发行版默认情况下包含非自由软件包。

如果你正在寻找 100% 免费的发行版,你应该尝试 gNewSenseTrisquel

根据你的需求,甚至还有专门的 GNU/Linux 发行版。有一个发行版专门播放视频光盘。有几个发行版仅用作防火墙。有些发行版可以从一两张软盘运行。有些发行版旨在用作救援盘。还有一些发行版专门用于音乐家和地理信息系统 (GIS)。大多数主流发行版都附带了几张光盘,但你通常可以使用第一张或两张光盘来创建一个可运行且可用的系统。

我在哪里可以找到自由软件?

[edit | edit source]

一些好的来源是

注意:接下来的两个也列出了非自由软件,尽管大多数是免费的。

我有一些 Windows 软件,我在 GNU/Linux 上找不到替代品!我在哪里可以找到一个?

[edit | edit source]

查看 Ubuntu 社区上的自由软件替代页面适用于 Windows 的 GNU 软件

好的,那么我如何开始在我的机器上安装自由软件呢?

[edit | edit source]

再次,你开始在你的机器上安装非自由软件的方式相同。你可以购买预装了自由软件的计算机。或者你可以让朋友帮你做这件事。或者找到一个专业人士来做这件事。

如果你决定自己动手,请尝试许多不同的软件,直到找到你喜欢的软件。

大多数发行版都内置了一种简单地安装软件并查找其所有依赖项的方法,称为包管理器。一些包管理器是

  • Smart 支持多种类型的存储库,包括 yum、apt、apt4rpm 和 urpmi。
  • Yum 用于 Fedora Core
  • Apt 用于 Debian
  • Apt4RPM 用于 RPM 发行版
  • Portage 用于 Gentoo
  • Ports 用于 FreeBSD

如何将我编写的软件变成自由软件?

[编辑 | 编辑源代码]

请参阅 GNU GPL 的最后一部分。 务必编写 自由文档(或让其他人来做)!

我怎样才能从自由软件中赚钱?

[编辑 | 编辑源代码]

最简单的方法是销售自由软件。 务必向他们解释,这是自由的问题,而不是价格。 与软件一起分发本书可能是个好主意。 请记住,如果软件在 GNU GPL 下,并且您分发二进制文件,则必须将源代码与二进制文件一起提供,或者单独提供源代码。

您还可以编写 自由文档 并出售。 上述段落中的相同内容也适用于这里。

另一种方法是,如果您能编写软件,可以自雇来添加/更改自由软件中的某些内容。 如果您是软件的维护者,您可以让人们付费让您将项目中添加/更改的优先级提高。 这就是 Richard Stallman 过去用来养活自己的方式,而且他还在继续。

华夏公益教科书