陈伟 中国开源软件中心 主任
任主任也是我的老朋友,负责中联部的一个大项目,也有很多国内的企业参与,包括国产数据库、操作系统,都是基于开源软件做了很多事情。
下面我介绍一下开源软件成熟度评估模型预实践。的会议是讲软件质量的,开源软件和传统的软件开发不太一样,我先介绍一下,开源软件开发机制和特征,因为我们谈到软件质量保证,这个东西怎么说肯定是开发做出来的,跟软件的特征是息息相关的。
对于开源软件来讲,从索门先生第一次提出开源软件到现在已经25年了,现在业界对于自由软件和开源软件之间有很多不同的争论,这两种软件基于的哲学理念是不一样的,但是我们从推进开源软件角度来讲,我们一般把自由软件和开源软件放在一块,在欧洲如果你查欧盟相关开源软件的信息,是自由软件和开源软件放在一起的,一般我们现在更多的提到开源软件都是指既包含自由软件,也包含开源软件,虽然说他们有相应的差别。从他们遵循的许可证来说,自由软件都是GPR协议,开源软件软件协议比较多,大家如果感兴趣,可以到OSI网站去看看,经过OSI认证的开源软件许可证大概有70多个,其中有两个是微软,重要的是GPL,后面我会谈到。
这里面谈到一个开源软件的开发机制,这里面划了三个圈,代表了四个层,开源软件从开发组织形式来说是有四个层次,核心是有一个维护层,这个维护层是它的核心,是它关键的因素,现在2.6内核维护者是安德鲁,他能决定在内核里面什么东西可以放进去,什么东西不可以放进去。再外围是核心层,它涉及很多的模块和功能,每一个模块和功能都有一个具体的维护者角色,它去控制这样一个相应模块,它从它的下一级去收集代码和更新的东西,进行梳理和组织之后,提交给高的维护层。像核心层的人员也不多,大概也四十几个人。再往下递交层比较多,这个数据统计出来,因为罗列非常长。你可以给核心层提交代码等一系列的东西,你只是递交,但采用不采用不知道,我们只有上交的材料,你提交的东西由核心层筛选。再外面的一层是基于开源软件开发一些应用,做一些文档的翻译,或者做一些测试方面的工作。
这四个层里面的人员来说,它的维护层的人是有人发工资的,是全职的,像安德鲁,是有工资的,这些人下面有基金会,和相应的企业负工资。再外围层更多的是志愿者,这些人也有相应的公司支持和资助,给他相应的报酬,让他进行开源软件的开发。
我们国内开源软件大部分的工作是处于外两层,是递交层和外围层,包括很多企业有很多的技术和很多的开发,但我们的代码很难进入它的维护层,维护层很难采取中国开源软件社区提供的代码。为什么要这样呢?实际上他这样做的目的是跟咱们会议主题一样强调质量的问题。如果成千上万的人提供代码,不经筛选放进去,质量可想而知,这样一个分级的机制,也是保障软件质量的一个手段。
下面是开源软件开发过程,这个图比较复杂,我简单说一下,这个里头把开源软件过程分为两个环节。第一个环节是在开源社区里面进行开发的,可以给大家举几个例子,红帽子公司针对开源软件的技术进行企业化和商业化的开发,包装成红帽子版本进行发布。作为开源社区开发的理念是合作开发,集体创新,它的代码是完全开放的,技术完全公开的,这种情况下在商业模式里面很难有自己的商业模式。现在开放社团负责人第一步是找地方募捐,去找钱,另外印一个T恤或者印一个小标志,没有一个明确的商业模式。
社区的版本对于软件的各种错误和缺陷是不太关注的,所以这个社区有很多的版本,作为普通用户拿过来用是有问题的。伍根图在受关注程度上是第一位的,如果大家把8.1版本弄过来,普通用户是没法用的,我们专业人员还要做很多的设置,才可以用。它是一个社区版,没有标准化。
在社区版基础之上可能有一些商业公司介入进来,这可以形成一个开源企业,像中标软等等,他是基于开源技术,把自己工程化的实现技术和开源技术结合起来。在这个过程当中,开源企业基于开源社区的成果进行开发,前期拿过来的代码是完全开放的,后期工程化的技术,把社区做得更好,变成一个商业版,这里面有一些技术秘密和商业秘密,这个是可以不必全公开的。对于开源软件来说,把代码变成产品,光有代码是不够的,肯定还有编码等其他的东西。对于开源企业的开源版本结合起来,肯定有自己的商业模式。红帽子在这方面做得不错,全球不会再有第二家做LINUX开源能做到这个地步。
开源企业进入到开源社区之后发布的商业版本,在产品成熟、性能方面都得到了一定的保障,它也是做了大量的后台工作。
这里面讲一个小例子,是SKL遵循的两个协议,一个是开源社区的协议,一个是自己产品的协议,SKL是一个社区版的,公司不会给你任何支持,它从这个角度寻找它的价值。
这是开源社区和开源企业的比较,我要强调的是开发机制,对于社区来说是集体开发和对等评估,企业是专职开发,自主创新内部审定。开发阶段,是开源社区做第一阶段或先导阶段,开源企业做第二阶段或者后续阶段。对于知识产权,开源软件是有版权的,现在国内游很多企业拿了开源软件过来,不遵循开源社区的协议,自己做了后续开发,从当前的法律上肯定没人告你,但是作为开源软件的机制是不行的,美国也有抗议,有的公司拿了GPR协议的软件,直接修改、直接用,直接卖了,后没有公开修改的代码。
这两年我们倡导要建创新型,自主创新的核心是一定要有专利,基于开源软件发展中国软件产业,自主创新不存在了,这个问题没有办法进行论证。对于开源社区来讲,技术和商业秘密是没有的,对于开源企业来说对于开源软件有一些工程化的技术,我可以申请专利,或者申请相应的保护,但是你申请的前提是你用了原来的东西没有违背人家的要求。基于开源软件和自主创新的东西是可以结合起来的。但是国内一个怪现象,拿着一个开源软件的工作,改改图表,改改故事,内容不一定改多少,变成完全自主知识产权的东西,这个现象是比较怪的,我们不评论。
开源软件开发机制,前面任主任也提到的,事情是人做的,不可能不犯错误,我换一个说法,软件是人开发的,缺陷是必然的。软件的错误,软件的质量是靠测试保证的。这次加上主办单位、承办单位,大的测试机构有四个。我的下头是流程性的东西,上头是测试,大家参与开源社区的时候,在里面做了事情,人的地位和角色、满足感是不一样的。写代码的人受尊重的程度比你做测试和写文档的人要大,所以软件的质量和测试是没有受到足够的重视。包括我上个月跟达尔文的一个负责人沟通的时候,他也承认这个问题,因为有很多的工作他也保证不了,出现了问题也会打补丁。