点击这里给我发消息 点击这里给我发消息
首页 > 行业资讯 > IT风云>详细内容

软件自由日的意义和自由软件推广的思考

添加时间:2010-9-30
    相关阅读: 软件开发 开发系统 软件设计 设计 软件 开发 技术

2010年是第X个软件自由日,自从2004年开始,软件自由日在全世界范围内铺天盖地开展。在中国,全国各地分站的活动火热进行,特别是在大学校园举行的推广活动,对大学生──这个学习和思维能力强的群体,无论是自由软件的原始分享理念,还是开源技术的真正体验,相对比较而言,很容易达到举办软件自由日活动的意义。

2010年是第X个软件自由日,自从2004年开始,软件自由日在全世界范围内铺天盖地开展。在中国,全国各地分站的活动火热进行,特别是在大学校园举行的推广活动,对大学生──这个学习和思维能力强的群体,无论是自由软件的原始分享理念,还是开源技术的真正体验,相对比较而言,很容易达到举办软件自由日活动的意义。

同时,随着每年软件自由日的举办,各个地区分站活动筹备组,本身可能对自由软件和开放源代码软件历史和意义未能很好掌握,直接在活动的举办中和原来推广日的意义有比较大的不同。软件自由日的本质意义,从最初的创意提出人XXX先生的“自由分享软件理念”,到现在,演变为技术演示、商业导向、产品发布,甚至GNU/Linux系统上宣传封闭“高质量框架”等等这些不同程度的“演化趋向”。软件自由日,逐渐演变为信息产技术宣传日,例如,今年Adobe公司也为软件自由日提供赞助,带来忽悠听众的危害。

一、自由软件兴起的必然和偶然。

自由软件精神领袖理查德斯托曼(以下简称RMS)过去曾经表示这些观点:“我认为的黄金定律:软件代码应该分享和交流”、“UNIX是没有意义的操作系统,因为社群成员不能对其进行公开研究交流”、“车不在‘路’上,即使开得再快,也没有意义”。

一直以来,在人们的概念中,自由软件提出和发展是有很大的“偶然性”,故事是这样:在麻省理工人工智能实验室,RMS对一台经常出错的激光打印机感到很无助,因为它的控制程序是封闭私有,他说:“即使我们有全世界最优秀的程序员,却解决不了这个‘问题’。”……某一天,RMS认为软件源代码应该自由分发,遂告诉他上司他要离开人工智能实验室,全心身开发一个完整的开放自由的操作系统──GNU计划,上司很有人情味地没有没收他实验室的钥匙,就让他“离职”却为理想“工作”……某一天,Emacs编辑器发布,很多同行者下载使用研究……不久之后,着名的GCC编译器释放……某一天,在众多技术志愿者、志愿律师顾问的提议和RMS带领下,自由软件基金会(Free Software Foundation)成立……接下来来自芬兰的赫辛金大学学生Linus Torvalds独立开发系统内核Linux,之后利用开发开发模式继续进行开发……之后某些人把GNU成果和Linux内核组装起来,构成一个完整独立发展的操作系统……然之后,很多社区和社群建立,而且很多具有技术天赋和富有亲和力的黑客领导其他着名的项目,同时,部分商业公司把自身一些项目公开,利用社群的力量完善软件质量……现在看来,一切都很“戏剧性”。

让我们站在业界发展的最初:当时没有所谓的“软件产业”,因为那时没有硬件公司意识到软件的“不寻常”,原因很简单──当 时的软件代码是针对具体的单一型号的计算机开发。这样导致软件代码换到其他型号的计算机将不能运作,换句话,硬件公司不能靠销售软件代码获利,必须要把硬 件和软件捆绑销售。捆绑销售,意味着,只要维持工厂流水线的正常生产,计算机硬件就持续出货,而相反,软件代码一次开发完成,之后的工序就是“Ctrl+C和Ctrl+V”。当时的硬件公司意识到,如果公开软件代码,将很有可能某些不怀好意的公司,仿制他们的硬件,制造出“山寨”的 计算机,然后搭载他们的软件代码,就可以在市场上销售。所以,起初的计算机硬件千奇百怪,直到半导体工业的发展和技术联盟的组建,让某些通用硬件技术标准 化和零件化,这样,编写通用的软件代码逐渐吸引程序员的眼球。随着更高级的程序语言提出,代码撰写和维护相对变得简单,让人们比较适宜地维护代码树。

