首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

穷人的开源与共享(2)

从1998 年到现在,我接触 Linux 及开源软件刚好有 20 年了。这些年来,在工作单位及朋友之间我曾经做过不少与 Linux 相关的推广工作,也在软件方面帮助过不少人,我想,坐下来谈谈关于开源软件的心得,这一点资格应该是有的。至于是不是写成一个系列,视时间及读者的反应再定吧。

这一篇虽然是谈软件,但并不涉及具体的技术,只谈一些相关的情况与理念,适合的读者群体应该宽泛一些。

1. 我与开源软件的缘分

2. 免费软件、开源软件及自由软件

3. 自由软件的门槛与代价

4. 穷人的开源与共享

5. 科学研究与开源软件

03

自由软件的门槛与代价

使用各类软件都有其相应的代价:

使用盗版软件是上不了台面的,不必多言。

试用软件就像是超市推销员端的盘子里的糕点,品尝可以,你有多大的意愿靠它果腹呢?

商业免费软件就像是是商场各种大酬宾的广告,实在太穷了要以它果腹,也未尝不可,但是,稍有点消费能力的人还是希望直接购买自己想要的商品。

各种商业软件功能参差不齐,使用它们,除了消耗银子外,往往还会受到商家的各种限制,比如:

只能安装在一台电脑上,更换电脑或重新安装需要重新申请序列号;

只能在指定的系统上安装使用,通常是 Windows 系统;

想要对软件本身做一些修改,即便你自己有这样的修改能力,也必须征求商家的同意,或者购买其他的服务;

甚至,当你要获取支持时还不得不忍受某些商家对待客户的傲慢;等等。

如此说来,似乎使用开源与自由软件的代价就没那么明显了。是的,使用它们的代价往往会被忽略,但当你深入进去之后,你会切实体会到代价的存在。不妨谈一些个人的感受。

上世纪 80 年代,Richard Stallman 发起的 GNU 项目,其根本目的就是要获得修改定制软件的自由。但是,这种自由的门槛往往被忽视了。那一批如同 Stallman 一样的黑客,要么毕业于哈佛,要么工作于麻省理工,要么拥有各类理工类高级学位,他们至少都具备相应的数学、物理、电子电路等基础,计算机是他们的玩具,他们不希望游戏的乐趣被限制。从一开始,自由软件要追求的利益就隐含着一个前提条件:你得具备修改定制软件的能力。但是,如何获得这种能力,这就不是自由软件本身的任务了。

首先,学习的代价。

软件功能本身只是自由软件好处的一部分,它真正的好处在于自由修改。要想体会自由软件的全部好处,你必须具备足够的知识基础,需要学习到一定的程度。你的知识越丰富,自由软件的好处就越明显。这学习的代价是必须要付出的。

商业软件也会有学习的门槛,尤其是专业软件。但商业软件会花大力气去准备教学材料,让入门变得更轻松,商业软件的这种努力回报丰厚,因为:越是专业的软件,其学习的成本很高,一旦投入大量的精力去学习使用,很少有人愿意再切换到其他的同类软件上,对它的依赖性也会越强。但就商业软件而言,其学习成本的回报只是将这个软件用得更熟练罢了,用户基本上没有修改的自由。

其次,时间的代价。

自由软件往往是少数人或团体的成果。他们会尽可能兼顾用户的需求,但不会象商业软件那样专门投入大量的人力物力来进行市场调研,非常有针对性地解决特殊的需求。当软件需求没有被满足时,因为有修改的自由,你可以自行通过修改软件来自我满足,这就需要花费时间。(当然,不缺钱的情况下,你也可以雇他人来替你解决问题。)

不过,如果某个自由软件形成了一个生态,情况会大大不同。因为自由软件具备自由扩展的能力,一旦其用户数量多到一定程度,你能够遇到的问题,其他人往往也遇到了,而遇到同样问题又具备扩展能力的用户还是很容易找到的,分享自己的解决方案,这又是自由软件社区的传统之一。因此,越是流行的自由软件,你的问题得到立刻解决的机会就越大,在这种情况下,使用自由软件反而是节约了时间。比如,在 Python 及 Emacs 社区,几乎所有常见问题都很容易找到专业的解答。相比之下,商业软件出了问题只能找厂商,只能等待他们去解决,有时甚至需要等待很久,付出其他的额外代价。

