Google没有闭源 但正把Android变得“能看不能摸”

摘要:

Google计划对开发新版Android操作系统的方式进行重大变革。在许多人眼中,Android的开源属性正是选择这款系统的关键理由之一——三星等OEM厂商通过对One UI等皮肤版本的代码进行自主调整;而密切关注Android动向的朋友则往往能从Google对Android开源项目(Android Open Source Project,即AOSP)的公开变更中,发现关于操作系统即将推出新功能的种种迹象。

过去,正是因为Android实时开放源代码,才成就了全球数十亿台设备的庞大生态系统,并催生了移动互联网时代最具活力的创新模式。

然而,Google近日正式确认,从下周起,Android未来的核心功能开发将转入内部闭环,仅会定期向AOSP推送阶段性成果,同时AOSP的更新频率也将放缓。

虽然Google一再强调不会封闭源代码,但这种悄悄地把技术控制在自己手里的做法,正在让本来开放的Android生态系统越来越向Google靠拢,甚至进一步加强Google“一家独大”的局面。

Google进一步转向内部开发

Google已确认,未来所有Android的开发工作都将在其内部进行。

AOSP是一个由Google维护的开源操作系统开发项目,任何人都可以自由访问、查看代码,并为项目贡献代码和修复。AOSP包含了Android操作系统的核心组件,但并不包含Google及其合作伙伴开发的专有软件,例如Google移动服务(GMS)。GMS包含了Play Store、Google云消息推送框架、Chrome浏览器、Google搜索等应用。

Android的一个显著特点是其版本多样性,这既是其优势所在,也偶尔带来挑战。例如,三星的One UI甚至Google自家的Pixel UI,都在核心Android体验基础上进行了定制,加入了独特的功能和改进。这一切都得益于AOSP提供的通用基础操作系统。

除了对公众开放贡献外,Android开源项目还允许根据开源许可自由使用和修改。亚马逊和三星等制造商可以自由地根据自身需求调整AOSP,并开发出自己的衍生产品,例如完全不搭载Google服务的多功能Amazon Fire OS。

这种开放性也为某些企业在受到贸易制裁后继续开发基于Android的EMUI和HarmonyOS之类的操作系统提供了可能。比如,华为在面临一些国际限制后,无法再获得GMS许可,但可以继续使用AOSP,最终华为用HMS取代了GMS功能。也有观点认为,这等于华为可以继续使用Android,但他们得不到Google的帮助。

值得注意的是,要让AOSP成为一款功能齐全的智能手机操作系统,往往需要进行大量调整——有时甚至是大规模修改。因为如果仅仅按照默认方式构建AOSP并将其安装到设备上,其功能远远达不到现代智能手机的标准。许多用户日常依赖的关键功能都将缺失,以至于运行纯AOSP几乎没有实际意义。

但如今Google决定将核心功能转入内部开发,可能会导致一些依赖AOSP进行定制的硬件厂商获取新功能的时间延迟,从而影响产品竞争力。此外,开发者社区可能无法再提前看到代码变更,使其难以及时适配和优化应用。

Google过去的做法是频繁更新公共AOSP分支,任何人都可以访问AOSP,但内部分支仅对Google和拥有Google移动服务(GMS)许可证的公司开放,例如三星、摩托罗拉等。

此前,一些组件,如构建系统、更新引擎、蓝牙协议栈、虚拟化框架和SELinux配置,是AOSP-first,即完全在公开环境下开发。

但从下周起,Android的所有开发工作都将在Google的内部分支进行,只有当Google发布新的分支时,相关源代码才会对外开放。


这是 Google 使用的基于网络的代码审查系统 AOSP Gerrit 的屏幕截图。

Google承诺将继续发布新Android版本的源代码,比如在今年晚些时候发布Android 16时,外界还能继续获得更新的源代码。

此外,Google将继续发布Android Linux内核分支的源代码,因为它是根据GPLv2授权的,该授权要求发布源代码,并且与AOSP是分开的。

AOSP之前是基于Apache 2.0许可证发行,尽管Google也表示会继续release源代码,且一再强调这并非闭源,但对于Google将开发转为private的行为,有网友评论说,“如果一个项目依赖于一家公司进行持续开发,那么开源许可证就没有任何意义。”

另外,也有人提到OpenSolaris的悲剧性转折,这是由Sun Microsystems基于Solaris创建的开源操作系统,在2010年甲骨文收购了Sun Microsystems之后,OpenSolaris便停止了自主开发。

当时,OpenSolaris也是宣布“我们将不再实时发布整个Solaris操作系统的源代码”。但从那一刻起,源代码就再也没有公开过。

当年甲骨文的决定彻底冰封了开源生态,而今Android似乎也正沿着相似的轨迹滑行,因此也有网友认为,对于Android来说,最终的目标很可能是仅满足最低限度的开源要求,只发布那些受Copyleft约束、Google不拥有版权的代码,直到这些组件被封闭的替代方案取代。


Google对Android的铁腕统治:封闭是一步步发生的

如今,Android的开发方式正逐渐转向更加私有化,这并非一蹴而就的变化。回望过去,Android的发展历程与最初的开放姿态有着显著的不同。

十八年前,也就是2007年11月,Android开放源代码项目(AOSP)正式发布。就在几个月前,第一代iPhone问世,迅速引起轰动,开启了现代智能手机时代。当时,Google预见到苹果可能在移动领域占据主导地位,而Google自身在该领域尚无立足之地。为了对抗iPhone,Android作为开源项目应运而生。

在AOSP成立之初,Google大力支持开源应用的开发,这些应用与免费的AOSP捆绑在一起。这种策略在当时是合理的,通过为AOSP投入开发精力和资源,Google在随后的几年里成功地大幅提升了基于Android/AOSP设备的市场份额。

