天天看点

详析:谷歌为何紧急封杀阿里云 OS?

在谷歌封杀宏碁推出“阿里云”手机之后,双方各就此发表了两轮声明。 这些声明也使得事件爆发之初的一些判断和表态看上去十分可笑,诸如“谷歌封杀是给阿里云加冕”、“阿里云因为采用与谷歌相似的web app战略规划所以被后者忌惮”等等,有些已经在双方的声明中被直接否定,也有些能明显看出来作者不了解移动操作系统的体系架构以及gpl、asl等开源 协议的规定,所以对一些明显的问题视而不见。

从安卓之父安迪•鲁宾的两次声明中,我们可以看到,谷歌封杀阿里云,其实出于两大目的:防止安卓阵营的硬件基石开放手机联盟(oha)分裂;谴责阿里云对安卓应用app的盗版。而阿里云如果要回应这些指责,光发声明是不够的,还需要遵循开源协议,公开云os部分代码。

阿里云市场的确存在盗版问题

他们发现在阿里云的应用市场中,有神庙逃亡(temple run)等热门游戏的盗版拷贝下载,其署名提供方并非游戏自己的开发商,而是中国国内某个安卓应用市场,而后者提供了大量其他盗版app下载;有一些原本 是收费的游戏也在阿里云的市场中提供免费下载;最有趣的是,一款针对安卓rom的工具软件rom toolbox pro也出现在阿里云市场中——阿里巴巴方面一直坚称阿里云os并未基于安卓,那在自己的市场中放一款针对安卓rom的工具有什么意义呢?

androidpolice 采访了一些应用开发者,他们明确表示自己并未将应用app上传到阿里云市场。一款收费游戏(在阿里云市场中被标为免费)的开发者表示,“这是我们第一次听 说阿里云。我们不知道我们的应用被上传到了那儿”。rom toolbox pro的开发者语气则比较激烈:“像阿里云这样的软件破解网站只会伤害消费者和开发者”。

在盗版习惯仍然深入人心的中国,免费、开放的安卓 平台以及其上的免费应用给很多人一个错觉,既然免费,就可以随便用,所以发布一些免费应用app有什么不对呢?但这的确是不对的,免费不等于作者放弃了所 有权益,他们只是放弃了按份出售应用的做法,但署名权和其他权益比如市场推广、运营等权益仍然属于作者本人,上传到哪个市场、适用于哪些手机的决定权同样 在原作者(这也有保证应用正常运行的考虑)。像上述阿里云市场中更改应用作者署名、使用非授权版本等行为,已经侵犯了软件作者的权益。至于把收费软件改成 免费应用放在市场里的行为,就更不用多说了。

也有些人说谷歌为什么不去抓中国数量众多的盗版market,非要跟阿里云过不去?这里面有个 精力问题,也有个商业策略问题。盗版永无止息,但一旦有商业公司来运作,其破坏力就大得多(因为很容易变现出利益),反过来说侵权主体也好认定。所以反盗 版历来是重拳打击商业、政府机构的盗版行为,对个人消费者和一些小组织则基本无视。

协议规定安卓和阿里云都应开源

好。本来挺简单的盗版认定问题也说了这么一堆。下面进入稍微复杂一些问题讨论,即阿里云os是否分裂了安卓阵营。

阿里巴巴副总裁约翰•斯佩里奇说“阿里云os并不是安卓生态系统的一部分”;阿里第二份官方声明中也说,“阿里云os使用了自行研发的虚拟机,这与安卓的 dalvik虚拟机不同。阿里云os的运行环境,也就是os的核心部分,即有不同于dalvik的阿里云自己的java虚拟机,也有阿里云自行研发的云应 用引擎(cloud app engine),用于支持html5 web应用。阿里云os用了一些(开源的)安卓应用的框架和工具仅仅是作为补丁,让使用云应用的用户可以在我们的生态系统中使用其他第三方应用。”

现 在双方都表明立场了,谷歌说阿里云基于安卓的代码,阿里说我们的核心是自己开发的(但操作系统的核心是“运行环境”这个奇怪的说法是头一次听说),只用了 安卓一些应用框架和工具做补丁,然后还要特意强调,这些部分是开源的。双方各执一词,按业内的做法,那就对比两边的源代码好了。安卓的大部分源代码是公开 的,阿里云os的代码没有看到公开,似乎他们也没说要公开——但是且慢,按照开源协议,阿里云os必须公开一部分代码。

从这场争论开始到现在,舆论被有意无意地引导到阿里云的远景规划与谷歌冲突、必须要有自主操作系统以免受制于人这些奇怪的宏大叙事角度去,却没看到有基于开源协议来分析阿里云义务的声音。

众所周知,安卓是一个开源、开放的操作系统,但这二者并不能等同。同时,开源也并不意味着,任何人或者公司都可以拿着公开源代码回去自己编译出一个应用来,然后打上自主产权的标签就可以去报奖立项了。开源代码有着严格的流转规范体系,使用开源代码必须基于这些规范,来保护开发者的版权。我们以安卓系统为例,来分析一下这些不同的开源标准,以及阿里云应该遵守哪些标准公开代码。

