到底自主些什么?如何判定?
二、“自主”考核政策之殇:生态系统才是活下去的关键
根据上面的分析,看来我们还真的需要有“自主”的操作系统。但是,“自主”到底是自主什么呢?
在功能手机和实时嵌入式系统领域,我们不是没有“自主”的操作系统,比如MTK或者展讯的操作系统,以及诸如早期的Hopen、道系统等。在通用操作系统领域,国家也长期支持了诸如麒麟操作系统、红旗Linux、中标Linux、新华Linux等多家本土操作系统厂商。但市场表明,国家支持的这些操作系统都将消亡或者正在消亡。
本人认为,国家支持下进行“自主”操作系统开发的确有合理之处,毕竟开发操作系统是一件比较困难的事情。但是,这里边有一个重要的误区和制度设计上的错误,就是只强调了“自有知识产权”,而没有强调“自己主导”。
在强调“自由知识产权”的情况下,政府对受资助企业的“自主”操作系统进行考核时,大部分情况下考核的是企业有没有获得对应的知识产权,就是软件的著作权和 /或对应的专利,而并没有考核能否主导一个产业链。受资助的企业,能否类似谷歌控制产业链一样,做到让别人用了你的操作系统,就没法不继续用下去?在这样的思路下,政府需要在更长的周期内,考核受资助企业的市场份额是否有扩大,是否建立了良好的生态系统,让使用者、开发者欲罢不能,而不是简单的著作权证书和专利数量,或者是否达到了一个给定的出货量(因为出货量是可以作假的)。
也就是说,我们应该重新定义“自主”这两个字,从“自有知识产权”向“有效知识产权保护下的自己主导”转移。
为什么这里强调“有效知识产权”呢?这是因为,在开源软件成为趋势的情况下,构建一个自己的操作系统,可以使用很多已有的开源软件,我们没有必要所有代码都自己编写,而且越底层的代码就越没有必要自己重写一遍。这如同一只桃子,好吃的是果肉,而不是果核。像内核、基础库、常用运行时函数库等等,都不必自己重新开发。而且这么做几乎没有任何潜在的法律问题,当然,前提是你要告诉大家你用了哪些开源软件,而且你也尊重了这些开源软件的许可证。这样下来,一个操作系统的软件著作权已经不再重要,重要的是相关的专利、自己独有的创新以及围绕操作系统建立起来的生态系统。
三、如何判定一个操作系统是否“自主”:阿里云算不算?
那么,“自主”操作系统应该长什么样?要回答这个问题,我们先看看假的“自主”操作系统长什么样。所谓假的“自主”操作系统,就是那些号称“自主”操作系统,但其实:
·只是在已有的开源操作系统之上加了一层皮。比如各种基于Android的第三方ROM,比如MIUI、Flyme等。这种操作系统仅仅在UI/UE上做了一些工作,就如同一个人换了一身衣服那样,实质上这个人不会因为换了一身衣服而从张三改叫成李四。
· 修改了已有开源操作系统的内部代码,做了一些优化或者去掉了别人的一些东西,添加了一些自己的内容。比如阿里OS就属于这种,或者哪些号称深度定制的 Android系统也属此类。这种做法如同整容,的确动了些刀子,甚至改变了性别,但人还是那人,改了名字或性别也还是那人。
这么类比下来,读者应该就知道了,真的“自主”操作系统,必须要有自己的灵魂,通俗一点讲,不是换衣服或者整容,只有换了脑袋的才能是一个全新的个体。
那么在操作系统当中,什么东西是灵魂?这个问题回答起来蛮难的。我们先看看哪些东西肯定不属于灵魂:
无法形成有效知识产权的软件组件,或者说,满世界有很多(开源的)实现的软件组件。比如内核、基础函数库、网络协议、图形库、浏览器引擎等等。这些东西可以看成是形成一个智能动物(比如“人”)的骨架或者躯体、甚至心脏,但远远算不上脑袋或者灵魂。这也是为什么笔者主张在“自主”操作系统中要尽量使用现有的成熟开源软件、而且不建议再行发明此类轮子的原因。
要知道哪些东西是灵魂,我们分析下谷歌在和阿里OS争论的过程中主要维护的是什么东西:
谷歌的说法:阿里云OS采用了Android的虚拟机和Framework,但又不兼容Android,破坏了Android的生态系统。这个说法可能还不是谷歌打压阿里OS的最关键原因,但起码说出了他们的担忧:阿里OS是想借Android打造自己的一个生态系统!但除此之外,谷歌对那些只换衣服的 Android系统则采取听之任之的态度,和他们一贯以来标榜的“只要兼容,我们欢迎”的态度一致——也就是说,这些系统没有从根本上动摇谷歌的生态系统。
所以,真正的“自主”操作系统的灵魂,就是那个背后的、无形的生态系统,一个看似开放但其实封闭的生态系统。一旦加入这个生态系统,你就很难下来——正所谓“上了贼船下不来”。
这就是我的回答:一个真正“自主”的操作系统,必须建立自己的生态系统,一个开放的,但在某种程度上又封闭的生态系统。
操作系统生态系统?这名词大家说了很多年了,一个生态系统具体应该是什么样子?笔者从如下几个方面解释一下:
技术层面。操作系统必须通过某种技术将自己和其他的操作系统区隔开来。比如Android采用Java语言,但使用了不同于Sun(现在是Oracle)JDK的 API;iOS采用了ObjectC语言,为应用程序提供的接口和框架甚至有别于苹果自己的Mac OS X;Windows Phone采用了C#语言,在.Net框架下进行开发。为什么这些操作系统不使用C/C++这类语言呢,C/C++尤其是C可是这些操作系统内核的编程语言啊!?这里有如下几个原因:
操作系统开发者不希望普通的应用程序通过使用比较低级的编程语言来控制系统或设备,毕竟操作系统是给智能手机、平板电脑这种消费类的电子设备使用的;通过采用更加高级的语言来简化编程和开发人员的学习难度;通过对看起来非常复杂的框架的持续演进,达到牵着开发者和厂商鼻子走的效果;便于形成依附于某个操作系统的独有的开发者社区和文化。
法律层面。操作系统必须通过创建自己的有效知识产权体系来保护自己。前面已经说过,越底层的软件组件越没有市场价值(码农们可能不喜欢听这话,但现实就是这样的)。通过建立全新的、包裹在底层操作系统之上的框架、编程接口、编程语言等基础设施,操作系统开发商才有可能建立起有别于他人的有效的知识产权保护体系。也就是说,如果连框架、编程语言、编程接口等都抄袭他人(就算是开源的、许可证允许的),那永远也无法形成一个可以有效保护自己的知识产权体系。
市场层面。通过和上下游企业的合作,建立某种联盟或者许可、授权机制,让操作系统的用户(芯片厂商、手机厂商、平板厂商)能够从中获益。比如Android开放联盟,做的就是这个事情。
开发者社区。一个好的操作系统之生态系统,要充分照顾开发者的利益,具体有如下几点:要有好的开发工具,便于开发者学习、开发和调试软件;要有好的文档或者教程,帮助开发者迅速掌握相关开发技巧;最重要的,要能够让开发者赚到钱。
看到这里,相信大家都会意识到:这也太难了吧!的确,这非常难,这也是为什么Moblin、MeeGo、Bada、webOS等操作系统相继失败,而到目前,只有iOS、Android、Windows Phone这三种操作系统的原因。
网友评论