建立开源社区新颖的开发创新机制,对推进开源软件的发展特别重要。本文重点讨论如下一些问题,即:什么是开源软件新颖的开发机制?为什么要参与国际开源社区的开发?这里所谓的“贵在参与”的重要意义是什么?创建中国的开源社区需要具备什么条件?两种开发创新模式的内涵及其关联如何?中国开源软件在起始阶段的开发创新活动中,过去有哪些“欠债”,现在需要做哪些“补课”,今后又如何“奋起”?如何看待国内开源社区/开源企业从学习模仿阶段向创新发展阶段的转变?
开源软件的开发机制,不同于私权商业软件那种传统封闭的方式,而是一种新颖的、自由的、开放的、共享的、依托于开源社区的开发方式。
参与开源软件的所谓“社区型”的开发方式,是体验开源文化(或开源哲理),积累工程经验,增长技术才干的重要组成部分。
Linux创始人Linus Torvalds认为,开源成功的奥秘并不在于源代码(开放)本身,而是在于其开发方式,即允许所有程序员参与开发的开放源代码哲学(文化),与他人共享自己的开发成果,于是开源社区不断扩大,创新浪潮高涨。
开源社区是一个具有“集体开发、合作创新、对等评估”,以及“源码公开、使用自由、资源整合、信息共享”特征的创新体系。它是建立在自由开放的互联网平台上的,很多创意通常自下而上来自底层的程序员(Programmer)或志愿者(Volunteer)。在这个创新体系中,能够广泛吸收全球广大志愿者的智慧,经常产生大量思维碰撞,并往往撞出不少耀眼的思想火花,经常迸发出创新点子,在技术上有所突破。社区开发创新体系可以开发出全部创新的产品性能, 一般可向社会/市场发布社区版(或β测试版),而与β测试版相应的新产品的创新性能,可能尚不够系统,不够稳定,不够成熟。志愿者一般由学校的学生、教师,社会的黑客、业余爱好者,企事业开源技术研发中心或开源技术小组的人员组成。志愿者向开源社区提交(Submission)自己开发、修改的“软件包”,而开源社区则对众多志愿者提交的“包”进行“选包、打包、集成、测试、优化”循环的创新活动。
开源社区一般分三种类型:(1)专业型社区,指针对专业技术进行开发的社区。如Linux操作系统内核社区(www.kernel.org), Gnome桌面图形系统社区(www.gnome.org ), KDE桌面图形系统社区( www.kde.org), 开放办公套件社区(www.openoffice.org)社区, 开源浏览器社区( www.mozilla.org, www.firefox.com )等;(2)产品型社区,指在产品开发全过程中,其先导的社区开发与后续的企业开发,以及企业的销售、支持、服务等活动相衔接的那种社区。如先导的Fedora社区(www.fedora.org , 其相应的后续企业为Redhat),先导的Open SuSE社区(www.opensuse.org,其相应的后续企业为Novell),先导的Ubuntu社区(www.ubuntu.org,其相应的后续企业为Canonical)等;(3)平台型社区,指志愿者可申请在其上立项,主持相应项目的开发工作,可利用该平台型社区所提供的开发工具、管理工具等环境资源,并可在其平台/网络上招聘同组的开发人员,也可在其上募集开发基金,这样的平台型社区,如www.sourceforge.org 社区。
志愿者向开源社区提交“软件包”,不一定就会被社区所选中,竞争相当激烈,往往要受到所谓“抢占(preemption)”机制的挑战。开源社区从分散的志愿者中形成社区核心层,社区也有少量的资源与日常管理人员、测试人员等,在核心层人员中,可能有开源领袖或大师、技术骨干,其中还有监护人(package maintainer),他们负责“选包、打包、集成、测试、优化”以及监控工作。作为资源管理或打包工具均是自动化的,如Fedora/Redhat 采用资源包管理(RPM,Resources Package Managment)的打包机制,Ubuntu/Debian 采用高级打包工具(APT,Advanced Package Tool)。在开源社区选包优化循环中,一是要依靠社区骨干、监护人,或开源领袖的工程经验(判断力),二是要进行相应的一系列测试,如:专项测试、开发测试、编译测试、二进制回归测试、集成整合测试、社区版(或β版)全面测试。志愿者被开源社区吸收参与开源系统项目的开发工作,即在国际社区加入到“开源树(Linux/OSS Tree)”的行列。
我手头有一张表,表中显示全球志愿者对“Linux操作系统内核(Kernel)社区”关于Kernel 2.6.4项目(发布版)开发创新的贡献率。表中:以Linus Torvalds为代表的团队(OSDL)为30.31%, IBM为5.22%, Red Hat为4.35%, Debian为3.79%, Intel为2.55%, SGI为2.30%, Samba为1.99%, Novell/SuSE为1.99%, HP为0.93%, Sun为0.19%, Source Forage为0.19%, Yahoo!为0.19%, Toshiba为0.12%, Fujitsu为0.12%, Torbolinux为0.06%, Dell为0.06%, ……,其他为45.64%.
这是一张几年前的表单,在这张表中尚未查到中国的企业或个人。
中国企业或个人参加国际开源社区的开发工作, 以往犹如凤毛麟角, 但近年来多起来了。 如“灰狐社区”的“Jfox应用服务器”等已为国际社区注册登记;国人对ext3文件系统改写的部分代码、对USB串行总线改写的部分代码,以及“Linux虚拟服务器(LVS)”,针对提高I/O访问效率的虚拟内存管理等开发项目已进入“ www.kernel.org ”社区; 国人关于“windows驱动软件模块”,即“在windows环境中读、写Linux ext3文件系统的软件模块”, SCIM智能通用输入法等系统性开发项目已在全球最大的开源社区(www.sourceforge.org) 完成了立项。但总的来说, 中国企业或个人参加国际开源社区的开发工作,迄今还是少而散,其中中国企业的参与则更少。
我们要鼓励国人和国内企业积极参加国际开源社区的开发创新活动。 不言而喻,这样做不但可为开源软件的开发创新作出贡献(其成果融合在开源社区的“集体开发、合作创新”机制中);而且通过参与,还可以体验开源文化, 积累工程经验,了解、把握开源软件体系结构、顶层设计等全局性技术, 有利于开源人才的成长,也有利于在后续的企业开发中提高开发、把握开源软件“工程化实现技术”的能力。
有人指出,我们要不失时机,积极创建中国自己的开源社区。 我认为, 目前的条件似乎还不完全成熟。建设中国自己的开源社区要具备哪些条件呢?