安 卓系统基于linux操作系统发展而来(阿里云也自称基于linux而非安卓系统)。linux是一个开源系统,它采用了gpl开源协议,这是我们这里提 到的第一种开源协议。gpl协议规定,遵循该协议的代码都是开源、免费的;一旦软件作品中使用了遵循gpl协议的开源代码,该软件也必须开源、免费。业内 通常管这种特性传递叫“传染性”,只要使用了一行gpl开源代码,整个软件都被“传染”为遵循gpl协议。注意,真正的gpl协议要比这里的描述复杂、严 谨不少,为了行文简洁,本文仅仅选取了与这一问题相关的部分内容进行表述。

gpl使软件开发者获得了极大的自由,可以免费阅读、使用全世界 最优秀的程序代码。但它的强传染性也削弱了它的商业前景。一些手机制造商如果针对自己的硬件开发一份linux驱动,它必然要调用一些linux基本函 数、类库,该驱动因此会被gpl传染,要公开所有源代码。但这可能暴露厂商的硬件细节,造成泄密。同样,一些商业公司也会认为,将自己的独有技术拿出来支 持linux,会因为gpl的免费开源特性,造成创新成果流失(微软的鲍尔默就曾经说gpl让linux染上了癌症)。

为了规避这一问题, 谷歌除了在操作系统核心使用了linux代码之外,在其他专门为安卓开发的相当一部分代码中,使用了传染性不那么强的开源协议:基于apache的asl 或者基于bsd的bsd协议。这两种协议的共同点在于对商业应用十分友好,遵循这两种协议的开源代码,商业公司可以拿过去用,而开发出的产品不一定需要也 开源,可以视情况打包为闭源商业软件。在安卓系统中,大部分硬件驱动程序,以及谷歌专门为移动设备开发的基本函数库bionic,都慷慨地采用了bsd或 asl开源协议,其中包括dalvik虚拟机等安卓运行库(runtime)。(整个安卓操作系统各部分所遵循的版权协议见图)

详析:谷歌为何紧急封杀阿里云 OS?

对比代码是解答“是否抄袭”的核心

这 里要多说两句,谷歌为什么要允许别人闭源使用自己的开源代码呢,它有啥好处?必须要说明,开源协议的选择体现了软件的价值观,也体现了开发者的商业考量。 如果谷歌让整个安卓系统采用gpl协议,看上去所有开发者的进一步开发都会被开源出来,系统创新的速度可能更快;但这样有个更大的副作用,就是很多商业公 司就不愿意介入安卓开发了——一介入就被“传染”了要开放自己的源代码了。为了团结其他商业公司,让更多的手机厂商原意采用安卓、更多的软件厂商原意为安 卓开发丰富多彩的应用app,谷歌选择了在linux核心之外,另行独立开发出安卓的运行环境与函数库,并将这部分以更为自由的bsd和asl协议发布。

以看到,谷歌对linux核心做了至少两处重大改动:进程间通讯(ipc)模块binder,和至关重要的电量管理模块。阿里云os既然也是移动操作系 统,必然需要对本来为桌面系统开发的linux做出相似的处理。这个处理方式,是沿用了谷歌的方式,还是真正的自主开发呢?代码公布后,自然见分晓。

双 方争议的另一个核心,是阿里云os如何实现了对安卓应用的兼容。安卓系统的开发语言是java,为了精简java程序使之适用于移动设备,谷歌使用了 dalvik虚拟机。注意dalvik不是java虚拟机,它是将java程序重新打包为一种更为精简的形式运行。阿里云在第二份声明中说自己用了“不同 于dalvik的java虚拟机”,那不但二者的代码不同,连工作原理也会有不同了。

包括dalvik在内的安卓运行库,采用的是asl和 bsd协议,也就意味着阿里云就算直接用了这部分代码,也可以选择不公开源代码。但这不等于用了白用:asl和bsd都规定,使用了遵循该协议的开源代 码,必须以显要方式标明原开发者的版权归属;这种标明方式,通常形式有源代码中保留原作者的权利声明和其他原作者规定的说明。阿里云既然已经披露了自己使 用安卓代码的情况,这部分代码中是否保留了谷歌的版权声明,只需要查看相应程序的说明文件即可。

总算把开源协议这部分介绍得差不多了。花费 这么多笔墨的目的在于说明,这次谷歌与阿里云之争,不应该像以前业界的一些争论演变为口水战,而应该像另外一些争论一样,可以让更多人了解操作系统、开源 协议等相关知识,消除许多误区(这两类争论我就不具体点名举例了),避免被人当技术小白糊弄。要达到这个目的很简单,阿里云os公开指定部分的源代码,供业内行家与谷歌代码进行比对即可。这不是强人所难,因为既然依照gpl、asl、bsd等规范享用了一大批免费开源源代码,那也应该遵循人家规定的义务。

当 然,在中国这个用盗版软件都异常有理的国家,各类开源协议都是防君子不防小人的,程序源代码都是纯文本文件,你不遵循协议,它也不会闹脾气不运行,或者在 屏幕上打出一行字来骂你。但无论是阿里,还是另外号称要做自主操作系统的华为、百度、联想,都是国际级大公司,应该不会耍这种初级流氓。

安卓用户与开发者成为赢家

类安卓版本之间的兼容、继承也问题多多。谷歌应对这一问题的方式是组建开放手机联盟,并在安卓4.0后逐步在系统层面进行统一、限制明显的分裂行为。

宏碁是开放手机联盟成员,有权优先获得最新的安卓系统代码和接口服务,如果它再去支持一款从底层到应用都与安卓兼容的阿里云os,从谷歌的角度来看,担忧泄密、分裂也的确有其道理。