摩尔定律的“指导”下,计算机硬件飞速发展。人们深深感受到,特定功能的软件可以帮助他们完成很多不同的日常任务,可以充分使用硬件的性能──这 个就是大众对软件的强烈需求,进而导致这样的现象:人们日益增长的软件需求和缓慢的软件开发周期的矛盾成为了软件工业发展突出的矛盾。为了解决矛盾,有两 种很好的解决办法:第一种,让人们根据自己爱好编写简单、初级的软件代码,然后向公众公开,让其他人获取源代码根据自身需求二次开发,然后再公开二次开发 代码,这样缩短开发周期,满足人们需求;第二种,让有编写代码能力的人组建公司分析客户需求定制一个软件项目解决方案,由于代码的撰写完全由公司自己承 担,所有代码从零开始,开发成本很高,为了避免同行者进行兜售,必然不公开软件代码。恰好,前者代表自由/开源,后者代表封闭/私有,他们共通一点是──解决人们对软件的迫切需求。

二、价值理念和项目性能的博弈。

为了解决这个迫切需求,两种方法导致不同的“技术导向”: 前者觉得,向社区开放了的项目,可以用众人的力量完善代码质量;后者觉得,自身公司维护项目,可以针对客户需求调整开发,同时封闭私有,可以排挤其他竞争 对手,同时拥有企业追求商业价值的最大化。前者觉得,通过众多不同类型的高质量的公开软件项目,人们可以根据自身需求而使用这些项目代码打造最适合的软件──这样可以满足许多人的不同的软件需求;后者觉得,通过众多不同公司对既定需求而开发的软件代码,销售编译后的二进制代码,可以在市场竞争中,让消费者选择最适合自身的软件产品──这样可以满足人们对不同软件的需求。

这就好像,在家烧菜煮饭跟去餐厅饭馆消费:都是满足了人们膳食需求,只是自己亲自动手, 还是支付厨师费用。当然,餐厅的厨师做的菜是适合大众或者特定某地方人的口味,而自己在家烧菜,可以考虑自己的膳食喜好:多点糖,少点盐。一般厨师不会公 开烧菜的秘诀,个人或者喜欢和邻居膳食心得。重要的是,两种填肚子的办法都不会让自己饿死。

这个是两种解决方法的共性,他们都满足了人们对软件的需求,都推动的整个社会发展。这个是必须要承认,也是必须要肯定。这个也是给那些整天扛自由开源软件大旗、无限抬高自由软件无限贬低封闭软件、外国封闭私有软件亡国论的人最深刻的警醒。

但是,计算机程序这个特殊的商品对当时法律制度提出巨大的疑问:计算机程序需要保护?是 用专利法保护?还是用版权法保护?专利法和版权法的引入,让软件程序设计原理和具体实现代码成为了绝对的商业秘密,而且在有限的时间内不公开。更可怕的 是,软件程序设计原理被专利化,寻找其他设计原理(其实就是数学模型)变得更难;商业公司发布编译后的二进制代码,几乎是不可能阅读的“文本”。

好了,我们可以阅读《哈木莱特》学习如何编剧和如何导演,但是,我们购买了一份Windows7操作系统拷贝,我们却不能学习里面的设计原理。或者我们可以加入微软公司,就可以学到相关的软件设计原理;但是,是不是等我们加入了舞团才学习编剧和排练的知识?

这两个观念,根本区别就是,人应不应该有自由发展的诉求和自由分享知识的权利:一个人很 自由地学习自己喜欢的知识,而阻碍一个人学习的,只是本身的天赋和能力,而不是外部社会环境因素约束;同时,一个人可以自愿地和其他人分享知识和技术交 流,无论知识的高深浅薄,是不受外部社会环境因素约束。自由软件最本质就是,能够提供给每一个人对软件代码学习自由、思想自由和创意自由的舞台,并且人们 在这样的知识舞台上,建立平等、协助、共进和共享等人与人社区关系。假如一开始就不理解、不认同和不承认这根本点,任何推广自由软件的讲座和活动都是徒 劳,引喻失义,甚至“挂羊头卖狗肉”。

群众的眼睛是雪亮的。社区开放的软件,让软件代码在公众面前表露无遗,人们可以修改代码适合自己使用,把不完善部分通过修改臻于完美。当然,在涉及开放项目中人与人之间的关系,为了使到项目的持续健康发展,必要时订立一些“社区契约”,让大家认同、承诺并遵循规则。这个就是开放源代码的“项目性能”导 向。开放源代码在项目实践层面上,和自由软件相差不大,两者最核心的区别:自由软件坚持者认为私有封闭软件必然灭亡,因为私有封闭软件限制人的自由发展, 必将消失在历史发展中;开放源代码拥护者认为,私有封闭软件和开放性软件可以并存,让人们有更多更好的选择,满足人们的软件需求。

