Total Pageviews

Monday, 17 September 2012

“阿里云”是如何失控的?


首先,澄清一个问题。当阿里云事件爆发后,同情阿里巴巴的人们开始谴责Google的霸权,并预言未来Google会挥舞大棒打击一大批企业。但是,只要稍微分析一下,就知道这样的事情不会发生。那些人只不过是在混淆视听,为了塑造一个反垄断高手的形象。
由于Android是开源软件,实际上,Google对于产业链的控制力是非常弱的,利用司法起诉不遵守开源规则的人,虽貌似可行,但一是举证困难,二是诉讼成本高、收益小,Google更多是利用诉讼作为防御中的反制手段,不会主动进攻。
Google唯一的控制方式是利用开放手机联盟(OpenHandsetAlliance,OHA),OHA是一个产业链内各种厂商参加的联盟,使得厂商可以进行专利交叉授权、技术交换等等。这个联盟除了对成员有约束力之外,还可以利用成员向成员的合作伙伴施压。
比如,这次,阿里云使用的软件是开源的,它认为Google举证抄袭也困难,不会傻到进行举证和诉讼,因此自己已经躲在了安全距离内。它没想到Google依靠给联盟成员的宏碁施压,间接地阻止了阿里云的胡闹。
不过,这几乎是Google唯一能做的方法了,而且这个方法在大部分时间是用不上的。比如,亚马逊的KindleFire使用Android的方式,Google也不喜欢,但亚马逊不是联盟成员,而且亚马逊与联盟成员的合作也没有这么紧密,Google即便想施压也找不到办法。
国内的小米也比较安全,就算它不守规矩,Google也很难制裁,因为它不需要和宏碁这样的厂商有紧密合作(当然,小米很守规矩,我只是做假设)。中移动也修改了Android底层,但它是联盟成员,与Google博弈能力强,合作深入,所以也不会有问题。
总结起来:1,你只要不太过分,用代码别不承认,也不要把自己塑造成反Android的英雄,更不要把好系统改成不兼容的烂系统(不要过多修改底层,或者修改底层一定要有足够的技术实力),你就是安全的。按照这个标准,绝大多数厂商都是合规矩的,Google不会发飙。
2,哪怕你过分了,但你对生产制造的控制力足够强,没有过分依赖OHA成员(甚至可以说,只要不过分依赖于一两家OHA的手机制造商),Google也没有办法。
目前来看,全部符合条件的只有阿里云,就让它倒霉吧。
一把好牌,满盘皆输。这就是我看完阿里云闹剧之后的感慨。
当阿里云还在热衷于与Google打嘴仗的时候,我们应该回头看一看,阿里巴巴为什么放着满把的好牌不打,反而要在一个自己并不擅长的领域内插一脚?
当别的互联网公司都已经在移动互联网上拥有了拳头产品的时候,阿里巴巴的移动互联网战略却似乎找不到方向,变得越来越令人摸不到头脑,在一个偏僻冷门、注定不会有收获的地方把精力都浪费掉,他们到底想做什么?
现在陷入了和Google的嘴仗,貌似很英勇,但实际上却继续进行着不必要的消耗,这场争斗还可能将管理层逼上了绝路:为了面子更不能退出了,必须在这个注定失败的地方硬撑下去。
可以说,阿里云的所作所为简直就是一连串失控的集合,从而产生了这样一个怪胎。下面,我们就看看它到底出现了多少的失误,才铸就了今天的尴尬和无聊。
失控的决策:操作系统
阿里云最大的失误是选择了操作系统这个方向。
阿里巴巴整个集团的优势在于贸易和网络金融,当手机逐渐取代了固定互联网的时候,一个公司首先要考虑的是如何把以前的优势延伸到移动互联网上来。这里,最现成的办法就是开发手机上的APP,这一点阿里巴巴已经做了开发,但并不出彩。
另一种方式就是手机预装,利用预装尽量扩大用户基数,只要安装了,肯定有人用,从低端往高端延伸,等用户养成了习惯,自然而然就占领了。阿里巴巴的产品有巨大的客户群,手机厂商求之不得与其合作,只要把产品开发好,预装不是问题。
这两种方法,都比操作系统带来客户的速度要快得多,也容易得多。
另外,即便要涉及手机操作系统,也要配合自己的主业进行,既然阿里巴巴的主要业务就是交易平台,这在应用层就足够完成,做一个与米UI类似的ROM就足够了。
最不理智的选择才是操作系统。操作系统是一种沉淀成本很高,一旦率先进入后,边际成本又非常低的产品,对于后来者极为不利。在国内,财大气粗的中移动试过一次(OMS),但以失败告终,其余没有人再敢试。在国外,微软最新的手机OS据说非常好用,强于Android和iOs,但由于错过了时机,仍然不被看好。
也许阿里巴巴习惯了大开大合和豪言壮语,对跟随Android做开发不感冒,总想做更伟大的事情,利用一揽子方案来解决问题。
另外,还有一个原因:中国的技术人员有操作系统情节。这一点,我认为阿里云负责人王坚难辞其咎。作为技术人员,不懂市场,低估了开发难度,以至于在操作系统开发时屡屡出现变数。本来,他的角色是应该尽量在技术上对冲马氏宏大、让方案变得更加可行的。但实际上,他扮演了一个相反的角色,迎合了马氏宏大,技术人员的操作系统情结甚至让他完全无视了市场的存在。
而更重要的是,当王坚痴迷于操作系统时,阿里巴巴实际上是在丧失其他的机会。小米利用这个时机已经成长为著名的品牌,新浪、腾讯等都已经有了自己的拳头产品,只有阿里巴巴的移动互联网仍然像一盘散沙,不知道到底想干什么。他们的精力都用在了一个注定无法成功的地方,一下子调不过来了,可以说进入了泥潭。
我们不妨向下看。
失控的研发:偷梁换柱
在王坚的主持下,阿里云收购猛犸科技,开始了探索。据王坚回忆,“云OS的第一版本和Android没有任何关系,e28(摩托罗拉Ming手机的designhouse)为我们做了第一款原型机。”
然而,独立操作系统接下去却受到了严重的打击,在与手机厂商谈合作的时候,厂商们从用户和市场的角度出发,都认定这样的手机不会有市场,必须与Android手机进行兼容才有可能取得部分成功。
如果王坚足够敏锐,此刻立即回头,或者缩小愿景,做一个基于Android的ROM,要不就与厂商合作进行应用预置,都不失为明智之举。但阿里云被操作系统思维困住跳不出来了,它走出了第二步:提出不仅要开发独立操作系统,还要兼容Android。
但这一步几乎是无法做到的,从技术上太难了。在异质操作系统上开发一个完全兼容Android的环境,其成本甚至比直接从头开发一个Android还要麻烦。于是,选择只剩下了一种:全面转向Android。
在这个问题上,阿里云技术团队一定经历过极大的困扰:如果转到Android,那么还叫独立产品吗?
为此,阿里云开始了掩耳盗铃的方法:在名义上,仍然坚称这是独立的操作系统,只是为兼容Android做了一些补丁;而实际上已经进行了偷梁换柱,改用了Android的内核,在Android系统上进行了一些改头换面。
阿里云抄袭自Android,从目前的情况看,这是毋庸置疑的。
首先,即便以现在国际大公司的实力,也很难开发一个与Android完全兼容而又独立的系统。没有经验的阿里云想要独立开发一个可以商用的独立系统,再兼容Android,从难度上根本不可能。
其次,一位曾经的员工(讨论此事的原微博已删除)曾在微博上透露,阿里云第一版原型系统的确是独立开发的,但之后却转向了Android。
第三,已经有人对比了阿里云和Android系统文件,得出结论,Android的7个模块中,阿里云直接使用了其中最核心的5个,再造了虚拟机、上层应用,并加了一个云服务。他的分析基本上是合理的,不会有太大出入。阿里云做的最新解释间接地证实了这一点,在解释中阿里云夸大了虚拟机和云服务的地位,故意不谈其他的核心部件,以造成假象突出它的研发。
但王坚一直声称阿里云是独立的,原因就在于他的不尴不尬的地位:一方面,没有技术实力也没有市场做一个完全独立的操作系统;另一方面,为了面子他还必须说这个系统不是Android,而是独立的。
失控的沟通:陷入泥沼
种种迹象表明,虽然在技术上大量使用了Android的核心,已经成了Android不成熟的变种,但阿里巴巴的高层由于不懂技术,可能并不知情,因此他们仍然认为阿里云是一个独立的操作系统,甚至比Android牛逼。这是一种公司管理中沟通上的失控。这个失控是造成一系列宣传问题的原因。
于是,从最初的宣传开始,阿里巴巴就将自己的云系统说成是完全独立的,与Android竞争的操作系统。这给业界一种很奇怪的感觉,一方面,谁都知道它来自于Android,但又声称自己和Android毫无关系,并要做Android的对手。
这种宣传甚至出现在了《华尔街日报》上,在这篇报道中,记者采访了阿里巴巴总参谋长曾鸣,并将阿里云作为一款独立研发的操作系统,并将它与Android对立起来。
这种夸大其词的宣传在国内屡见不鲜,但如果宣传过度,会引起新的麻烦:Google的干预部分来自于阿里云的高调。
于是,到现在为止,我们就看到了一种极其尴尬的局面:1,被人当众揭穿了独立系统的神话,还要打肿脸充胖子绝不承认。2,更严重的是,在这样不停折腾的工夫,阿里巴巴的时间正在一分一秒流逝。3,市场决定它做的操作系统注定不会有进展,但它必须把最宝贵的人力财力浪费在这里。
这样,真正需要的产品就被耽误了。比如,现在最需要的是把阿里产品的客户端尽快铺到用户的每一台手机上,但阿里云操作系统由于移植性差,根本不能提供任何帮助。但阿里云似乎并不着急,在采访中表示要慢慢来,不急于搞能大规模铺开的安装版,也不急于占领更多的手机……但这叫什么话?
阿里巴巴集团的整个移动互联网战略就在这儿耗着,等待着一个永远不会成熟的操作系统。
失控的领导:管理缺位
阿里云战略出现了如此多的失控,并最终造成了重大失误,但那些负责的人是否会受惩罚呢?
到现在我们没有看到。实际上,作为负责人的王坚甚至还高升CTO了。
如果选择一个对市场完全无知、甚至带着藐视和抵触情绪的人当CTO,他不仅无法配合其他部门的工作,还会由于对细节的痴迷,把最重要的事情耽误掉。王坚更适合的职位是做储备性技术研发,本该给他个高级工程师的头衔让他独自去做某些模块级的Research,现在却被放到了不适合的岗位上,的确也是一种失控。
当然,不适合的人占据高位,在阿里巴巴的高层看来,似乎也不是什么要命的事情,因为这个集团本来就是一个人的公司,其他人只要崇拜他,听着口号往前冲就是了。
阿里巴巴一直作为一个魅力型领袖(克里斯玛)领导的公司而存在。在马基雅维里的定义中,克里斯玛统治者指的是具有超凡魅力、极大的煽动性、对他人有催眠和支配性的人,他们依靠这种力量进行统治,而不是靠制度的约束。如果按照这个定义来看阿里巴巴公司,是完全符合的。
克里斯玛型公司的特点是:在打江山的时候能够激发起员工最大的行动力,当领袖选对了方向时,公司能以超常规的速度发展,当选错了方向,也会以最无畏的勇气自杀。从目前的情况看,阿里巴巴属于前者,但在个别的领域内,有后者的苗头。
克里斯玛型公司还有一个特点:制度化欠缺。领导人在发挥最大魅力的同时,往往忽视制度建设,甚至惧怕制度建设,因为制度除了约束他人,也会约束自己。所以,最后公司在成长期过后,往往又会显示出疯狂和不守常规的一面,甚至出现一些莫名其妙的闹剧。
制度欠缺的另一个结果,就是即便有不适合的人,也难有考核机制将其换下,从而造成越来越失控的局面。
--------------------------------------------------------------------------

