文 / 魏永明
随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、Web服务器、移动操作系统等各方面已成为主流。而且许多企业利用开源软件形成了独特的商业模式。比如Google的Android操作系统,从2007年开源发布第一个版本起,到今天已经发展到4.1版本,占据了智能手机操作系统一半以上的市场份额,Google也通过Android操作系统在移动互联网这一新兴行业中占据了领先和主导地位。以前一直和开源软件做斗争的微软公司,为顺应潮流,也开始拥抱开源,比如向Samba项目贡献代码,放弃自己研发多年的大数据项目而选择Hadoop为其大数据的核心等。
显然,纵观IT行业这20多年的发展,开源项目已形成一股推进计算机及相关行业不停进步的巨大力量。本文将重点讲述国内的开源项目及社区的现状,以及发展过程中面临的困难和问题。
国内开源项目的发展及社区现状
国内开源软件的发展简史
国内开源项目的发展始于1997年前后。那时,中国第一个(局部)互联网(CERNET)刚建立不久,1995年在清华大学建立的著名的水木清华BBS就是开源项目。之后,Linux内核以及GNU项目中的成百上千个开源项目逐渐展现在国人的面前。
随后,中国也逐渐出现了一些开源项目。最初由国人开发的开源项目,主要解决的是Linux系统的汉化问题,流传最为广泛的应该是可以显示和输入中文的伪终端应用程序CCE。在1998年之后的两三年内,出现了以下三个开源项目。
上述三个开源软件是中国开源软件早期的代表作,在国际上具有较强的影响力。
之后,国内开源项目的发展长期处于停滞状态,这与2000年左右互联网泡沫的破裂有一定关系。互联网泡沫的破裂,让许多梦想通过开源项目来创造商业奇迹的Linux发行版厂商很受伤。我曾供职的蓝点软件,在NASDAQ OTCBB板借壳上市,半年之内股价从20多美元跌到0.2美元,后于2001年贱卖。
从2005年起,开源项目的发展逐渐走出低谷。在此期间,国内也出现了为数不多的开源项目,其中以清华大学陈渝副教授主持的SkyEye最具代表性。该项目旨在提供一个面向嵌入式软件开发和调试的ARM或其他架构的纯软件仿真器(虚拟机)。该项目持续活跃长达7年时间,吸引了许多海外高手参与,是为数不多的具有国际影响力且充分体现了国际化协作、分享的开源项目。
在参与开源项目的企业当中,最为活跃的是淘宝,接下来是新浪、百度、腾讯和华为等。同时,随着“开源中国”等社区的兴起,个人主持或者参与的开源项目逐渐多了起来。根据“开源中国”收录的开源软件,当前已经有一千多个由国人开发或者主持的开源软件。这和十年前相比,有了非常大的进步。有兴趣的读者可访问http://www.oschina.net。以下开源项目非常值得一提。
国内开源软件的特点和问题
国内开源项目存在很多问题,如缺乏重量级项目、缺乏持续维护和更新、质量一般、用户不多等。另外,正如开源中国创始人所言,国人所开发的这些开源项目,和国际主流开源项目脱节严重,绝大多数处于单打独斗的状态。
例如,淘宝主导或参与的开源软件,大多数和互联网服务器后台、云计算相关,这些项目的主要用户是淘宝自己。因为门户之见,这些软件很难被其他的互联网企业所使用,大家不停地“造轮子”而忽视了开源软件发展必须具备的“共享”、“协作”精神。不过,现在这种情况正在改变,上面提到的淘宝TFS系统已被其他互联网企业使用,ucore项目也得到了诸多国内外大学积极的响应和支持。
我希望国内的开源项目能够和国际主流的开源项目步伐保持一致,要么加入国际化的开源软件,要么将自己主持的开源软件逐步国际化。这样,我们的开源项目才能得到源源不断的前进动力,也才能在国际化舞台上扮演更加重要的角色。
新的力量
无论如何,国内大型IT企业参与开源项目就是一个良好的开端,将为中国开源项目的发展起到非常大的促进作用。与此同时,各种开源社区活动也越来越活跃,例如具有政府背景的“开源软件高峰论坛”和草根性质的“我们的开源项目”巡回展演等。这表明,开源软件即将在国内引起新一轮的发展浪潮。
开源我的软件?
在高物价、高房价的今天,大部分人对此问题的第一反应是:“我就是一刚解决温饱的码农,我开源,谁养我?”这几乎与我们在十年前推广开源项目理念时遇到的问题一样。但这已大大落后于时代了!我们不仅可以通过使用其他人的开源项目赚钱,还可以通过开源自己的项目来赚钱。
如何靠开源项目赚钱?
在证明上述论点之前,我们先看看别人是如何利用开源项目赚钱的。靠开源项目赚钱的方式(经过验证的)无外乎有如下几种。
显然,有了先驱们的成功案例,作为开源软件参与者,不论是企业还是个人,都可能名利双收。
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那样的开源软件托管站点,为开源软件项目提供邮件列表、论坛、博客服务等。
结语
将开源项目和商业结合,不管是在自己的项目中使用开源项目,还是靠自己的开源项目来赚钱,都无可厚非。关键是,我们需要尊重开源软件著作权的拥有者,按照开源软件所采纳的许可证办事,只有这样,开源软件才能得到长足发展。合法使用开源软件的前提,就是遵守开源软件的许可证规定的各种义务。
当然,更有积极意义的参与开源项目的方式是,将使用开源软件中遇到的问题或者修正、增强代码提交给开源软件的作者,帮助其改善作品。其实,这是任何使用开源项目的企业和个人都能做到的。
作者魏永明,北京飞漫软件技术有限公司创始人,他主持的MiniGUI项目,是国内最具代表性的几大自由软件项目之一,目前已成为支持多种嵌入式操作系统的图形中间件产品。