我个人认为,开源软件(Open Source Software)这几年在中国计算机行业逐渐火爆起来。关于具体原因:主要是因为LINUX操作系统的逐渐盛行(目前LINUX的发行版本越来越多)和开源精神的不断传播再加上中国计算机专业人士的不断增加造成的。。。我随手查了一下51CTO的博文。大部分都是介绍一款或几款开源软件。或者比较学术性的描述开源的一些概念,胖胖不才,决定用通俗化的手法谈一谈开源和开源软件的一系列话题。

一、首先,目前软件按照市场的角度可以分为商业软件、共享软件、自由软件和开源软件等。那么请让我从市场产品的角度来简单分析一下开源软件与这些软件的差异性。

1、商业软件。商业软件主要分两种。一种是先交钱后使用的商业软件。这类软件的种类庞大,数量众多。功能也多种多样。从复杂的、底层的操作系统到相对简单,基于应用的应用软件。。。价格也从几元到几十万元不等。(胖胖解说:通常越专业的越不通用的软件,价格特别高。比如基于视频特效制作、大型系统软件和动画、图形类软件非常昂贵)这类软件只要你交钱,就成为合法的软件使用者,并且可以得到软件开发商的技术支持。(技术支持主要是:软件操作的指导。(有些软件操作起来可能异常复杂)和软件BUG修复和版本升级等)另一种叫共享软件。也就是先使用后交钱的商业模式。这种软件一般会出一个DEMO版本或者对软件使用时间做限制,先让你试用一段时间,觉得好用就花钱,不好用就别买。个人认为,这种共享软件的开发商相关于前者(商业软件)来说一般都是小作坊,一般这种软件的功能相对来说并没有商业软件强大。这两类软件不管怎么说,原则上都必须是掏钱才能用的,但是我们有没有其它途径使用他们呢?答案是肯定的。当然,怎么用其实你我都心知肚明。不过,你也不要得意,并不是所有的这类软件都能不花钱使用的。只有少部分大家常用的软件让“好心的人”帮助我们能够使用。而大部分、特别是专业的,功能强大的商业软件就必须花钱了。我们可以理解,软件开发商花费了大量的人力,投入一定的资金研发这类软件,赚钱是主要的目的。但是很悲哀的是,一些固执的中国人偏偏认为所有的软件都可以FREE使用,而不愿意为这些“成果”掏一毛钱,而且这些人有相当一部分是来自中小企业的决策层人士。

2、自由软件。我先利用百度百科的的词条来解释一下这类软件。自由软件的英文为“free software”,“free”一词有“自由”、“免费”的双重含意,因此要如何分辨自由软件(libre)和免费软件(gratis)?自由软件的重点在于自由权,而非价格。要了解其所代表的概念,你应该将“自由”想成是“自由演讲”,而不是“免费啤酒”’。更精确的说,自由软件代表电脑使用者拥有选择和任何人合作之自由、拥有掌控他们所用的软件之自由。用我自己的理解来简化一下上面的语句吧。我们可以自由的使用这款软件,也可以通过自身的技术“改造”这些软件使得我们可以更好的利用他。但是请不要把这类软件改造之后,变成了你“自己”的软件(就是改造别人的软件,然后销售)这样是不合规矩的。自由软件收不收钱,一般由开发者自己定。

3、免费软件。好了,终于轮到我们喜欢的软件上场了。没错,这类软件是完全免费的,你可以不花一毛钱就可以使用他们,也可以改造他们。不过这类软件一般功能简单,块头不大,甚至是不能算软件,应该说是程序。(关于程序和软件的概念。这里不多做解释了)值得一说的是,绿色软件尽管不能与之划等号,但是通常大多数绿色软件是免费的。

4、开源软件。终于轮到我们的主角上场了。开源软件与上面软件最大的不同就是开放源代码。通俗的说,这类软件是完全透明的,你甚至可以知道这类软件的运行机理。相比上面那些允许你改造的软件,你再也不用通过反编译去理解他们的运行方式,而是能通过真正的代码看到他们。反编译应该说是一门很高深的技术,有些软件对反编译的处理做的很好。丁胖胖由于不是开发人士所以不能对反编译给大家做很好的诠释。但是对于开发人士,通过学习开源软件的代码,是提高开发水平的一条绝对捷径。

二、接下来,请我们来看看开源软件的伟大意义吧。