Android拥有了庞大的用户基础,也意味着其拥有海量的应用程序。如果一家公司选择分叉Android,那么这个操作系统本身就与数百万个应用程序兼容。该公司只需建立自己的应用商店,并将所有应用上传即可。理论上,几乎在一夜之间,你就能拥有一个拥有大量应用程序的非Google操作系统。

因此,一个成功的替代Android版本,将是对Google主导地位的真正威胁。Google也一直在采取措施防范这种替代品的出现。

Google意识到需要对其公共源代码拥有更多的控制权,毕竟更少的开源代码意味着Google的竞争对手需要做更多的工作。

随着时间的推移,Google将Android功能从AOSP转移到闭源软件包中。例如,Google用自家的闭源版本取代了AOSP版的日历和消息应用,并在此过程中停止了对开源版本的维护。由于Google是这些应用的主要开发者,这一变化实际上扼杀或极大地阻碍了这些应用的开源AOSP版本的开发。


这些举措同时也让更新核心组件变得更加容易,而无需进行完整的操作系统更新。


Android的所有重要且实用的部分早已被迁移到闭源组件中。结果就是,Android变成了一座庞大的“开源”代码库,但缺少了让其真正运行所需的关键部分。AOSP已经成为它过去形态的“空壳”,并且正逐步被进一步掏空。如今,Android正在从“集市”模式转向“教堂”模式(指由开放开发变为封闭开发)。至于Google何时会发布“新版本”的AOSP源代码,谁也说不准。


我希望他们干脆把Android变成闭源,并尽可能地为股东赚钱——毕竟,这才是他们的职责。他们为什么还要免费提供这个系统?他们已经通过宣称开源、建立社区成功占领了市场,现在只需要让它变成专有软件,而旧的开源版本会逐渐衰落、变得不稳定。然后,他们就可以像微软那样,对操作系统收费——但这次是在手机上,对数百万、甚至数十亿台设备收费(显然我并不认同这种做法)。

目前,大多数Android开发都在内部分支中进行,但少数组件(如蓝牙和内核)是在公开分支中开发的。在新系统下,它们将转移到内部分支。

这一变化无疑将使Google团队的开发工作更加轻松,但它可能会限制我们在新版本正式发布之前对Android的了解程度。有时,AOSP中出现的花絮可能会指向即将推出的设备、功能删除或应用程序支持的变化。

我们可能再也无法获得这些见解,因此,在Google推出不受欢迎的更改之前,开发者和用户将没有那么多机会挑战Google。

根据Google的说法,他们做出这一改变是为了简化流程,并借鉴了最近对基于主干的开发所做的改变。

由于Google同时长期维护着两个独立AOSP分支——一个为公共分支,一个是内部分支。任何人都可以查看公共分支,但只有Google自身、Android OEM厂商乃至其他签订了Google移动服务(GMS)许可协议的企业才能访问到内部版本。这两个分支在功能和API支持方面并不同步,这迫使Google不得不在每次发布时都费力地合并分支。Google声称,通过专注于内部分支,它可以简化发布流程,让每个人的工作都更轻松。

AOSP专家Mishaal Rahman指出,AOSP的大部分开发工作都是由Google在内部完成的。就是说哪怕是在此番正式变更之前,更新主体也一直只会出现在内部分支上。第三方可以向公共分支提交代码变更,但Google保留在确定Android新版本并发布源代码之前,拒绝一切此类变更的最终决定权。

总的来说,无论是在今天的新闻发布之前还是之后,以上事实均保持不变。公共AOSP Gerrit仍然可用,第三方提交结果也依旧公开可见。Google也将继续发布最终源代码——只是在开发过程中,该公司将大部分AOSP变更由原本的闭门开发正式定性为不公开进行。


AOSP Gerrit

根据Rahman的解释,这一变化主要是为了帮助Google内部团队提升效率。以往,在公共AOSP分支与单独的内部兴建和管理开发进度,往往会产生大量不必要的开销。

由于AOSP的公共分支往往落后于内部版本,所以在需要将二者的代码进行合并时,Google工程师们经常会遇到合并冲突——不同代码版本间的冲突往往需要耗费额外时间和精力方可解决。

通过将所有活跃开发工作转移至内部分支,Google认为此举可以消除上述冲突并简化其工作流程。值得注意的是,这并不意味着公共AOSP代码仓库会由此消失——Google将继续在公共分支中发布最终源代码,第三方也仍可以通过公共Gerrit提交贡献。总而言之,此番调整只是正式确定了Google工程师在开发周期中该在哪里进行日常编码。


Android开源项目仍然非常活跃

至少从功能角度来看,此举造成的最大问题,就是为AOSP贡献代码的第三方开发者可能将难以跟踪Android即将迎来的变更。这可能会阻碍开发者们的持续贡献热情,因为Google在内部也许正在进行同样的开发与探索。

此前还有报道说,Google近期正在转向Trunk Stable开发流程(即所有人为同一代码版本做贡献,确保Google能够更快、更稳定地构建整个系统),希望借此加快Android的发布速度——特别是打算将今年年内的Android 16时间表尽量提前。

参考链接:

https://www.androidauthority.com/google-android-development-aosp-3538503/

https://news.ycombinator.com/item?id=43485950

https://arstechnica.com/gadgets/2018/07/googles-iron-grip-on-android-controlling-open-source-by-any-means-necessary/

我们在FebBox(https://www.febbox.com/cnbeta) 开通了新的频道,更好阅读体验,更及时更新提醒,欢迎前来阅览和打赏。
查看评论
created by ceallan