坚持开源软件的创新之路--陆首群-阿里云开发者社区

开发者社区> 技术小甜> 正文

坚持开源软件的创新之路--陆首群

简介:
+关注继续查看
我国IT产业的创新工作
  我国是全球IT产业发展的后起者,我们肩负为我国IT产业生存、发展和提升而搏弈的历史重任。走自主创新之路,将是这场搏弈胜出的关键。
  集成电路和软件是IT产业的两个支柱。近年来国内围绕这两个支柱产业的创新历程为:
   在集成电路方面,国内自主开发了中低端通用微处理器(CPU)、芯片集成系统(SOC)和数字讯号处理器(DSP)等芯片,虽然这些芯片的集成度还较 低,大约比国际高水平还差一个数量级(如龙芯II号相当于奔腾IV中档,其集成度约为10的7次方个晶体管,而国际水平为10的8次方个晶体管),但毕竟 我们从无到有,完成了上述一系列芯片开发创新的全过程,即完成了科研创新、设计创新,以及工具创新、工艺创新和工程创新全过程(必须指出,工程创新的难度 比科研创新的难度要大得多,有人预测工艺创新难度约为设计创新难度的10倍),但我们毕竟在创新全过程道路上走了一回,突破了国外对工艺技术的严格控制, 积累了自己非常宝贵的工程经验。集成电路的创新有了良好的起步。
  国内软件创新又如何呢?
  系统软件是最基础、最核心、创新难度也最大的软件,我想可将它作为软件创新的代表。系统软件一般为操作系统、数据库、编译器和工具、编程环境、中间件等,其中操作系统又在系统软件中处于龙头地位。
  中国要自主开发操作系统或系统软件,难度很大,必须走开源软件创新之路,从开源软件创新中找机遇突破;而要进行开源软件的创新必须实行体制创新。
   目前国内虽然推出了几款Linux操作系统发行版,但自主创新的技术含量不高,总体上还处于学习模仿阶段,缺乏深层次的研发能力。在先导的社区开发创新 (即“集体开发”、“合作创新”)阶段,国内个别人虽然曾向国际开源社区递交了诸如“Linux虚拟服务器(LVS)”、“入侵检测系统(IDS)”等修 改的软件包,但作为社会或企业的志愿者向国际开源社区的贡献还属凤毛麟角;而在后续的企业开发创新(即“自主开发”、“自主创新”)阶段,国内企业一般尚 未能把握好工程化实现技术,工程经验很少。有人说,“中国系统软件的开发创新面临着一个进退维谷的境界”,这样的估计似乎过于悲观。我认为,中国开源系统 软件应该从模仿走向创新,在“合作创新”基础上扩大“自主创新”。
  为了实现开源软件的开发创新,必须了解开源软件独特的创新方式。
  两种共生技术
   人们常常陷于一个思维误区:“开源软件是由全球志愿者集体开发的,遵循开源许可协议,其全部源代码是开放的,任何人均可自由获得”,而“全部源代码的开 放也表示其全部技术是公开的。”他们不明白,开源软件不能再停留在其早期“自由的理想王国”里,仅供“黑客”、“玩家”们当“玩艺”;开源软件要取得持续 发展,必须探索并形成自己的商业模式,惟有具备商业模式的开源软件才是成熟的,才能处理好如下矛盾,即:既不违反开源许可协议,公开全部源代码;又能不公 开自己的专有技术,保守自己的商业秘密。事实上,具有商业模式的开源软件,其技术创新并不完全表现于具有自由开放特点的科研创新和设计创新之中,即并不完 全表现于开放的源代码之中,它还表现在具有技术不公开特点的工艺创新和工程创新之中,即表现在与源代码无关的工程化实现技术(即专有技术和商业秘密)之 中。这就是说,开源软件的全部技术是由:以开放源代码所表征的公开化技术,与不公开的工程化技术两部分组成;或者说由这两部分技术组成开源软件的共生技 术。所谓工程化技术,是在开源软件已完成了其公开技术(即全部源代码或全部技术性能)的开发过程的基础上,服务于产品化或商业应用,尚需解决的后续技术, 它主要关注于:改善操作稳定性,优化计算效率,增强灵活扩展性,提高产品质量,催化产品成熟度。工程化技术是一种实现技术、优化技术、隐性技术,主要表现 为技术诀窍(Know-How)或熟练技巧(Skill)、工程经验、系统底层技术的把握等隐性知识方面。
  开源软件的工程化技术主要由两部分 构成:(1)在开发过程中,有些与设计思想、原理、实现机制(包括算法)有关的隐性设计技术;与各软件模块之间的协同、耦合、调用等相互依赖关系有关的实 现技术(包括实现细节);开源企业(服务商)的“内核分支”发行版的源代码与由Linus Torvalds负责开发和监护的官方(Official)“内核主线”版本的源代码之间偏差程度的把握能力。IT评论家Matt Asay指出,人们可以得到Red Hat公司企业级Linux发行版的全部源代码,但它直接交付用户使用的二进制版本(即所谓“ready to go”版本)并不是这些源代码编译的结果,其中存在着一些差异(关键要把握差异的程度),这就是商业秘密。(2)在产品化或应用过程中,为增强开源软件的 增值效应,对各软件模块进行包装/配置/集成,以及剖析并改进相应的软件系统(Profile)所涉及的隐性技术。
  举国外开源软件 “Ubuntu”的例子来分析:Ubuntu作为Linux的386个发行版之一(有桌面版,也有服务器版)是非常优秀的。发展迅猛,受人欢迎,其开发创 新机制确有过人之处。Ubuntu为何发展如此之快,干得如此出色呢?我认为其中一个重要原因是Ubuntu利用了国际上最大的开源社区Debian的人 才和资源。所以有人说“Ubuntu是基于Debian开发的版本”,“Ubuntu是Debian的副产品”,确是如此。但Ubuntu认为 “Debian的过于宽广庞杂”,它在Debian资源上进行剪裁、移植和再创新,达到“少而精”的目的。现在随着Ubuntu的发展,它并不想与 Debian兼容,也不愿参加Debian的联合体。
  最近Ubuntu自己认承:Ubuntu的发布版在产品稳定性等性能方面尚有待于改进, 它还未通过用户认证。这使我联想到Ubuntu的开发创新机制可能还存在一些问题,他们“集体开发”开放技术的能力可能有余,而“自主开发”工程化技术的 能力可能不足。今年2月我曾向Ubuntu创始人Mark Shuttleworth当面指出这些问题,获得了Mark的首肯。
  很多执行双授权许可协议模式的开源软件,在其层次结构(Stack)中可能嵌入某个层次的闭源软件,或可能附加某些闭源的组件模块,这些闭源软件实际上就是私权软件,而私权软件的全部技术都是不公开的,并将完全依赖于自主开发创新。
  双重创新模式
   与一般企业的私权软件创新模式不同,开源软件首先采用由志愿者进行“集体开发”、“合作创新”的新模式,这种创新模式实行“源代码开放”、“技术公开 ”;但是仅靠这种模式还不足以开发出开源软件的全部共生技术(即不能开发不公开的工程化技术),也不足以向市场推出优质高效、操作稳定、技术更趋成熟、竞 争力更强的开源软件产品。实际上,开源软件针对开发工程化技术,还需要另一种:“自主开发”、“自主创新”、“具有自主知识产权”的创新模式来跟进和补 充。开源软件的双重创新模式,即“集体开发”、“合作创新”与“自主开发”、“自主创新”两种模式是互补的、互相衔接的、不可分割的;也可看作开源软件开 发创新过程的两个阶段。
  近年来国内企业开发并向市场推出一批开源软件产品,取得了长足进步;但某些企业还沿袭旧的封闭的开发模式和机制,他们 在“社区版”上进行剪裁、移植或者进行简单修改,属于自主开发创新的成果还不多,他们基本上还处于学习、模仿阶段,他们基本上还是一个开源软件的集成、发 布商,不是开发商,他们基本上还缺乏深层次开发能力。国际开源社区曾多次反映,国人在开源软件“集体开发”、“合作创新”活动中,向社区提交自己修改、创 新的源程序代码行(到被吸纳)尚属凤毛麟角,对开源社区抢占算法(Preemption)方面的贡献还微小,以致有人认为:国人尚未能进入这个开发创新模 式的核心圈之内,而且从这个衡量开发创新人员资质水准的统计数据来看,国人尚有不小差距。
  两种开发机制
  为了加快中国开源软件的发展,需要建立开源社区,形成社区开发和企业开发两种互相支持、互为补充的开发机制,社区开发主要是科研创新,企业开发主要是工程实现。
   在开源社区,具有“集体开发”、“合作创新”、“技术公开”特征的创新体系,是建立在自由开放的互联网平台上的,很多创意通常自下而上来自底层志愿者。 在这个创新体系中,能够广泛吸收全球广大志愿者的智慧,经常产生大量思维碰撞,并往往撞出不少耀眼的思想火花,经常迸发出创新点子,在技术上有所突破,但 也常常伴随着不够系统、不够稳定、不够成熟的现象。开源社区的创新活动偏重于科研,偏重于科研创新和设计创新,开源社区的创新活动需要有开源领袖(或大 师)以及一批核心骨干的支撑,他们在社区负责对志愿者提交的软件包,进一步作“选包、打包、集成、测试”循环的创新活动并实施资源管理。在开源社区创新体 系之外,还需一个后续的企业创新体系与之互为补充,企业创新体系具有“自主开发”、“自主创新”、“自主知识产权”(技术不公开)的特征,它是建立在企业 内部开发部门或企业局域网平台上的,其创新的任务是向市场推出满足用户需求的产品,计划通常自上而下,开发者是企业专业技术队伍,企业的创新活动需要有经 验丰富的资深人士(包括系统架构师)及一批核心骨干的支撑(最好具有参与社区开发创新的经历并与之保持良好的互动接口)。他们在利用开源社区创新成果的基 础上,重点做工程化、产品化、系统化、完善化、稳定性和性能优化的创新工作,在攻克工程化技术方面进行自主创新。企业的创新活动偏重于工程,偏重于工艺创 新和工程创新。在开源系统软件领域内,工程的难度比科研的难度大很多。工程化主要依靠积累的经验、专有技术(技术诀窍)、资深技术骨干的智慧(隐性技 术),以及在测试版上持续不断地进行配置、集成、调试的测试工作,从中不断发现错误和纠正错误,完全是靠一点一点调出来、改出来的,绝不可能是想出来、写 出来的。
  产品平台和生态系统
  对于开源软件,孤立地开发或推出一个产品(发行版)是不够的,必须形成围绕该产品平台的生态系统,即 要把大量软件(特别是应用软件)移植到这个产品平台上来;该产品要能预装到一些必要的硬件体系结构中去;要能与众多外围设备匹配衔接。而移植、预装、匹配 是需要做大量测试、修改以及“再开发”工作的,涉及成百上千个企业协同工作,需耗费大量人力、物力、财力和时间。为做到这一点,首先必须开发出在全球能进 入“主流”的产品,否则要吸引全球广大企业、社区的支持,共同来营造一个生态系统是不可能的。当然在营造生态系统过程中,不能用纯技术观点来看待这个问 题,在争取广大企业、社区支持时,特别要争取拥有丰富资源和影响力的跨国公司的支持,为此我们要做好协调工作。
  还必须指出,“分散的低水平重复”很难使开发出来的开源软件在全球能够占居“主流产品”的地位,为此加强国内联合、国际合作是十分重要的。
  开源架构和开源、闭源产品链
   开源软件的LAMP架构(即L-Linux操作系统,A-Apache开源服务器或其他开源中间件,M-MySQL或Postgre开源数据库,P- PHP或Perl、Python脚本语言)具有简易性、低成本和执行灵活性等特点,当“在线交易进程(OLTP)”在LAMP架构的解决方案中取得成功, 有力地推动了这个架构的发展。LAMP架构的崛起,与J2EE架构(Java编程语言)和.Net架构(C#编程语言)形成了三角鼎立的竞争态势。

  针对各种信息化应用解决方案,在开源软件LAMP架构上形成的开源产品链,需进行集成、测试、优化的开发创新活动;从实际需求出发,有时我们也要推出开源和闭源产品混生的产品链,而在推出这样的产品链之前也需要进行相应的开发创新活动。


















本文转自arthur593351CTO博客,原文链接: http://blog.51cto.com/arthur5933/114256,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26797 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10095 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13893 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9161 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4664 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4510 0
+关注
10146
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载