具体来说,在缺乏标准的情况下,要打破结盟的有效措施,就是软硬件分离。终端厂商只聚焦终端功能的开发,这是他们的强项。把终端功能通过操作系统API的形式暴露出来,提供给软件APP调用。比如一个智能开关,只要通过API,提供开关打开,关闭,调节电量,网络连接等功能。具体什么时候打开,与其它家电设施如何联动,如何形成有价值的智慧家庭解决方案,则是智能家电平台厂商要做的工作。平台厂商开发运行在智能开关上的应用程序(APP),调用智能开关提供的API,实现智慧家庭功能。由于具体的通信协议和业务逻辑,是由平台厂商自己实现的,因此就不存在强绑定的问题。智能开关的用户,可以通过更换APP的形式,来更换智慧家庭服务提供商。这种模式与智能手机是一致的,可以通过安装或卸载APP,来灵活选择电子商务提供商。但是物联网终端与PC不同,不像PC这么标准,有固定的架构和指令系统,物联网终端的架构多种多样,CPU更是千变万化。为了确保同一款APP能够应用在多种多样的硬件上,必须采用硬件无关语言来编写APP。比如Java,比如Python。当前HelloX操作系统采用的是Java语言。
物联网的另外一个特征-碎片化,也是物联网操作系统必须要解决的。所谓碎片化,是指物联网终端的硬件配置各种各样,比如内存配置,从只有十几K甚至几K内存,到数十M或数百M。再比如外围设备,有的仅仅具备简单的传感和网络功能,而复杂一点的终端,则具备完善的Ethernet或LTE连接支持。碎片化会导致企业开发成本的剧增,因为你必须为一些终端选择低端的操作系统,为另外一些终端选择相对高端的操作系统。这些操作系统提供的工作机制和API都是不同的,这样就会导致企业无法共享开发和维护经验,无法共享代码和人力。物联网操作系统必须要解决这个问题。目前来说,可能的解决方案,就是可裁剪性。同一个操作系统,通过裁剪或动态配置,既能够适应低端的需求,又能够满足高端复杂的需求,而共享相同的工作机制和API,以及开发工具。
在满足上述两个条件的前提下,物联网操作系统还必须能够支撑物联网的另外一个重要特征-本地协同。举例来说,智能开关应该可以与智能电视协同,在智能电视被关闭后,应该能够通知智能开关,以切断电源,节约电量。这包含了本地设备发现,能力交互,工作协同等几个相互关联的要素。很多协议或标准可以支撑这种操作,比如AllSeen联盟搞的AllJoyn标准等。物联网操作系统可以自己定义相关交互规则,也可以直接集成AllJoyn等。总之相对上述两个特征,支撑本地协同要简单得多。
说了这么多,就是试图对物联网操作系统做一个定义。并不是所有的操作系统都是物联网操作系统,只有满足上述三个特点,即能够支持软硬件分离,支持碎片化特征,支持本地协同的操作系统,才算是物联网操作系统。这只是个人的理解,不同意见的朋友,可以探讨交流。只有本着开放合作的态度,找到最大公约数,然后逐步扩大这个最大公约数,才能慢慢的把一个行业做好。需要注意的是,这里强调的是“开放合作“,而不一定非要”合作共赢“。经济学中有一个著名的概念,叫做”帕累托改进“,是指在参与经济活动中的多个player之间,任何一个player经济利益的扩大,只要不会导致其它player的利益降低,都叫做帕累托改进。因为这种改进,会导致整体经济效益的改进。在物联网领域的合作,我们也建议遵循帕累托改进的原则。另外一个观点就是,物联网操作系统必须是中立的,即不倾向于支持任何厂商的终端,也不倾向于支持任何厂商的物联网后台系统。同时,物联网操作系统必须要开源,以展示开放和中立。
物联网操作系统的概念似乎得到了越来越多的认同。这几天,华为在一个SDN大会上,发布了叫做LiteOS的物联网操作系统,主要支持自有的芯片和物联网终端,并内置私有的协议,与自产的物联网网关进行配合。实际上,在2014年的行业分析师大会上,华为就公布了开发物联网操作系统的想法。但是如果用我们上面定义的三个特征来匹配,就会发现华为发布的操作系统,不满足上述全部特征。首先,从目前能够拿到的信息来看,LiteOS并不能支持软硬件分离,也不能保持中立性,因为其目的,还是希望对自有芯片进行更好的支持,同时与自产的物联网网关进行配合,有很强的倾向性。虽然宣称要开源,但是至今尚未看到其源代码。实际上,我个人是很期望华为能够发布一款真正的物联网操作系统的。依托操作系统,建立一个完整的产业链,从而促进行业的发展。依华为的实力和品牌,完全可以做到这一点。但是对LiteOS的发布,却有一些失望的情绪,首先其名字,就不太合适。物联网操作系统可不能仅仅是Lite,而应该能大能小,小可以Lite,大则可能比通用操作系统还要复杂。但LiteOS未来的发展如何,目前下结论显然太早,还需要长时间的观望。个人仍然期望LiteOS能够真正发展起来,改变笔者对Lite长期以来形成的贬义印象。