安卓到底是不是100%开源?
首先回答你的几个疑问。不过鉴于你是文科生,能看懂多少是多少,如果看不懂还质疑那就是你对。正如同我是工科生,你打的那么多复杂的比方我也看不太懂一个道理。
首先。Android是一个品牌商标,所谓的“Android系统”它是指对一类基于AOSP、参与Android生态的操作系统的综合概括,不是特指某一个系统,Android所依托的AOSP是100%完全开源的。而且通过今天的Project Treble技术,纯AOSP所实现的系统(即”原生Android“也即狭义的”GSI“)是完全可以直接运行的,是能完整地参与Android生态的。但是Android系统这个大家庭可就未必了,因为有些制造商会在系统里加一些专利代码或者专利组件去实现和其他品牌差异化竞争,这就是AOSP开源开放的体现。而你说的“安卓”那种能打电话的广告机上面跑的系统就更不开源了,至少相当一部分组件都不开源,再锁死个ABL,这关乎那些广告机制造商的利益和见不得人的勾当的实现,可悲的是“安卓”几乎和开源没关系了。
AOSP是以GPLv2和Apache开源的项目:ACK是以继承自GNU/Linux的GPLv2许可开源的Linux发行版,属于保障了终端用户的自由的自由软件。Android Platform部分是Apache,属于保障了开发者、供应商、社区、AOSP所实现的软件的直接用户自由的绝对自由的软件。至于它所衍生出来的软件是否自由,这就不关AOSP的事情了。也是完全没办法的事情,Apache和BSD这些软件许可证只注重当下的绝对自由,而这种绝对自由是放弃对下游分支的控制权换来的。
戏说不是胡说,开源不是乱开。一个成熟稳定的开源项目有一个maintainers这样一个主导者的角色是非常重要的。Google就是在担任这样一个角色,最终拍板。
Google是AOSP的最大决策者,AOSP的进化方向无疑主要是几个因素决定的:来自社区、合作伙伴、Android Feedback等渠道等声音和与同类竞品(如iOS等移动操作系统)竞争带来的进化,以及……Google一拍脑袋。
曾经AOSP也像GNU/Linux那样Contributors的影响力是非常大的,这种模式无疑是将一个不到20岁的操作系统完善到今天这个样子的重要原因,但是现在Android已经非常完善了,过于分散的开发者社区让AOSP的易维护性、兼容性和统一性方面都面临着巨大的压力,给AOSP的开发迭代带来的难度逐渐会越来越高于收益。于是Android转入了FreeBSD那种维护模式,即Google成为了绝对主要的开发者。今天的Android和FreeBSD的模式是非常相似的。的区别在于Google可以通过商业化手段间接对Android制造商进行控制。正是这种控制才保住了Android生态的统一并实现了各环节参与者的利益最大化。
虽然这种控制对于不制造手机的开源ROM社区是几乎没有影响的,但是开源社区始终有一个默契就是不去破坏AOSP生态,正如闻一多所说的“戴着镣铐跳舞”。
至于你说能不能脱离Google自己去搞更新,当然能。当然能脱离Google自己去升级。早在当年,众多制造商基于Android平台开始定制自己的ROM,如MIUI、FunTouch、EMUI这些。他们和Android平台存在一种弱关联的关系,这些UI版本可以脱离Android平台而单独升级,结果就是同一个UI版本底层可以是万年不变的ICS或者KK或者JB。然后大家就开始骂“光会刷UI版本号和build号,不升级底层”。这里的底层就是在指Android平台。
你说的“自己去弄系统级别的更新”,那种能不能fork一下另立门户,我也说”当然能“。当年YunOS闹剧不就是如此吗?但是其一,Google绝不会答应,会通过商业手段间接制裁制造商;其二,想要割山头当大王纯属吃力又欠骂那种货色。如果这么搞,Android和GMS二选一,当还是立,你只能选一个,不能都选。
当年大家可能都想着怎么批评YunOS不遵守Apache License啦、抄袭之类的啦。但是实际上,要我说YunOS最恶心的地方是既想傍Android生态,又想割地称王去破坏Android生态的统一。尊不遵守Apache License反倒是一个道德性的问题,普通用户甚至有可能完全不知道还有License这种玩意儿。这就是一个潘多拉魔盒,今天有云OS,明天就有腾OS,后天就有宏OS、祎OS、军OS和嘴OS(当然,嘴OS今天已经有了),到时候整个Android分崩离析最大的受害者就是开发者和Android用户。最后会逐渐发展到四分五裂,不再相互兼容。大家又回到了那个群雄割据的动荡年代,想要稳定好用统一的软件生态就只能花更多钱买iPhone。所幸Google祭出GMS警告宏碁这些制造商掐灭了这个苗头。我至今仍不理解阿里这种苟且的勾当的出发点是什么,“自主研发”?“可控”?确实可控,云端命令删用户数据实属难绷。
从Google到供应商,再到制造商,最后到周边服务供应商和最终用户,大家各个环节都在从AOSP这个伟大的商用友好型的开源项目中受益,至少我觉得我们应该想办法去治理、去积极参与、去利用AOSP和Android生态来从中获益,而不是去分裂Android、破坏Android。难道温良的中国人的骨子还有这种吃饭砸锅和分裂主义的思想吗?有大蛋糕大家分着吃,而不是你分完蛋糕还要在大蛋糕里拉坨大的去恶心大家。
Android之所以能成为今天世界第一大移动操作系统,它的魅力就在于此,通过Google控制的AOSP拥有了凝聚力,但是却依然开放包并万象。碎片化既是Android的魅力也是Android所面临的挑战。Google也通过CTS、GMS这套Google私有的商业软件,甚至是Android SDK去给制造商画红线,制造Android统一生态的护城河,防止他们通过Fork AOSP另立门户恶意破坏Android生态。今天的Android生态统一,最终产品的演绎形式和GUI设计语言等等却百花齐放,大家都能找到适合自己的、性价比高的手机。这就是形散而神不散,一种被Google均衡后的碎片化。
Google不作恶。 你信吗?我是不信。但这无妨AOSP是二十一世纪以来最伟大的开源项目之一,它渗透到了我们日常生活的边边角角。每个人每一环节都在从AOSP项目中获益。Google之所以能让AOSP保持自由,让Android保持兼容包并,让Android生态广泛地开放,不是它不作恶,而是它的财路也是建立在Android生态之上的,它也需要AOSP,需要Android制造商积极参与带来的市场份额。Google卖GMS、Android商标(这里就是打个比方,指兼容性认证和制造商合作伙伴关系方面的直接收益,实际上Android商标使用权、Co-branding和GMS套件都是你交完钱,设备也符合技术规范之后白送的)赚不了几个子儿,Google对Android的商业化主要是靠GMS所带来的流量入口赚钱。
以下的内容不是对你的问题的回答,权当我跑题胡言乱语吧,不用看也行。
AOSP就是AOSP,GMS不是AOSP的一部分,它只是运行在Android Platform上的,Android离了它照样能用。GMS只是作为Android商业化模式的一种提供给制造商的可选项,也是Google能够勒住制造商脖子防止制造商吃饭砸锅的唯一手段。鉴于Google生态是当今互联网的基础,GMS提供了一种放之三海(还有一海完全不允许用Google)而皆准的生态的入口,如果你是做工控啊、物联啊还是那些特种设备啊,这些个不需要参与GMS的完全可以跳过GMS去直接用AOSP。
GMS勒制造商脖子还真有这么一回事。大家所说的嘴OS被Google卡脖子了说的就是嘴OS的开发商本来想走云OS那条道靠“混血嘴OS”蹭着Android生态吃饭砸锅去破坏Android生态的统一那条道,结果Google也像当年对付宏碁那些制造商那样直接掐了GMS,再后来就有了“纯血嘴OS”和表情UI的Android环境至今停留在Android 12的故事了——因为Android 12是最后一个可以剜门盗洞想方设法在用户空间内直接装盗版GMS套件而不用解锁ABL的系统了。说白了嘴OS还想既傍着GMS生态,又不想离开Android生态,又想另立炉灶。天下哪有那么好的事情,嘴OS现在的玩法不是长久之计,迟早得面临Google淘汰老版本Android平台和老版本GMS客户端的那一天所带来的困境和抉择。
驱动就更不是Android的一部分了,它是硬件供应商的东西,Android所做的只是使用HAL保护了它们。护了它们也就保护了竞争。因为这些驱动涉及到供应商的技术细节和商业机密。AOSP这个商用友好型的平台确实促成了技术的长足进步,而且供应商的竞争最终传导到末端进而也保护了终端消费者的权益。
纯AOSP的实现叫做GSI。Google做了一个里程碑式的东西,叫做Project Treble和Project Mainline。它可以最终产品中把驱动和一些GMS附加的功能、Android平台未来要导入的试验性功能从Android剥离出去。后者可以让这些功能获得持续且持久的更新和完善,而前者是将驱动程序从AOSP中完全剥离去处,使最终AOSP所实现的Android系统(包括其他无驱动的系统映像)可以在符合Vendor兼容性技术指标的正常运行。这都是在尽量去降低Android碎片化所作出的实质性的努力。
所以我不知道还有人纠结驱动干什么?供应商菜就勤换换。为什么英伟达神盾和Tensor平台的Pixel这些垂直整合的产品机器软件维护周期这么长你们心里没数吗?从Project Treble诞生那一刻起,但凡制造商给你提供Android平台更新和安全更新周期远远短于Pixel的,那就不是AOSP的问题,那就纯纯的是制造商报废计划和供应商的问题。
开源更多的是一种标准,而硬件(包括硬件所配套的固件和驱动程序)的实现并且推动标准和技术的发展则往往是由商业驱动的——这是对GNU/Linux这类GPL软件最高的赞扬,也是我觉得Linux驱动机制的所存在的现实的弊端。它确实可以保障Linux的安全,但却无形强制把商业化的供应商产品抽象成标准。Linux最大的问题是在无形之中破坏这份竞争。
驱动开源真那么好,现在大行其道的应该是Ubuntu Touch和Linux+Plasma Mobile,而不是Android。如果都在付出,那么谁来为这份成本去买单呢?
如果有人要是拿最终市场生态去说什么Android离了GMS玩不转,Google不给GMS就是开源不彻底,那就是你的偏颇。
如果要是拿那些国内闭源能打电话的广告机里的闭源系统说AOSP不开源了,那就是你在偷换概念。
每一个(除了雇外包写出来的刷KPI恶心下游的那些技术垃圾之外的)开源项目都是伟大的,而能想方设法让各个环节都从中受益的开源项目是更伟大的。