文章图片
出品 | 开源中国
作者 | 肖滢
策划 | h4cd
2007 年 , Google 开放了 Android 的核心代码 , 开源的这部分称之为 Android 开源项目 (Android Open Source Project , 简称 AOSP) 。 跟 Google 内部开发的 Android 有些不一样 , 它缺少了设备驱动程序以及谷歌移动服务( Google Mobile Services , 简称 GMS)等闭源组件 。 不过 , 它仍然可以编译出可用的系统 。
AOSP 的开源引起了争议 , 争议的焦点是它所采用的许可证 。
众所周知 ,AOSP 是基于 Linux 内核开发的一款操作系统 。 Linux 内核的许可证是强 Copyleft 的 GPLv2 , 它规定任何衍生版本都要在 GPLv2 下分发 , 但 AOSP 却采用了 Apache-2.0 。
这是否意味着 ,AOSP 违背了 GPLv2?
关键的 HAL 层事实上 , 说 AOSP 采用 Apache-2.0 并不准确 。
与其说 AOSP 是一个操作系统 , 不如说是一个包含了 Linux 内核 , 以及类库、应用框架等组件的软件集合体 。Linux 内核单独分为一组 , 称之为 Kernel Space , 采用 GPLv2 ;而运行在 Linux 之上的其他组件称之为 User Space , 采用 Apache-2.0、BSD、MIT 这样的宽松型许可证 。
为什么会这样呢?
本来 , 驱动程序应该放在 Linux 内核里面 。 因为 Linux 是宏内核操作系统(Macrokernel) , 驱动存活在内核 , 与内核共生在相同的地址空间 , 运作效率高 。
但硬件厂商不乐意了 , 驱动程序包含了重要的硬件参数 , 放在内核里面就必须根据 GPLv2 开源 , 核心商业机密就泄露了 。
为了打消硬件厂商的顾虑 ,Google 就搞了一个中间层 ——硬件抽象层(Hardware Abstract Layer , 简称 HAL ) , 把驱动的主要业务逻辑从内核中剥离出来 , 放在 HAL 层 , 通过接口调用内核系统 。
HAL 层属于 User Space , 根据 Apache-2.0 , 硬件厂商可以自由选择将驱动程序开源或者闭源 , 不愿开源的可以只提供二进制代码 。 内核中也有少部分驱动代码 , 不过只有控制命令和数据的功能 , 开源了也无所谓 。
【Google|AOSP 违背了 GPLv2?】Android 软件堆栈 。
除了规避 GPL 之外 ,HAL 层还有一大优势 。 它为移动领域五花八门、标准不统一的硬件驱动定义标准接口 , 避免 Android 过分依赖 Linux 内核 , 后续的扩展和整机集成变得更加高效 , 满足了手机制造商的重要诉求 。
难道真的跟 Google 所想的一样 , 调用内核系统的 HAL 层 , 不需要遵循 GPLv2 吗?
按照“Linux 之父” Linus 的说法 , 确实如此 。 1993 年 , Linus 及其他开发者在 Linux 内核源码树的 COPYING 文档中 , 添加了对许可限制和范围的说明 。 他们认为 , 用户程序通过正常系统调用内核服务 , 是对内核的正常使用 , 不属于派生作品 , 不受 GPL 约束 。 该说明一直沿用至今 。
通过隔离地址空间方式 , 避免被 GPL“传染” , 被认为是一种有效的方式 。
GPLv2 的维护者——自由软件基金会(Free Software Foundation , 简称 FSF )认为 , 软件聚合体包含有多个独立的程序 , 并在同一个 CD-ROM 或其他媒体上发行 。 如果两个模块在同一个可执行文件中 , 那它们肯定会绑定在同一个程序中 , 成为一个整体 。 如果两个模块在共享地址空间中 , 链接在一起运行 , 那意味着它们肯定会组合成一个程序 。 毫无疑问 , FSF 所说的这两种情况 , 只要其中一个模块是 GPL , 另一个都会被“传染” 。
- Google|全球游戏领域的标杆,MSI&AMD把事情做得很漂亮
- Google|在德国留学发现,华为手机在欧洲市场相当于一块砖头
- Google|逆变器中场效应管发热是什么原因造成的?
- Google|抖音物流加速!终于实现送货上门!
- Google|为何谷歌地图能一家独大?收购多家公司,资金实力领先众多企业
- Google|Google 最新专利曝光:屏幕下前镜头设计!
- imessGoogle 称苹果 iMessage 通过“霸凌”手段获益
- Google|WordPress 爆料核心漏洞致使数百万个网站遭受攻击
- Google Pixel折叠屏手机再现身,或采用类Find N机身比例
- Google|折叠屏市场大热!谷歌Pixel Fold曝光,尺寸比例与Find N很接近