#谷歌终止开源Android# AOSP (Android Open Source Project),不存在了?

去解答这个问题前,需要提前了解的,有两点:

1️⃣ 因为大部分 AOSP 代码通过 Apache 2.0 许可证发行,任何人都可以 fork 一份。其他代码服务平台上也有各种 AOSP 的镜像,例如 GitHub 和国内的 Android 社区。Google 无权要求其它「非官方」 AOSP 代码库下线。已经开源的,无法被撤销开源。

2️⃣ 也就是说,只要能从其他非官方渠道下载,人们仍然可以使用 Google 最后更新的 AOSP 代码,也可以按照自己的需要对其进行修改。原则上如果你有足够多厉害的开发者,也可以把之前的 AOSP 变成自己的系统,去维护和更新。

事实上,Android/AOSP 从来不是一个真正的开源项目,社区里的原教旨主义者也一直对其颇有微词。

我们上一条微博(http://t.cn/A6BeoenO)提到,Android 目前运行于 Linux 内核上,后者是 GPL 许可证开源的。

而 GPL 是一个强传染性的许可证,要求所有衍生工作都必须按照 GPL 许可证同样开源,从而贯彻无限开源、扩大社区的精神。#谷歌停止开源安卓##谷歌关闭安卓开源#

而当年 Google 为了构建 Android 商业生态,创建了平衡开源与商业需求的许可模型。Google 将 Android 平台分为几个部分:底层的 Linux 内核部分保留 GPL v2 许可证(按照要求),而 AOSP 的大部分代码则采用了更为宽松的 Apache 2.0 许可证。

这种许可结构使设备制造商能够修改和定制 Android 而不必开源所有修改,同时允许企业在 Android 平台上构建专有应用和服务。Google 自己的专有服务 GMS (Google Mobile Services) 则与 AOSP 分开,并采用不同的许可条款。这种混合方法创建了一个既保持开放性又为生态系统提供商业灵活性的模型。

具体来说,Linux 内核基于 GPL 许可证,虽然 kernel module 需要依据 GPL 强制开源,然而 userspace 应用并不受 GPL 传染性的影响,因此无需开源。部分 userspace 应用程序也与传统的 Linux 发行版不同,例如使用 bionic libc 替代 glibc,使用 toybox 替代 busybox 等。

此外,Google 还使用了「硬件抽象层」(HAL),允许厂商将不想公开的商业机密资料,比如一些特定的专有功能对应的背后代码和逻辑,存放在这一层上面,即提供了一套 stable ABI(应用二进制界面),使得厂商可以独立于 Android 框架层更新他们的专有代码。

当然 Linux 基金会对 Google 这种违背开源精神的操作方法很不爽,一度将 AOSP 从 Linux 开源项目中除名。