1、对于非计算机专业。对于非计算机专业的使用者。开源软件几乎没有直接的益处。唯一带来的好处就是开源软件大部分是免费的。(开源软件是可以收费的,但是无论怎么收费,如果想把你的软件定义为开源软件这类,必须唯一的前提是开放源代码)说到源代码,就是通过人为定义,按照定义编写的人们能看懂的,计算机看不懂的代码集合。(代码包括数字,符号和字母。对于非专业人士,代码就像是天书。一般的程序语言因为是基于英文做母语,所以都是英文字母代表函数、变量等,但是易语言,是可以通过中文文字编写的)这些源代码通过编译软件,翻译成计算机能看懂的二进制代码(计算机只能看懂0和1)如果你想看懂,那么就要学习相关的计算机高级语言。比如C C# JAVA等。

2、对于计算机专业的非开发人士。一般就是IT PRO。这类人实际上不学习编程语言也是看不懂源代码的。不过这对IT PRO来说并不是主要的。实际上这类人只要掌握基本的编译方法和开发人士给予的技术文档,就可以结合这两点制作出符合自己要求的可以执行的软件了。以LINUX操作系统举例。我们可以通过修改LINUX系统内核来使得系统支持最新的硬件。对于一般开源软件,我们在预编译阶段可以通过修改软件配置文件来增加和删除一些我们需要或不需要的功能。有些软件会提供很多功能,但有时候有些功能我们觉得没有用,就可以可以去掉。这些配置修改就像家里使用的一些开关一样,可以很方便的打开或关闭某些功能。可能我说到这里,好多人也未必能明白怎么给软件增加和删除功能。因为很多人都使用习惯了WINDOWS操作系统,习惯WINDOWS上那些已经编译好的基于MSI和EXE的安装程序,一路NEXT就装好了。不过只要你学过LINUX系统下安装源码程序或者自己通过源码程序制作EXE或MSI安装包软件(我还是有幸做过的)就能明白我上面说的话。

3、对计算机专业的开发人士。开源软件他们是最大的受利者。开放源代码有利他们去了解和学习别人是怎么开发软件的。随着你的深入研究,你甚至可以把别人能做出来的某一个功能(自己做不出来)复制过来,供自己使用。而且如果你的软件开源,放到INTELNET上,还可以得到道行比你高深的专业人士帮助你修改和完善你的软件。这些举动,都是免费的。

注意:完全剽窃别人的作品是绝对的不道德,把别人的作品通过简单的修改或加一个美丽的外壳就欺骗大众说自己的作品,是完全脱离开源精神的小人之举。

三、开源软件在中国

开源软件在中国发展的并不快也不好,尽管我们通过百度等搜索引擎找到“开源中国”这样颇具备实力的网站,但是谈到开源软件的宏图力作,(比如很多帖子写到的十大或二十大开源软件中)真正出自中国人之手的几乎没有。

首先要软件嘛,自然是由研发人士来制作的,像我等非研发人士只能是拿来用用。好的,我先看一下研发的条件。一台计算机(硬件)这简直是废话。下面需要一个重量级的东西了。没错,是操作系统。不用说,LINUX是开源软件下的产物。如果没有操作系统,就没办法与计算机(硬件)对话了,其它任何软件没有操作系统做支撑,也就无从谈起。谈到操作系统就很悲哀。因为在中国,WINDOWS下的程序员多如牛毛,但是在LINUX下能做开发的程序员就屈指可数。拿我身边的认识的计算机人士来说,基本上像我这样的IT PRO可以使用LINUX,我认识的程序员基本上都是在WIN下开发。说的更难听一点,这些程序员连在LINUX的基本操作都是问题。很多人都知道LINUX并不是一个真正意义上拿过来就可以使用的操作系统,所以LINUX的产品众多,家族庞大。但是众多的产品家族中,像REDHAT,UBUNTU和SUSE这类火的不能再火的LINUX发行版都是舶来品。中国自己的LINUX发行版本如红旗LINUX确被很多人定义为垃圾,很少触及。值得欣喜的是,国内知名度比较高的雨林木风和深度现在也开始搞LINUX发行版了,但是让人可悲的是,他们的LINUX发行版简直就是UBUNTU的二次发行。说了那么多的废话,实际上就是想说两点。第一,想做开源软件就要先会LINUX的基本操作(实际上,程序人员只要不是做系统的开发,没有必要像系统管理人员一样必须系统了解操作系统的使用,了解一些基本操作就够了。实际上正如同WIN下的应用开发程序员也未必精通WIN系统)就像很多WIN下程序员,在WIN SERVER下不会安装DHCP、DNS服务,照样可以开发程序。第二,从各种开源软件系统平台来看,LINUX操作系统是首选。当然你也可以选择BSD等其它系统(但是普及度还没LINUX高呢)而单从操作系统的发行角度来看中国的开源软件发展就还有很长的一断路来走。