阿里云OS和Android的关系


近日,有关谷歌Android和阿里云的争论闹得沸沸扬扬,谷歌高管、Android开发领头人Andy Rubin在其Google+主页中这样写道:阿里云系统采用了谷歌Android系统的运行环境,明显是由Android系统修改得来。
  Andy Rubin,事实是,阿里云系统包含了Android中运行环境,明显是从Android中演变而来,但无法与Android兼容。基于Google对阿里云网站上应用的分析,这个平台尝试与Android兼容,但未能成功。
  阿里云OS到底是不是Android以外的东西,笔者通过技术手段对其进行一些分析。天语W700是一款使用了“阿里云OS操作系统”的手机,笔者找到一个天语W700手机的阿里云OS的刷机包。打开粗粗看一下,和Android的刷机包没两样。里面的应用全部是apk,这意味着它们都是以Dalvik可执行文件的形式存在的。
阿里云
[图1]
  Build.prop里面也指出是,Android2.2
阿里云
[图2]
  接下去来找其中的c library,因为我们知道,Android是在Linux内核之上运行了一套Google自己组织起来的架构。和通常意义上的GNU Linux一样,这个架构里最基础的东西之一就是C运行库。
  GNU Linux的C运行库是Glibc,而Android用的是Bionic。通过使用自己组织,编写的代码,Android可以从这一层以上避开GPL协议不允许发布者拥有保密源代码权利的限制。
  找到其中的lib/libc.so,也就是C运行库,用readelf查看它的符号表(这么做不涉及反向工程),可以在找到”bionic”。说明它的C运行库很可能是bionic。
