• 大势所趋话开源——中国开源现状分析
    时间:2012-08-12   作者:魏永明   出处:programmer.com.cn

    随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、Web服务器、移动操作系统等各方面已成为主流。而且许多企业利用开源软件形成了独特的商业模式。比如Google的Android操作系统,从2007年开源发布第一个版本起,到今天已经发展到4.1版本,占据了智能手机操作系统一半以上的市场份额,Google也通过Android操作系统在移动互联网这一新兴行业中占据了领先和主导地位。以前一直和开源软件做斗争的微软公司,为顺应潮流,也开始拥抱开源,比如向Samba项目贡献代码,放弃自己研发多年的大数据项目而选择Hadoop为其大数据的核心等。

    显然,纵观IT行业这20多年的发展,开源项目已形成一股推进计算机及相关行业不停进步的巨大力量。本文将重点讲述国内的开源项目及社区的现状,以及发展过程中面临的困难和问题。

    国内开源项目的发展及社区现状

    国内开源软件的发展简史

    国内开源项目的发展始于1997年前后。那时,中国第一个(局部)互联网(CERNET)刚建立不久,1995年在清华大学建立的著名的水木清华BBS就是开源项目。之后,Linux内核以及GNU项目中的成百上千个开源项目逐渐展现在国人的面前。

    随后,中国也逐渐出现了一些开源项目。最初由国人开发的开源项目,主要解决的是Linux系统的汉化问题,流传最为广泛的应该是可以显示和输入中文的伪终端应用程序CCE。在1998年之后的两三年内,出现了以下三个开源项目。

    ■LVS(Linux Virtual Server)是由章文嵩博士开发的,后来被Linux内核收录,成为使用Linux操作系统搭建集群服务器的重要核心软件组件。
    ■Smart Boot Manager是当时的清华大学博士生苏哲开发的,它是一个引导管理器,类似现在流行的GRUB,主要解决引导多种操作系统的问题。苏哲后来主持开发的SCIM系统,被各种流行的Linux发行版收录,成为Linux操作系统上提供多语种输入法支持的标准框架。
    ■MiniGUI是由我开发的,后来由我创立的北京飞漫软件技术有限公司维护和发展,在功能手机、数码相框、工业控制系统和工业仪表中得到了广泛应用。
    上述三个开源软件是中国开源软件早期的代表作,在国际上具有较强的影响力。

    之后,国内开源项目的发展长期处于停滞状态,这与2000年左右互联网泡沫的破裂有一定关系。互联网泡沫的破裂,让许多梦想通过开源项目来创造商业奇迹的Linux发行版厂商很受伤。我曾供职的蓝点软件,在NASDAQ OTCBB板借壳上市,半年之内股价从20多美元跌到0.2美元,后于2001年贱卖。

    从2005年起,开源项目的发展逐渐走出低谷。在此期间,国内也出现了为数不多的开源项目,其中以清华大学陈渝副教授主持的SkyEye最具代表性。该项目旨在提供一个面向嵌入式软件开发和调试的ARM或其他架构的纯软件仿真器(虚拟机)。该项目持续活跃长达7年时间,吸引了许多海外高手参与,是为数不多的具有国际影响力且充分体现了国际化协作、分享的开源项目。

    在参与开源项目的企业当中,最为活跃的是淘宝,接下来是新浪、百度、腾讯和华为等。同时,随着“开源中国”等社区的兴起,个人主持或者参与的开源项目逐渐多了起来。根据“开源中国”收录的开源软件,当前已经有一千多个由国人开发或者主持的开源软件。这和十年前相比,有了非常大的进步。有兴趣的读者可访问http://www.oschina.net。以下开源项目非常值得一提。

    ■TFS是一款由淘宝开发的分布式对象存储系统,于2010年9月开源,存储了淘宝的几百亿张图片和交易快照。目前新浪微博已在生产系统中使用TFS作图片等对象的存储。
    ■RT-Thread。这是一个由国人主持开发的开源实时操作系统,曾获得“第六届中日韩开源软件竞赛”的技术优胜奖(其他两个技术优胜奖获得者为淘宝的OceanBase和红旗的Qomo Linux)。RT-Thread 目前也获得了诸多商业应用。
    ■Linux Deepin是近几年发展起来的面向桌面的中文Linux发行版,由一群来自武汉的Linux高手发起并维护。
    ■ucore。从2010年暑假开始,陈渝博士组织清华大学学生开展教学用开源操作系统ucore的设计与实现,并直接用于清华大学的操作系统课程,学生可参考实验文档和ucore源码通过实践逐步深入掌握操作系统。这相对国内操作系统旧有的教学方法有较大改变,获得了国内外操作系统教学领域专家的认可,并将在教育部的支持下进行更大范围的推广。

    国内开源软件的特点和问题

    国内开源项目存在很多问题,如缺乏重量级项目、缺乏持续维护和更新、质量一般、用户不多等。另外,正如开源中国创始人所言,国人所开发的这些开源项目,和国际主流开源项目脱节严重,绝大多数处于单打独斗的状态。

    例如,淘宝主导或参与的开源软件,大多数和互联网服务器后台、云计算相关,这些项目的主要用户是淘宝自己。因为门户之见,这些软件很难被其他的互联网企业所使用,大家不停地“造轮子”而忽视了开源软件发展必须具备的“共享”、“协作”精神。不过,现在这种情况正在改变,上面提到的淘宝TFS系统已被其他互联网企业使用,ucore项目也得到了诸多国内外大学积极的响应和支持。

    我希望国内的开源项目能够和国际主流的开源项目步伐保持一致,要么加入国际化的开源软件,要么将自己主持的开源软件逐步国际化。这样,我们的开源项目才能得到源源不断的前进动力,也才能在国际化舞台上扮演更加重要的角色。

    新的力量

    无论如何,国内大型IT企业参与开源项目就是一个良好的开端,将为中国开源项目的发展起到非常大的促进作用。与此同时,各种开源社区活动也越来越活跃,例如具有政府背景的“开源软件高峰论坛”和草根性质的“我们的开源项目”巡回展演等。这表明,开源软件即将在国内引起新一轮的发展浪潮。

    开源我的软件?


    在高物价、高房价的今天,大部分人对此问题的第一反应是:“我就是一刚解决温饱的码农,我开源,谁养我?”这几乎与我们在十年前推广开源项目理念时遇到的问题一样。但这已大大落后于时代了!我们不仅可以通过使用其他人的开源项目赚钱,还可以通过开源自己的项目来赚钱。

    如何靠开源项目赚钱

    在证明上述论点之前,我们先看看别人是如何利用开源项目赚钱的。靠开源项目赚钱的方式(经过验证的)无外乎有如下几种。

    ■双许可证模式。在采取严格的开源软件许可证的同时(通常选择GPL),给商业用户提供非GPL许可方式。这本质上是一种贩卖软件许可的行为,但开源软件带给开发者一个很大的好处,即传播迅速、快速迭代。我主持的MiniGUI项目就采用这种模式,在过去的五年当中,获得了几千万元的软件许可收费。当然,使用这个模式最成功的当属MySQL。
    ■基础软件采用宽松许可证,同时向基础软件的商业用户贩卖增值服务或者增强组件、开发工具等的许可。这种模式可用于类似RT-Thread这类的基础性软件上,RT-Thread本身可以是开源且可无偿商用的,但其上的各种增值组件,如网络、文件系统、图形系统等,可以是商业软件。国外采用这种模式的以各类CMS系统为主。例如Drupal和Concrete系统,其基本系统是开源且免费的,但其上的许多插件、主题、模版等是收费的。有兴趣的读者可访问 http://www.concrete5.org网站,其中还有“Marketplace(市场)”频道。
    ■混合模式,既贩卖工具等软件的许可,同时还向用户提供付费服务的模式。比如Ubuntu Linux发行版。
    ■成为平台型项目,并承载自己的互联网业务。这种模式在大型互联网企业中应用广泛。例如Google开发并开源Chrome浏览器,短短几年抢占了微软的很多市场份额,通过在Chrome中默认使用Google搜索引擎而获得极大的收入;再比如Google开源Android,一方面为了遏制苹果iOS的增长势头,另一方面通过预置Google搜索而获得了大量来自移动互联网的流量收入。
    显然,有了先驱们的成功案例,作为开源软件参与者,不论是企业还是个人,都可能名利双收。

    IT企业为何要参与开源项目?

    作为企业,参与或者主导一个开源项目,其最为明显的动力应该是上述的第四个商业模式,即打造一个平台型项目。但就中国的IT企业来讲,我尚未看到有此种实力,或者此种抱负的企业存在,毕竟,打造一个平台需要长期的投入,一般情况需要五年或更长时间。貌似中国没有一个企业有这个耐心来投入五年这么长的时间在一个项目上。

    那为什么企业还要参与到开源软件的开发中呢?我认为,谋不了大利就谋点小利,企业主导或参与开源软件,至少有以下几个好处。

    ■提高企业的美誉度。在利用开源项目的同时,也参与到开源项目中,企业的美誉度会得到很大提升。
    ■员工更有激情。因为自己的作品能够公之于众,虽然著作权本质上属于企业,但作为实际的编码者,可以通过开源自己的作品来获得额外的成就感和满足感。这对于稳定开发团队、提高开发人员的积极性会有很大的帮助。
    当然,也许过不了几年,中国也能出现实践第四种商业模式的大型IT企业,让我们拭目以待吧!

    个人开发者如何利用开源项目获益?

    如果你是一名开源软件的开发者,打算利用自己的软件开创一家软件公司,该如何做?第一,我们要确定好自己的商业模式;第二,为自己的开源软件选择恰当的许可证。

    如果决定选择双许可证模式,应选择GPL这样较为严格的许可证,它是这种商业模式能够成功的基础。当然,选择双许可证会阻碍产品在商业用户中的推广。尤其是对初生的开源项目来讲,显然是一种两难的境地。MiniGUI之所以可以采用双许可证模式,是因为在成立公司之前和最初的一段时间内,MiniGUI采取的是LGPL许可证,之后在软件足够成熟时才改为GPL许可证。另外,MiniGUI用于功能手机等系统中时,因为这种设备一般使用实时操作系统,缺乏应用LGPL/GPL许可证的技术条件,所以面向这种设备收取许可费也是天经地义的事情。MySQL采用双许可证模式得以成功的原因在于,MySQL AB公司并不会对仅仅用于Web服务器的MySQL商用行为收费,因为这种情况下,商业用户并不会发布MySQL的副本—它只是在服务器上运行而已。

    因此,看起来上面提到的第二种、第三种商业模式是最适合个人开发者或者初创公司的商业模式,能够很快地速度推广和迭代软件本身,还能够确保有足够的收入来保证下一步的发展。在这种模式下,应该选择较为宽松的许可证。但大部分开源软件作者,由于并不真正理解开源软件的许可证,所以采取了错误的许可证(指在法律上是错误的)。例如RT-Thread,一方面采用GPL V2许可证,另一方面又承诺不会对商业使用收费。这其实没有解决根本的法律问题,即使用RT-Thread开发的衍生作品,到底要不要遵循GPL?这个问题和是否收费没有直接关系。要解决这个问题很简单,采用类似Apache、BSD或者MIT许可证即可。有读者会问,那为什么不能采用LGPL许可证?就RT-Thread这样的软件来讲,采用LGPL和GPL没有本质的区别,因为RT-Thread的应用场合下一般不支持函数库的动态链接,这导致失去了适用LGPL许可证的技术条件。

    上面提到的最后一种模式,是否适用于个人开发者或者初创公司呢?我的答案是,这种模式是大公司的玩法,小团队或小公司没法做这类事情。

    大专院校应该成为开源软件的主力军

    一个有趣的现象是,很多开源项目其实是作者在大专院校或者研究机构工作或学习时发起的,比如本文提到的三个国内早期的开源项目。甚至某些开源项目由特定的大学主持和维护,如BSD操作系统、PostgreSQL关系数据库、Minix操作系统等。

    从国际视角看,开源软件的发展离不开一些知名大学的参与,BSD和MIT许可证分别由加州大学伯克利分校和麻省理工学院定义,并由两所大学在其众多开源软件中使用,也被其他开源软件广泛应用。值得一提的是,苹果公司Mac操作系统和iOS操作系统,均使用了加州大学伯克利分校开发的BSD操作系统内核。

    从现实情况看,在职的程序员,除非因为供职单位支持,否则很难独立发起和维护一个大型的开源项目,但在大专院校和科研机构工作的老师和学生,则有得天独厚的条件(主要是有大量的时间,并可能与科研课题和教学任务相结合)来发起和持续维护一个开源项目。清华大学陈渝副教授主持的SkyEye和ucore两个开源项目就是典型的案例。笔者希望国内有更多的大专院校和科研单位(尤其是教师)能够积极参与到开源项目的发展当中,并成为国内开源项目的主力军。

    政府和开源社区应该做什么?

    在促进开源项目的发展中,政府要做的就是制定公平、合理的规则,促进相关法律法规的完善。如果知识产权保护力度不够,不仅会阻碍软件产业的发展,也会阻碍开源项目的发展。此外,需要政府支持建立以支持开源项目为己任的非营利性基金会组织。

    加大知识产权的保护力度,一方面可以让商业软件在传统贩卖软件使用许可的商业模式下得到良性发展的机会,另一方面可以促使一部分人使用免费的开源软件,进而促进开源软件的发展。

    就现阶段而言,如果政府能设立一些奖励基金等奖项,给开源项目的作者以一些奖励,也是不错的支持途径。

    开源项目应该以松散、自组织的形式开发和发展,开源社区的存在,为开源软件开发者和使用者提供赖以生存的土壤。开源社区可以是网站、论坛,也可以是松散的交流、展演等。当然,开源社区第一步要解决的问题就是自己的生存问题。

    我的建议是,开源社区应该尝试在现有法律框架下,以有限责任公司的形式来做国外开源基金会所做的工作。通过这种方式,可以有效避免无法注册NGO组织的问题,然后从企业(尤其是那些大型互联网企业)当中募集捐款,通过赞助一些开源项目,逐步推进开源软件社区的良性发展。

    另外,国内开源社区还需要从使用者社区转向开发者社区,为开发者参与开源软件提供便利,如建立类似GitHub/SourceForge那样的开源软件托管站点,为开源软件项目提供邮件列表、论坛、博客服务等。

    结语

    将开源项目和商业结合,不管是在自己的项目中使用开源项目,还是靠自己的开源项目来赚钱,都无可厚非。关键是,我们需要尊重开源软件著作权的拥有者,按照开源软件所采纳的许可证办事,只有这样,开源软件才能得到长足发展。合法使用开源软件的前提,就是遵守开源软件的许可证规定的各种义务。

    当然,更有积极意义的参与开源项目的方式是,将使用开源软件中遇到的问题或者修正、增强代码提交给开源软件的作者,帮助其改善作品。其实,这是任何使用开源项目的企业和个人都能做到的。

    网友留言/评论

    我要留言/评论

    相关文章

    聊聊语言之争:寒冬也凑热闹写了一篇,之前还有@左耳朵耗子、@tinyfool、@老赵、@Laruence等人,看起来挺热闹的,我也说说我的想法吧。
    当我谈开源时,我谈些什么?:关于开源,我有很多的感想,但是在一篇文章之中,我可以谈些什么呢?在与程序员杂志的编辑杨爽聊天时,我虽尚未理清自己的思路,却想到了一个听起来不错的标题《当我谈开源时,我谈些什么?》因为像这样一个看起来完全开放的标题,似乎什么都可以往里面装。简直可以随便涂涂就写出一篇形散神不散的散文了。
    如何招到烂程序员:我已经阅读了大量的关于如何 招募优秀开发人员的文章, 但如果你只对烂程序员感兴趣 – 哪该怎么办? 也许你并不需要用人才去挣钱,或者你觉得保质保量的完成工作并不是最重要的事。 不管是出于何种原因,本系列的关于烂程序员的文章都是关于这方面的窍门。 欢迎阅读第一篇:‘如何发现烂程序员’。
    移动互联网的十种支付方式:产品经理和开发者们将热度飙升的“移动支付”分为“远程支付”和“近场支付”,但更多的用户并不关心原理,只关心这些新鲜的支付方式是否有足够的“未来感”,是否足够好用。在这个移动互联网的时代,连“花钱”的姿势也变得时髦起来。
    草根微博的粉丝4大来源:如果仅凭一己之力发点微博,能获得上万的粉丝量就说明已经很不错了,而快速获得动辄十几万、几十万的微博大号的粉丝从那里来呢,我总结大致分为四类。
    爸爸和无我编程十条诫律:在爸爸去世前,我和他谈论了2个星期关于编程的事。
    从KPI谈产品的“抓大放小、合理规划、需求驱动”:KPI,Key Performance Indicator,互联网产品工作也离不开KPI。产品设计之初就要考虑转化率、用户注册量、活跃用户量、UV/PV、日登等等,并且在今后的产品成长中对这些指标负责,不断的改进完善,完成阶段目标的KPI。与此同时能起到第二个潜移默化的作用:施加一定压力,督促产品经理工作。
    创业总结:创业公司怎样留人:创业阶段的公司,人是第一位的,事儿是人做的、资源在人手里,团队决定了项目的路能走多远,投资人最看重的也是团队。创业公司没钱没名气,招人、留人都很难,团队人员流失,不仅耽误项目进度,也影响士气,招人和留人是创业团队最头疼的问题之一,根据我创业时验证的结果总结已下几点经验。
    编程让我知道自己在变老:编程让我知道自己在变老
    1532天没有改过一行代码。:1532天没有改过一行代码。一个超过四年没有理睬的业余时间做的网站如何能做到天天都还有人注册?