好了,搞定操作系统之后,就是选择IDE了。在这个方面,我是外行。因为没有搞过在LINUX系统上的开发。所以也无法详细的描述了。不过我知道LINUX下的编译软件众多,其中最著名、最令人闻风丧胆的就是GCC了。有了这些基础之后我们再学习支持跨平台的程序语言:例如JAVA和C,我们就可以真正的开始开发开源软件了。

四、开源软件在中国为什么还不盛行?

这个问题我觉得答案有一下几点

1、开发人员基础不够。前面已经说了的差不多了。再简单重复废话几句。开源软件大部分基于LINUX平台,而会使用LINUX系统的开发人士屈指可数。

2、经济利益。这点很重要,也是核心问题。程序员开发软件要吃饭,程序员不是孤立的存在的,所以程序员大部分聚集在企业。而程序代码是企业的核心商业机密。一旦公布自己产品的源代码,基本上就给了竞争对手最有理的武器。所以首先企业是不会轻易这么做的。而在国外,在开源软件特别是大型开源软件上都是技术团队的形式出现,也就是说软件是以团队的形式开发的,而不是以企业的形式。即便是企业,比如REDHAT发行版的LINUX操作系统,它的系统是以企业形式发售,但是他们最终出售的是技术服务,而不是REDHAT这款产品,这在中国是几乎没有的。

3、版权问题。这个问题我不想谈,但是又不得不谈。中国是个盗版大国,上至国家,下至平民版权意识相对淡薄。一旦大批优秀的、大型的、功能强劲的开源软件出现,可能就会被某些不法之徒看重,然后搜集过来简单包装,当商业软件发行。这种情况我敢说在中国绝对有可能发生。很多人都要求MS开源,我敢大胆假设,MS的WINDOWS如果敢全部开源,那么很快中国就会出现MADE IN CHINA的操作系统了。

4、技术团体的缺乏。在国外,技术团队比比皆是。(尽管丁胖胖没去国外,但是能猜到)某午饭:”你真是神人呀。这都能猜到,真是神经之人呀!”我个人知道的就是29A病毒组织。这些技术团队的是松散的组成的。他们不属于任何企业,完全凭借爱好组织在一起。组织在一起干嘛呢?自然是开发软件。其实在学习开发的初期,基本上任何人都能想到,任何一个人,即便是天才,也无法独立完成大型软件(除非是简单的小程序,基本上我们用的软件都是开发小组完成的)的开发,必须通过几个或更多的技术人士团结协作才能完成。在中国,目前还无法找到这样的技术团体。个人认为:脱离了企业束缚的技术团队,才能真正做在一起搞开源技术。(不过貌似***技术的红火,相关***技术团队在中国很多。不过真正在一起研究技术的团队太少了,大家都是聚集在一起研究怎么黑别人)

当然还可能会有更多的原因。

五、给大学生的一点寄语

本来写到第四点我就准备结束了。但是突然有了一个灵感,我就想把第五点写出来。

事情的起因是:有一天,丁胖胖的一个崇拜者(嘿嘿,羡慕吧)问我:“胖胖哥,我在学习期间一直想做点项目提高编程技术,但是我是学生,没有机会接触到项目,怎么办?怎么提高编程技术呢?“所以写到这里,我灵感一动,大学生们?如果你们真这么想,为何不找几个志同道合的兄弟组成技术团队从开源软件下手呢?开源软件,代码轻易获得,而且只要组成技术团队分工明确,尽管初期研发比较艰苦,开源软件可能也不会赚到多少钱。但是你们真正热爱技术,能够开发出属于自己的开源软件,绝对是在未进入社会期间比别人在技术道路中领先起跑了。也许经过许多年,当开源技术真正在华夏大地生机勃勃的时刻,你们的名字将永远被后来者记住。