一个追求自由,一个追求性能;一个追求 人与人在交流软件代码之间关系的良性发展,一个追求技术实践是否满足人们的软件需求;即使性能稍有差距,自由价值是无价;即使暂时封闭私有,性能是人们最 大取向;由于私有封闭软件的禁锢作用,人们最后将抛弃使用封闭软件,转而投奔自由软件。由于开放的软件开发模式的优越性,封闭私有软件拥有者将会逐步开放 其项目,产业得到快速良性发展。

这样更好地解释,为什么自由软件的坚持者主张使用自由/开源的硬件驱动程序,即使这些驱动程序比不上硬件厂商的驱动程序,一个例子就是NVIDIA在GNU/Linux平台的显卡驱动,而性能追求者则在这样的“情况”下,选择暂时的妥协,自由软件坚持分子则主导开发nouveau驱动;这样也解释了,为什么一些科学工作者在使用搭载INTEL芯片的计算机进行模拟计算时,优先考虑使用INTEL数学函数库,即使有很多自由软件数学库:GSL,FFTW,LAPACK等;也解释了,这些科学工作者为何选择CUDA进行高性能并行计算解决密集型计算课题 ── 诚然,CUDA技术是代表一种革命性的计算方式。性能追求者可能很喜欢GNU/Linux系统,因为其表现性能在整个工业界一直处于技术尖端,但是,如果出现某些更强大更先进的封闭操作系统,性能追求者则转移视线,然则,自由软件主义者将演绎类似GNU计划(开发一个类似UNIX但不是UNIX的操作系统)的历史 ── 用自由软件社区力量打造这样更强大更先进的自由操作系统。不久的之后,自由软件天然高质量的属性,使到性能追求者又回到自由软件阵营。

“Freedom is NOT free” ── “自由并非无价”。

所以,自由软件坚持者,认为统计GNU/Linux系统的市场占用率不能正真反应自由软件推广程度:某些人可能工作需要,安装双操作系统,一个windows,一个GNU/Linux,但是大多数时间使用windows;某些人可能在某些发行版本有新的推出时候,测试使用一段时间,之后格式化抛弃;某些人或者喜欢compize那些炫耀的三维特效,就安装上一个相对使用人数较多的发行版本。等等这些,都是对自由软件了解和尝试的感性认识,至于能不能正真体验自由软件的本质价值和核心理念 ── 这个才是自由软件推广者承担更重大的责任和义务。

偏执狂热爱自由,现实者钟爱性能。

三、自由/开源软件在中国的发展。

自由/开源软件在中国大陆被官方统一称“开源软件”,这个很明显是避免某些敏感字眼。至于“GNU Project”,中国台湾和中国香港翻译为“革奴计划” ── 既发音相似,也反映GNU本质一面;中国大陆暂时没有正式的中文官方翻译──因为找寻另一个“很好很友善很亲和”的译名比较困难。

陆首群大师,认为自由软件和开源软件应该抛弃“门户之见”,集全部精力打造高质量的软件代码,直接产生经济价值,推动社会发展。历史就是这样演绎:爱因斯坦很后悔原子物理的和质能方程的提出,原因是聚变和裂变反应释放巨大的能量,被某些军事家用在战场上,造成生灵涂炭;之前陆首群大师在会见Apache基金会主席时候,提到Apache应该注重市场推广应用达到良性发展,而Apache基金会主席认为,基金会提供一个高质量而且开放的互联网服务软件,初衷这样现在也这样,至于其他人和单位怎样使用,是他们的事情;Linus在其自传一书题目《Just for Fun》,中文译本题目为《乐者为王》,这似乎有点扭曲的原作者的意思 ── Linux内核仅仅是为了乐趣而开发,而不是以成为信息工业界之首而生,完全没有“称王称帝”的初衷 ── 至于某些商业公司在不违反GPL2下怎样把Linux内核使用是那些商业公司的事情。科学的发展历程,本质是纯洁和朴素,自由软件/开源软件的发展也是一样的。

自由开源软件的凝聚发展,虽然这样可以在项目实践上团结两大阵形,但是在项目具体开展中,两者阵营对于如何选择软件代码释放协议,将直接导致在法律上对开源协议的理解和取向不同,特别是以BSD协议和GPL协议为代表的两种“初衷”的直接不同。幸运的是,暂时没有见到这样的矛盾对博公堂。辩证法告诉我们,矛盾是对立统一的。

为什么中国大陆更偏爱MIT和BSD等类型的开源软件释放协议,原因很简单:再次发布的时候只需要署名,不必要强制公开源代码。这样有点类似当年洋务运动 ── “施夷长技以制夷”、“施夷长技以自强”、“中学为体,西学为用”和“以洋制洋”等:用美国的开源软件对抗美国的封闭商业软件,或许我们还乐着以为他们在搞“内部矛盾”;或者,用芬兰的Linux内核,来对抗其他国家输送的封闭软件;又或者,对全世界的自由软件和开源软件代码库服务器在中国做镜像,我们以为这样直接获取外国人丰硕的软件思维成果;或者在商业封闭软件定价洽谈时,把自由/开源软件作为谈判的强力筹码。无疑这个是“不作为”的委而求全的做法。