阿里云
[图3]
  内核是linux kernel,基础的C运行库是Bionic,有Dalvik,上层的应用全部是Dex格式,这些东西说明W700上的“阿里云OS操作系统”不太可能是Android以外的东西。
  当然以上的内容无法用于推测,这么做是否与Android的授权协议产生了矛盾。但是有一件事情比较明确,如果提供这个手机的厂商没有提供其中linux kernel的源代码,那很可能是非法的。
  更新:上篇用的ROM是错的,是Android的刷机包,不是官方原生的云OS的ROM,所以论据是错的。这里用官方原生云OS的ROM分析一下,到底阿里云OS和Android之间是什么关系。
  解开看大目录的结构:
阿里云
  根目录下是一个boot.img,这就是Android系统的bootloader,也就是启动分区。另外有个system目录,这就是Android系统的system分区。进入system目录往下看:
阿里云
  这里和Android ROM的目录结构是一模一样的,各位可以自己找个Android ROM对比以下。核心的几个目录:
  app: 存放ROM预装的app
  bin: 系统进程的目录
  framwork: Android Framework目录,就是Android应用程序运行所需要的库文件的目录
  lib: so库文件目录,相当于Windows的system32目录
  咱们再进到app目录看一下:
阿里云
  好,看出区别来了,Android下所有的app都是以apk结尾的,前一篇帖子用的ROM就是Android的ROM,里面对应这张图里的文件就都是apk的。这里怎么都是lar呢?这就是阿里云OS和Android不同的地方了,因为apk是Dalvik虚拟机管理应用程序的文件格式,阿里云自己搞了个虚拟机,用lar文件来管理。lar文件和apk文件有什么不同?我们知道apk文件其实就是一个zip文件,用WinRAR可以直接打开看,那lar文件呢?用WinRAR果然也可以直接打开:
阿里云
  做过Android开发的人一看到这个目录结构就发现,它和apk的目录结构基本上是一模一样的,除了Android应用的classes.dex文件变成了classes.lex。那所谓的lex文件是不是就是把dex文件换了个名字呢?我们用二进制比较一下:
阿里云
  左边的是Android应用的dex文件,右边的是阿里云应用的lex文件。可见,文件格式已经完全不一样了。
  好,app的不同已经看出来了,我们再来看系统核心进程有什么不同。进入到/system/bin目录:
阿里云
  熟悉Android系统的人一眼就能看出来,am, app_process之类的名字都是Android核心进程的名字。多出来了几个:cloudserver, chpasswd.cgi之类,看来这就是阿里云所谓的“云服务”的核心进程了。
  好,文件的比较就到这里,那现在基本上可以下结论了,一个完整的Android系统,包括以下几个部分:
  1. bootloader:用来启动操作系统
  2. kernel: 系统内核
  3. 核心进程,就是 /system/bin 下面那堆东西
  4. so库: 系统运行基础,就是 /system/lib 下面那堆东西
  5. Android虚拟机,所有的上层应用都是靠虚拟机来运行的
  6. Android Framework: 所有的上层应用都是通过调用Framework来实现功能的,就是 /system/framework下面那堆东西
  7. 上层应用,比如说桌面Launcher, 拨号,短信,通讯录之类,就是/system/app下面那堆东西
  那么,阿里云OS,在上面7个部分中,虚拟机用的是自己的,上层应用是自己定制的,另外额外加了一个“云服务”,其余部分都是用的Android的。它和Android是什么关系已经很清楚了。
  那顺便八卦一下,为什么阿里云要搞成这个样子呢?说来就话长了,话说当年阿里云刚成立的时候,还是很有追求滴,当时收购了一家国内做Java虚拟机的公司(叫“猛犸科技”),同时还找了一帮MOTO做Linux内核的人,想搞个自己的操作系统出来。阿里云的CEO叫王坚,和李开复一样都是从微软研究院出身,但是颇看不起李开复搞的“点心OS”,认为“拿个Android来改一改,多土啊!我们要搞自己的操作系统!”于是呢,阿里云的一帮人就吭哧吭哧搞“自己的操作系统”了。结果呢,大家脚趾头都能想到,从头搞一个操作系统哪有那么容易,做了半年没做出来,咋给马云交差呢?于是也顾不上土不土了,拿Android改吧。虚拟机是现成的,那就换掉Android的虚拟机吧,好歹能算是自己的工作成果。但光换个虚拟机意义也不大啊,HTML5和WebOS的概念比较新潮,那就再加个“云服务”的概念吧,也算是国内HTML5的倡导者了。HTML5通过浏览器引擎跑,性能肯定比不上原生应用,那怎么保证操作流畅呢(特别是桌面Launcher,天天用,要是太卡,用户就疯了),那还是用原生应用来实现吧……于是,最后阿里云OS就长成现在这样了。
