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