由于Apache,FSF,Mozilla等基金会是在美国注册,受美国法律体系和行政法规约束,即使这些基金会的软件代码为全人类做贡献,也不能向列入“黑名单”的国家输送软件源代码,例如朝鲜和古巴。当然,朝鲜和古巴因为对其他国家的外交关系,从他们的镜像再造镜像,也用上了GNU/Linux操作系统和Firefox浏览器。美国可以通过法律限制打压自由软件开源软件的海外输出?估计谁提这个议案谁受到整个技术社区社群的评击。这是逆潮流的傻瓜想法。

“我们把人家服务器做了镜像,我们窃取了人家的劳动成果?”可笑地说,我们没有窃取人家的成果,反而是获得人家的“许可”。自由/开源软件并不是一个简单的静态概念,它是动态发展的连续不断的软件代码不断提高的历史演进。换句话,拷贝人家的软件代码,就好像在日光下捕捉影子,甚至产生“把苹果树运到南方栽种、把橘子树运淮北栽种”的现象。更重点的是,开放项目的核心开发团队和整个社群的全球化趋势,局部地区的只有成为项目参与者的角色,而不能一步登天成为项目主导者的角色。自由/开源软件促进了地区经济发展,但是却伤害了本土封闭软件厂商的收入,进而减少地区的税收。一个公认的事实:封闭软件比自由/开源软件更容易获取暴利。倘然以金钱盈利经济发展为目的,自由/开源软件不适合中国发展。

中国大陆在软件自主发展上落后他人,如果再进行封闭的硬件和软件技术发展,其成本将是不可估量。倘若发展标准化的硬件平台,采用自由/开源软件,将快速缩小信息化鸿沟的差距,但是换来却是本土行业导向的封闭软件萎缩:Openoffice.org的到来,金山感到压力;QCAD的到来,国内CAXA厂商感到压力;R统 计软件的到来,国内类似的统计分析软件感到压力。即使暂时没有感受压力,这些软件厂商只能生存在国外封闭软件围堵和开放软件大军的推进下。问题已经不是盗 版不盗版的问题(当然,在盗版的情况下,很多人更喜欢盗版外国封闭商业软件),而是行业用户注意力和学习成本的问题。直接导致就是传统软件销售产业萎缩, 以用户服务为核心的软件发展模式更加突出,对行业应用软件功能和质量提出更加高的要求。在国人没有完全准备下,新一轮的软件发展模式已经落在头上。

外国的GNU/Linux用户还多是Unix和Solaris的移民,而国内的多数是Windows基础的移民,前期信息普及教育和当代推广自由/开源软件产生极度不协调:凡是国家关于XXX的认证考试,XXX行业认证上机考试,均采用windows平台。如果硬要说这个“矛盾”不是矛盾,很简单,把所有自由/开源软件全部移植到windows平台,让人们第一次接触不察觉使用自由/开源软件,然后把所有自由/开源软件一个一个地替换。最后,人们发觉除了操作系统外,其他都是自由/开源软件,值得高兴的时候来了:是时候让大家一举迁移到GNU/Linux下!这个是相对幼稚的想法。

那为什么当年GNU工具可以把UNIX系统一个一个地替换?问题重点在于,UNIX系统的操作风格逐渐成为整个工业界的标准,GNU项目为了成功达到目的,也只能借着UNIX的外壳,所以才强调“GNU = GNU's NOT UNIX”的递归缩写。微软的Windows,很抱歉,是信息业界不成文的“潜规则”:独立封闭的体系,即使有相对的API环境描述;自我决定windows发展方向,导致其他周边厂商要跟随,成立“商业联盟”;既当裁判,也当球员,除了开发windows操作系统,又发展其他基础性的软件,例如Office和Media Player。用“替换”的的原理,已经不适合现在这个现实情况。现在比起当年,情况更加复杂。

中国选择自由软件和开源软件,或许是一种“曲线救国”的做法,或许是一种暂时牺牲本土封闭商业利益而求软件产业升级的做法,或许是一条登上全球软件技术宝座的蹊径。社会任何一种变革,必定伤害旧权贵已有利益。变革,意味着重新洗牌,意味着机遇,意味着推倒一些过时的做法,也意味着树立新的规范和新权贵的形成。

往者不可谏,来着犹可追。历史长河滔滔不绝,产业浪潮革新推进永不停息。天行健,君子以自强不息。

向为自由和兴趣而编写代码的人致敬!向提供高质量自由开源软件服务的厂商致敬!

 

 

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册