最后,孤独及其他不可预知的代价。

毕竟,不可能人人都是开发者。开源也好,自由也罢,都需要一定的实力,即具备相应的知识与技能,你才能够修改。需要查看源码的软件用户不会超过 1%,有能力去修改的用户会更少。如果某个自由软件的用户数量不大,往往只有几个人在那里研究代码并进行修订,这个过程中你经历的那种心境叫孤独。

至于不可预知的代价,可回顾一下我前面的经历,比如:一个行政命令就可轻松毁掉你在使用开源上的所有努力;已经开源了的软件在申请专利方面会存在麻烦;等等。

04

穷人的开源与共享

富有则意味着你可以购买很多东西与服务,贫穷则会限制你的选择。努力未必会有回报,或者未必有足够的回报,因为马太效应及未知风险是客观事实,但不努力则肯定不会有回报。有时,穷反而需要更多的努力,那就是穷人的精打细算。我想,这些道理也适用于使用软件上。

穷人的购买力欠缺,在软件使用上要怎么精打细算呢?商业软件视钱袋量力而行,这儿不讨论。穷人能够精打细算的也就是免费软件了。精打细算,也就是仔细衡量投入与收益。

商业免费软件是可以用的,有时还不得不用,比如微信。但是,要评估一下你所付出的代价,比如时间、广告的骚扰、恶意软件的监控等等。个人建议:除了必须使用的那些(如俨然已经绑架了国人的微信)之外,其他的最好别碰,尤其是那些所谓的系统管理、优化之类的软件(即便要用,也要仔细遴选)。

穷人,首选自由软件(以GPL、BSD等方式授权的)。理由如后。

也许,有些软件入门上稍微困难(比如,缺乏文档,等),但你拥有完全的使用自由,不仅免费,而且能够学习其开发的过程,获得软件使用之外的收益。其实,经历了三十多年的发展,自由软件无论在质量、文档、教学资源上都十分丰富了,门槛也没有那么高了。我个人的亲身体会,与 20 年前相比,现在的自由及开源软件无论在功能与入门资源上都不可同日而语,投入的学习成本已经大大降低。

成长的收益。

自由软件社区鼓励分享与探讨,拥有十分友好的氛围,这种氛围对你的成长颇有助益。提醒一下,中国人使用开源软件有语言上的障碍,因为那种友好的氛围我很少在汉语交流圈内看到,在以英语为主的交流圈内才是普遍现象。

前面之所以说“开源软件在国内的发展并不顺利”,原因之一:20 年前,在使用汉语的开源交流圈内,这种友好的氛围也是很常见的,如今则越来越罕见了。现在,我见到很多的索取与抱怨,诸如——“软件崩溃,急急,在线等”;“某某开源软件不好使,作者怎么不去死”;等等。所以,如果想从开源软件中获得成长,你最好精通英语,加入更广阔的交流社区,避开那些怨气冲天的人。

自由软件强调分享、感恩及有建设意义的意见。有能力修改或增强软件本身,这是最好的回报。不能增强软件,则提有建设意义的使用意见。不能修改也没意见,还可以通过捐款等方式来鼓励软件开发者。至少,当别人问起时,你还可以说:某某开源软件帮助过我。

在 GNU 项目开始一二十年后,大约在90年代后期及21世纪初期,除了能够满足黑客的定制自由外,商业软件也开始从中获益,不少商家开始参与到开源之中,比如曾经视 Linux 为“软件毒瘤”的微软。但商家参与开源软件,其目的有根本的不同,他们是想利用开源社区的力量与成果来完善自己的产品或服务,从而吸引更多的客户,获得更多的利润。软件商家的开源通常会选择与 GPL 不一样的版权,以规避其中的法律风险,便于自己的利益最大化。

