自主系统案例及开发建议
案例
这里给大家介绍笔者早先和美国一家公司合作,尝试搭建的一个操作系统,其实在当年这些东西的基础上,搭建出来一个有别于Android的开源“自主”操作系统还是非常快的。
这个系统使用了Linux内核和标准的C/C++函数库,以及一些和Android体系结构类似的C/C++运行库,使用了笔者公司的开源软件 MiniGUI、WebKit浏览器核心引擎等等。基础的东西就这些。之上是开源的KaffeJVM(后来改成了CacaoJVM),和符合J2SE规范的类库实现,再往上就是运行环境和框架了。见下图:
可惜的是,真正具有核心价值的运行环境和框架,是美国合作方自己开发的,我手里没有源代码。相信读者也能明白,美国合作方掌握的才是精华。
如果要在这套系统基础之上快速开发一个“自主”的操作系统,我们需要:
·重新定义类库,也就是基础API,让我们的系统从灵魂上有别于其他系统。必要的话,优化或替代开源的虚拟机(淘宝最近开源了一个JDK虚拟机,不过是针对J2EE的)。
·全新设计和实现适合于智能手机的运行环境、框架。
·全新设计基本的智能手机应用软件。
·开发模拟器,并集成到Eclipse集成开发环境中。
·还有,这个系统是2006年开发的,我们还需要将底层的内核、基础函数库等更新到比较新的版本。
要做的工作还是蛮多的,但这个系统在2007年的时候,就已经可以运行在主频在200MHz左右的手机上了。
当然,这个系统离本人定义的真正“自主”的操作系统还有很大的距离。但是,起码技术上的方向是基本正确的,要知道,这个系统几乎是和Android同时发起的。后来在2007年,谷歌宣布开源Android后,美国合作方敏锐感觉到了Android将是未来的趋势,就直接转向了Android平台,项目也就终止了。
五、给相关人员的建议
1、给政策制定者:“自主”切忌急功近利
这里所说“政策制定者”主要指的是“核高基”等政府资助项目的决策人。其实前面已经说过了,这里重申一下:
政府需要在更长的周期内(至少五年),考核受资助企业的市场份额是否有扩大,是否建立了良好的生态系统,让使用者、开发者欲罢不能,而不是简单的著作权证书和专利数量,或者是否达到了一个给定的出货量(因为出货量是可以作假的)。也就是说,我们应该重新定义“自主”这两个字,从“自有知识产权”向“有效知识产权保护下的自己主导”转移;在知识产权方面,要强调有效专利数量,而不是著作权;甚至应该要求受资助企业按某种许可证条款开放源代码。
政策制定者甚至可以参照本文第三章给出的“自主”操作系统之定义,将整个“自主”操作系统的研发和推广分为三个部分:
·科研类,两到三年为周期,以研究新的编程语言及其相关设施(如虚拟机及其优化技术)为主。
·工程类,两到三年为周期,围绕指定的编程语言发展外围工具链(编译器、调试器)、开发工具、运行环境、框架等。
·法律类,半年到一年为周期,研究和分析采纳已有编程语言面临的知识产权风险,如何规避等等。
政策制定者切忌急功近利,要按照客观规律办事,将科研类的课题交给研究机构,将工程类以及市场推广等方面的课题交给企业,将法律类的课题交给大专院校。只有这样,才能首先让方法正确,方法上正确,加上合理的考核制度,才能让钱产生真正的效益。
在花钱方面,在一盘大棋下的统一部署下,初期让多一些的企业或机构参与,一年一验收,逐步淘汰那些不合格的,最后剩下来一、两个企业就好。十亿美金,外加企业自筹部分,我看基本够了。
2、给大型企业决策者:“自主”大不易
有意开发“自主”操作系统的大型企业决策者首先要明白,开发“自主”操作系统是一个长期、艰巨的系统工程。甚至,你需要准备一大笔钱来和已有的巨头打官司(微软赔付给Sun几十亿美金之后,才让自己的C#和.Net平台成为“干净”的语言和平台)。
另外,如前所述,不管是真心还是假意,都要拿出十足的架势来真做,而且,对内、对外都要强调这点。要知道,你期望得100分,下属大多数情况下只能给你80分;你期望得1000分,下属也许就可以给你500分。这样才能超出决策者自己的预期,才能收到更好的效果。
3、给技术负责人:难度不亚于“两弹一星”
这事儿如果恰好让你负责,那简直是,怎么说呢,是个“扬名立万”的机会啊!你要知道的是,这事儿和制造“两弹一星”差不多。
首先你要掂量掂量,你有没有这个本事。所谓“没有金刚钻,不揽瓷器活”,说的就是这个道理。有兴趣的也别来找我,我做点小项目可以,真要我负责,我没这个本事。
另外一方面,你要是违背知识分子的良知,帮助一些不良人员骗取国家的资助款项,就更不应该了。这可是要被人戳脊梁骨的;有没有钱拿永远是小事,昧了自己的良心可是大事。
4、工程上的建议
在具体的研发实施过程当中,开发负责人必须特别注意工程方面的问题:
先做什么、后做什么,或者那些可以并行做。
不同的软件模块,应采取不同的软件开发管理模型。API设计、框架等的开发,适合采用瀑布法模型;应用软件或者小型模块的开发,适合采用敏捷开发模型。但整个系统,应要不停迭代,所以版本控制非常重要。
特别要注意代码的质量控制以及文档的全面、完备、简洁和逻辑性。
网友评论