from http://www.williamlong.info/archives/3222.html
------------------------------------------------------------------

"不兼容"将毁掉Android




据新浪科技报道,谷歌高级副总裁、Android系统创始人安迪·鲁宾(Andy Rubin)今日在Android官方博客上发布声明,称Android发展过程中的不兼容将毁掉这个系统,“尽管Android完全免费,但只有兼容设备才能充分享受整个生态系统带来的益处”,“为同一个Android平台添砖加瓦,而不是推出一大堆不兼容版本”。
  他同时在Google+上发布了这篇声明,并解释了背景:
  我们很惊讶得知阿里首席战略官曾鸣说“想做中国的Android”,而事实上阿里云正是基于Android的运行环境,即,显然他们是由Android衍生而来。
  根据我们对apps.aliyun.com上应用的分析,此平台试图兼容,但最终未成功。
  兼容Android很容易。“开放手机联盟”提供了所有的工具,以及指导如何做的细节。请看以下博文,解释了我们对于Android兼容性问题的思考,这关系到我们努力想建立的生态系统:
  声明全文如下:
  我们在开发Android系统时,希望它成为一款开源移动平台,免费提供给所有人使用。2008年这款系统发布时,即遵守Apache开源许可协议;从那时起,我们一直依照同样的协议进行研发和创新。所有人都可以从source.android.com获得这份协议。这种开放性使硬件厂商能够定制Android,提供新的用户体验,驱动创新,扩大消费者选择范围。
  作为这一开放平台的首席开发者和守护者,我们意识到,自己对应有开发者负有责任:他们采纳了Android,并耗费精力为之开发软件。每位开发者都在推动Android的进步。这是因为当他们为Android开发应用时,整个平台会变得更好,对消费者的吸引力也会更强。开发者推出的Android应用越多,才会有越多的消费者受到优质软件内容(如《水果忍者》和谷歌地图)的吸引,购买Android设备。而越多的消费者选择Android手机和平板电脑,开发人员才能获得更大的受众,应用销量才能更高。这一战略能够实现“三赢”:开发者卖出更多应用,硬件厂商卖出更多设备,消费者获得更多功能和创新。
  用生物学的术语讲,Android有时会被称作“生态系统”。用经济学的术语讲,它被称作“良性循环”,亦即通过反馈链条不断提升自身的事件集合。在这一循环中,每次迭代都会产生“正能量”。它会持续向前发展,直至某个外力介入并打破循环。
  我们最初在设计Android和“开放手机联盟”时,就是希望创造一个“良性循环”,让生态系统的每一成员均能获益。我们详尽考量了哪些外部因素能够削弱整个生态系统,并意识到一个重要的外部因素是:Android部署过程中出现的不兼容。原因如下:
  假定这样一种情形:每款手机的Android系统都略有不同。比如,谷歌地图在一款手机上运行正常,却在另一款手机上运行极慢。举个例子:Android部署了一个API,能够在手机屏幕上没有活动时,通过休眠几毫秒的时间节约电池电量。这一原型API的功能类似于SystemClock.sleep(millis),“millis”是休眠的毫秒数。
  如果一家手机厂商以错误的方式部署了SystemClock.sleep(),并将括号内的参数设定为“秒”而非“毫秒”,那么手机的休眠时间将是最初设想的1000倍!这家厂商推出的手机运行谷歌地图时的表现将非常糟糕。
  如果由于兼容性的障碍,Android应用在不同设备上表现不一,那么消费者将离开生态系统,而开发人员将紧随其后。这意味着良性循环的崩溃。
  我们从未恪守“一种屏幕大小就足够”的信条;因此,我们提供了免费的“兼容性测试套装(简称CTS)”,在保证开发者和消费者不必担心兼容性的同时,让设备厂商实现差异化。CTS是一套软件工具,能够对平台进行测试和检验,确保(如上例)SystemClock.sleep(millis)的休眠时间仅以毫秒计。与Android一样,CTS同样遵守Apache开源许可协议。
  尽管Android完全免费,但只有兼容设备才能充分享受整个生态系统带来的益处。通过加入“开放手机联盟”,每一成员才能为同一个Android平台添砖加瓦,而不是推出一大堆不兼容版本。感谢“开放手机联盟”的85家成员,是他们帮助我们建设Android生态系统,并持续驱动高速创新。感谢他们的支持,是他们让Android生态系统拥有了逾5亿部兼容设备,而这一数字仍在不断增长。