对商家来讲,开源与闭源不过是一种商业形式。但对自由软件来讲,开源则是一种必然选择。诸如微软之类的公司,它们混迹于开源社区,我视为受用户影响而被迫的行为,这对自由软件有哪些伤害,还难以评估。从长期可持续发展的角度,穷人可以暂时使用微软的那些开源软件,但要始终保持警惕。用户应尽可能以自由软件为主体,那才是在足够的知识储备之下用户能够完全掌控的东西。

自由软件的开发也是需要投入资金的,除了捐款,还有什么途径呢?有一个开源的教育类软件叫 GCompris, 它在开源系统下是全部功能并免费使用的,在闭源的 Windows 平台上则只开放部分功能,用户需要额外的购买,其购买收入被用于软件开发之中。我觉得,这个案例提供了一个典型的解决方案。等等。

除了软件之外,其他电子化的资源也需要很多投入,比如电子书、图片、字体、音乐、游戏,等等。这些电子化的资源如果全部购买,穷人们往往也承担不起。但共享精神无处不在,以“知识共享”(Creative Commons)授权的电子化资源也十分丰富,应该是穷人们的首选。

穷不可志短,不用盗版与破解软件、不用盗版资源,并不是不能活,反而能活得更精彩。不过,有时候,有些人虽然穷,但宁可在游戏中花费无数的钱财,也不愿去购买实用的软件,这也是妥妥的现实,不作展开。

我简单计算过,如果将我所使用过的自由及开源软件全部换成相应的商业软件,其费用将十分可观,并且很多开源软件还没有相应的商业软件可以替代,比如 subversion, git, emacs org-mode, TeX, 等等。更重要的是,选择自由及开源软件,开销甚微倒在其次,通过学习研究这些软件丰富了我的知识,开拓了我的眼界,也完善了我对软件的认知,这是一笔可真正共享的财富。

自由软件、开源软件及智慧共享资源是一批可持续发展的电子化财富,不妨善用!

05

科学研究与开源软件

在 TeXmacs 的软件哲学当中有这样的一段话:

……

然而,奇怪且令人惭愧的是,当前使用的主流数学程序都是私有软件。主要原因是,数学家往往并不认为编程是完整科学研究的一部分。因此,实用软件的开发被委托给了“工程师”,得到的程序被当作黑匣子来用。

这种科学活动的划分是十分人为的:从科学的角度来看,知道黑匣子里有什么,这十分重要。反之,深入的科学理解也会出产更好的软件。因此,我认为,科学家应该提倡将软件开发作为完整的科学研究活动。当然,这类软件也应该以符合科学要求的方式来传播:公共可获得,可重复,以及自由使用。

就学术研究而言,这些年来开源软件逐渐成为主流,这是一个可喜的现象。比如:十多年前,主流的统计软件是私有的 SPSS,现在则是 R;以前,主流的数据处理平台是 MatLab 等,现在则是以 Anaconda 为代表的 Python 生态;以 Jupyter Notebook 为代表的笔记本式科学计算模式开始逐渐赢得科研人员的喜爱,有超越经典商业软件 Mathematica 的趋势;在人工智能领域,几乎是 Python 为一边倒的形势;等等。

“深入的科学理解也会出产更好的软件”。最显然的例子就是TeX排版系统:正是因为 Donald Knuth 对学术文章排版的深刻理解,这个软件才席卷学术界,成为数学与物理学论文排版的不二之选(使用 Word 之类的软件来排版数学文章,总有一种十分业余的感觉)。

TeXmacs 的这段话颇令我感触!其实,这 20 年来,除了穷之外,在十分困难的情况下(如被强制断网,等等),我仍然坚持使用自由软件,最主要的原因与这段话的意思相符,我认为:学术研究的每一个步骤都应该具备透明、可验证及可重复的特性,至少对研究人员自身要有这种保证。使用自由软件,从主板加电的那一刻起,到最终绘制出的数据表格,这中间的每一个过程对我保证了最大限度的透明。

自由软件,不仅保证的是修改使用的自由,其本质更符合学术研究的精神:透明、可检验、可重复。

使用自由软件 20 年,以此为记。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180706G08GNM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券