關(guān)于鴻蒙,幾個關(guān)鍵問題
這幾年討論最多的就是華為和它的鴻蒙,但是絕大多數(shù)參與討論的人都并沒有計算機(jī)領(lǐng)域的知識,結(jié)果被公知和民粹媒體刷得團(tuán)團(tuán)轉(zhuǎn),我覺得趁這個機(jī)會科普點(diǎn)東西,指出點(diǎn)問題是可以的,也是危險的.
首先表明立場,支持華為,支持鴻蒙,但不支持過分吹捧以及"偷換概念"的海軍營銷.如果將鴻蒙抬到一個不可及的高度,最后傷害的會是整個國內(nèi)安卓市場,以及潛在的對開源精神的二次傷害.如果不想"紅芯"重演,就請一起抵制這些炒作營銷號.當(dāng)然,如果不想在某一段之后繼續(xù)看下去,也可以把我當(dāng)成行走的50W,個人歡迎揭發(fā)檢舉,但不歡迎謠言.
首先要弄清楚的一個東西,是什么是Unix,什么是Linux,什么是安卓.
在操作系統(tǒng)領(lǐng)域,我們?nèi)绻挥懻撟钤绲膯蔚琅幚砗投嗟琅幚硐到y(tǒng),那么現(xiàn)代意義上的第一個廣為人知的操作系統(tǒng),是貝爾實(shí)驗(yàn)室的Unix.這個操作系統(tǒng)的開發(fā)目的是運(yùn)行一款研究員自行編寫的游戲<Space Travel>,這款游戲現(xiàn)在在Steam可以通過輸入代碼的方式下載.Unix之后,C語言被貝爾實(shí)驗(yàn)室開發(fā)出來,一定程度上終結(jié)了匯編語言的統(tǒng)治地位(但匯編語言依舊非常重要),Unix系統(tǒng)也用C語言重寫了一遍.再加上美國國防部開發(fā)的TCP/IP網(wǎng)絡(luò)協(xié)議,這一套計算機(jī)軟件體系(暫且這么叫),被分發(fā)給美國的各大學(xué)作非商業(yè)用途.而Unix是閉源系統(tǒng),并且大多與計算機(jī)硬件掛鉤(這意味著你的電腦換個牌子,可能裝的就不是上一個電腦用的系統(tǒng)了),這使得Unix的普及變得困難.
Unix雖然是閉源的,但有很多的"分支",這些分支由不同組織和個人開發(fā).有一些是授權(quán)二次開發(fā),有一些是另起爐灶.其中就有現(xiàn)在的幾種主流開源操作系統(tǒng)家族,比如FreeBSD,比如Linux.
Linux是林納斯出于個人愛好編寫的,隨后他公開了Linux源代碼,邀請其他人一同完善,正是由于這個決定,Linux系操作系統(tǒng)的基礎(chǔ)-Linux才變得越來越好.事實(shí)上Linux現(xiàn)在的核心代碼,只有大約2%是由林納斯編寫,他目前的工作也主要是對提交的代碼進(jìn)行裁定.由于代碼開源,所以任何人都可以將代碼下載下來進(jìn)行修改,為自己定制一套系統(tǒng),并且在不侵犯開源協(xié)議的前提下發(fā)布改造過的系統(tǒng).
接下來要討論的是Linux使用的GPL協(xié)議,其所屬的"自由軟件"概念,與"開源"有很大不同.這也是大家聲討或維護(hù)華為時造成誤解的根本.實(shí)際上,如果你對GOG的反DRM有所了解,那么你會對以下的內(nèi)容感到熟悉.
自由軟件聯(lián)盟規(guī)定了自由軟件的四項(xiàng)基本自由(下面的討論中軟件和程序是等價的):
? ? 自由度0:無論用戶出于何種目的,必須可以按照用戶意愿,自由地運(yùn)行軟件
? ? 自由度1:用戶可以自由地學(xué)習(xí)并修改該軟件,[作為前提,用戶必須可以訪問到該軟件的源代碼](訪問源代碼≠開源)
? ? 自由度2,3:用戶可以自由地分發(fā)該軟件及該軟件修改后的拷貝
在后續(xù)的闡述中,自由軟件組織有進(jìn)一步說明.
若甲程序運(yùn)行的時候必須使用到乙程序,那么只有在甲乙都是自由程序時,甲程序才是自由的(但即使乙不是自由的,甲依然可以開放源代碼供修改).如果修改甲程序成丙程序,丙程序不再依賴乙程序,那么丙程序就不必在意乙是否是自由的,只需做到自己符合原則即可.
自由軟件必須可以商用,可以商業(yè)開發(fā),可以商業(yè)發(fā)布.但在自由方面對用戶加以限制,或要求付費(fèi)才能實(shí)踐這些自由和不賦予自由并無二致.但出售和購買自由軟件本身確是自由的.
更多相關(guān)解釋,可以查看: http://www.gnu.org/philosophy/free-sw.html
這里是GPLv3協(xié)議的一個簡要說明: http://www.gnu.org/licenses/quick-guide-gplv3.html
和一個詳細(xì)使用說明: http://www.gnu.org/licenses/gpl-howto.html
這里是時候引入開源了.在此之前,我們要先說,我們所使用的軟件到底是什么.實(shí)際上,軟件是由"源代碼",經(jīng)過"編譯"而得以形成的."源代碼"是程序員編寫的,在程序員邏輯上能看懂的部分(所以說寫代碼用的是"語言").而計算機(jī)運(yùn)行程序/軟件,相當(dāng)于用它自己的語言去給你展現(xiàn)一些東西,如果給它看程序員能看懂的"代碼",它是無法理解的.所謂"編譯",就是將程序員所用的語言,翻譯成計算機(jī)能看懂的語言的過程.理論上,如果一門計算機(jī)語言對編譯器的規(guī)定足夠靠譜(沒錯,一個計算機(jī)語言可以被很多種編譯器翻譯,就跟一個人可以配好多英文同聲傳譯一樣),用相同的源代碼,就能編譯出同樣的軟件.
這么說,開源和閉源其實(shí)是一樣的嗎?畢竟如果是"翻譯"成計算機(jī)語言的文件,那不是也可以進(jìn)行"反翻譯"嗎?實(shí)際上,編譯后形成的文件很難被破解,這不僅是理解問題.很多編譯器還會在編譯時,對文件進(jìn)行"加密","加密"后的文件,計算機(jī)依然看得懂,但是反著翻譯過來就會變成非常雜亂的一堆文字,人是看不懂的.還有一點(diǎn),就是就算能夠"反編譯"出源代碼,在使用上也會由于"協(xié)議"而受到代碼原作者的制裁.
首先,與開源相對應(yīng)的是閉源,我們現(xiàn)在所用到的大多數(shù)軟件都是閉源的,它的特點(diǎn)就是用戶無法接觸到軟件的代碼.這對于軟件開發(fā)者來說,能夠保護(hù)他們的知識產(chǎn)權(quán),也能夠使他們"掌握核心科技".
而開源,就是開放源代碼,并允許任何人自由使用,二次修改,和基于這些代碼制作自己的軟件.開源對于"自由"的解釋,是根據(jù)源代碼(即作者)所使用開源協(xié)議相關(guān)的.有的協(xié)議規(guī)定,使用開源代碼制作的程序也必須開源;有些則說,可以將二次開發(fā)的軟件閉源,但是所引用的開源代碼必須標(biāo)明版權(quán);甚至還有一些協(xié)議規(guī)定,代碼可以隨便用,不注明作者也沒關(guān)系.對于接下來要討論的GPL協(xié)議,如果你從原作者那里購買了源代碼,那么將它出售也沒有關(guān)系.
實(shí)際上自由軟件聯(lián)盟是不贊同開源運(yùn)動的.雖然自由軟件中包含對于開源的要求,但是開源并不是從"自由"的角度,而是從"軟件質(zhì)量"的角度出發(fā).雖然我們經(jīng)常說,如果一個軟件要閉源,那么它的最后一個開源版本會被自由復(fù)制,并最終誕生它的一個開源版本(想想PostgreSQL).但這是"自由軟件"的體現(xiàn).實(shí)際上,Linux開放了自己的很多接口,用于其他軟件/操作系統(tǒng)的編寫,這種做法主動提供了屏蔽GPL協(xié)議的方式,并最終誕生了安卓系統(tǒng),也造成了安卓與自由軟件聯(lián)盟兩方支持者長久的口水戰(zhàn).(安卓系統(tǒng)避開了GPL的傳染性,使得硬件廠商可以放心為之開發(fā)驅(qū)動而不必?fù)?dān)心暴露硬件參數(shù),但安卓系統(tǒng)本身是封閉的,用戶無法對其進(jìn)行自由修改和二次分發(fā),這在后來的"刷機(jī)"中尤為明顯)我們可以說安卓對于Linux底層的引用符合GPL許可證,但安卓絕對不是自由軟件/操作系統(tǒng).
部分內(nèi)容引自這篇文章: http://www.gnu.org/philosophy/open-source-misses-the-point.html
和這篇文章: https://linux.cn/article-8691-1.html
# 從這里開始,涉及到華為,請隨時準(zhǔn)備領(lǐng) 50W #
然后我們說說AOSP(Android Open-Source Project 安卓源代碼開放項(xiàng)目).
安卓系統(tǒng)之所以擁有如此多的變種,就仰賴于AOSP,它是一個開源項(xiàng)目,但并不是自由軟件項(xiàng)目.基于AOSP開發(fā)的操作系統(tǒng),并不是"安卓套殼",而只是"跟安卓像,跟其他安卓系統(tǒng)共用一套生態(tài)".但 powered by Android 是對于AOSP的基本尊重,因?yàn)槿绻闶褂昧薃OSP當(dāng)中的部分關(guān)鍵成分(如Android運(yùn)行環(huán)境),那么這個系統(tǒng)"在實(shí)際上"就是基于安卓開發(fā)的(powered by),雖然名份上依然是AOSP.華為大大方方承認(rèn)自己基于AOSP開發(fā),但是在使用了安卓的運(yùn)行環(huán)境后沒有顯示powered by android,屬于掩耳盜鈴.其實(shí)小米等企業(yè)的操作系統(tǒng),如果按華為的說法,也可以說是自研,因?yàn)槎际腔贏OSP,只是他們都很識趣地寫了"powered by".至少在目前階段,華為還未"掏空安卓"時,他們這么做是"合法不合理"的.
至于"西方卡脖子"說,看了前面關(guān)于"開源"的描述就明白了,即使谷歌突然宣布安卓完全閉源,AOSP終止,也不存在"卡脖子"問題,國內(nèi)手機(jī)廠,乃至世界手機(jī)廠都可以基于閉源前的最后一個開源版本繼續(xù)開發(fā).頂多無法繼續(xù)獲得后續(xù)谷歌公司開發(fā)的技術(shù).就算是現(xiàn)在所說的"GMS(谷歌服務(wù))對于AOSP"的侵蝕,國內(nèi)也早有解決方案.以"鴻蒙"去攻擊其他國產(chǎn)安卓系統(tǒng),說他們"不愛國","技術(shù)不行","被卡脖子",是非常反智的表現(xiàn).
關(guān)于華為"自研內(nèi)核",目前實(shí)際上是沒做到的,屬于虛假宣傳,它只存在于未來,我也相信未來它會做到自研,但以未來去奪現(xiàn)在的輿論,有些不太合適.它現(xiàn)在還是基于AOSP,用的是安卓生態(tài).如果它真的是自研,就應(yīng)該像Linux上的Wine一樣,搭建安卓虛擬機(jī)來運(yùn)行安卓軟件,但這會帶來很大的性能問題.
關(guān)于"微內(nèi)核"和萬物互聯(lián),實(shí)際在宣傳上與其本身定義有誤,這不能說是華為造成的,他說了實(shí)話,但沒辟謠,也沒有辟謠的義務(wù).微內(nèi)核是一種設(shè)計方式,它將內(nèi)核集成的系統(tǒng)服務(wù)層分離出來,變成根據(jù)需要加入的選件,這可以提升擴(kuò)展性.在升級系統(tǒng)時,只需要用新模塊代替舊模塊,不需改變整個操作系統(tǒng).微內(nèi)核不是"小內(nèi)核",但確實(shí)可以設(shè)計在小的組件上.微內(nèi)核用現(xiàn)有的Linux分支系統(tǒng)就可以實(shí)現(xiàn),實(shí)際上現(xiàn)在的物聯(lián)網(wǎng),就是各種基于Linux的操作系統(tǒng),用同一套協(xié)議在網(wǎng)絡(luò)進(jìn)行信息交換而實(shí)現(xiàn)的.現(xiàn)在的一些手機(jī)可以操控空調(diào),其實(shí)就是物聯(lián)網(wǎng)的應(yīng)用.萬物互聯(lián)需要的是統(tǒng)一的協(xié)議,并不需要統(tǒng)一的鴻蒙系統(tǒng),或者說就算用了統(tǒng)一的系統(tǒng),如果各用各的協(xié)議,也無法達(dá)成互聯(lián).這方面華為在盡力,但是外界如此將"微內(nèi)核","底層細(xì)節(jié)"這些概念與"萬物互聯(lián)"綁定,是在造謠,偷換概念.所謂"安卓是宏內(nèi)核,無法萬物互聯(lián)"也是不存在的,事實(shí)是我見過很多微系統(tǒng)都在使用安卓系(也就是AOSP).
對于開源代碼貢獻(xiàn)率的問題,實(shí)際上是有差別認(rèn)知的.現(xiàn)在的Linux,其創(chuàng)作者林納斯貢獻(xiàn)的代碼只有2%左右,但這依然是"林納斯和Linux社區(qū)共同"開發(fā)的系統(tǒng).提交占比高不能占用所屬權(quán).
至于最后的,最讓我有 50W 嫌疑的,就是我對鴻蒙"國產(chǎn)操作系統(tǒng)之光"的嚴(yán)重厭惡.
國內(nèi)的優(yōu)秀操作系統(tǒng)有很多,有些甚至得到了世界的認(rèn)可,它們的開發(fā)都是持續(xù)了幾年,十幾年的.其中最有名的是Linux Deepin/UOS,Ubuntu Kylin(優(yōu)麒麟),NeoKylin(中標(biāo)麒麟,國內(nèi)保密要求高的企業(yè)和部分廣泛使用).這些系統(tǒng)有的嘗試萬物互聯(lián),有的優(yōu)化PC體驗(yàn),有的可以替代安卓,但它們都明確說明了自己從哪來,而且就算美方制裁"卡脖子",它們也能迅速發(fā)揮作用.有些系統(tǒng)已經(jīng)達(dá)成了"替代Windows"的能力(指的是操作感,單純替代Windows現(xiàn)在Wine就能部分實(shí)現(xiàn)).
華為所謂"不花錢的水軍"如此宣傳一個"站在巨人肩膀卻說自己沒站"的操作系統(tǒng),是對國內(nèi)開源者信心的重大打擊.如果華為方不加干預(yù),未來只會出現(xiàn)更多的"鴻蒙"行為,它們可能是像鴻蒙一樣宏自研,也有可能是像"中芯"一樣,套個皮打口水戰(zhàn).
況且,華為的虛假宣傳不是一天兩天,從最開始被詬病的"PPT系統(tǒng)",它就在利用自己當(dāng)前營造的民粹氛圍,漫天撒謊,偷換概念,打壓友商,為自己牟利.我對華為的研發(fā)能力充滿信心,但對那些"沒收錢的水軍"帶來的民粹和反智,以及華為方并未下場辟謠充滿失望.
好了,行走的 50W 自暴了,你們可以開搞了.
本文若順利,則首發(fā)于烏有之鄉(xiāng),否則知乎,否則bilibili.