關於鴻蒙,幾個關鍵問題(轉載自我自己的知乎號)_風聞
飞虎233-2021-07-10 17:30
在開頭先感謝觀察者網的編輯,不僅把我的一些評論精選為新文章,還親切地提醒我可以在我的文章處對已有文章進行修改。
本人只是計算機科學與技術的準畢業生(課業全部結束,只剩畢業設計),來説華為完全是一腔熱血上湧。我從華為閃存門開始關注華為這家企業,若即若離地經歷了251,鴻蒙開發者大會等事件,對華為有好感也有惡感。今年上半年,由於決心提升學分,我脱離了很久主流平台(觀察者網,烏有之鄉,知乎,B站只看vtb和編程課)我本不知道鴻蒙OS,在大概課業的第10周後,由於12周課基本結課,16周課僅有一門,於是終於有了空閒,回到知乎發現鴻蒙OS竟已發佈。
鴻蒙OS發佈後,我從關注回答,到搜索相關名詞與技術,中間經過了很多挫折,也嚴重意識到自己在學業上的不足(就這還考研那?我直接把今年的考研計劃推到明年了,真幹不了)。我雖然對華為部分舉措感到反感(昨天和今天特別魔怔),但搜索的材料越多,對這個企業的信心也越強。
華為在很早以前就在研發通信技術,在硬件和軟件的設計上都有突破。大家現在看到的openHarmony框架,就是華為於2014年發佈的LiteOS的開源框架版(開源框架與開源項目不同,項目經過編譯可以直接使用,框架需要自己添一些東西)。7年來,華為一直在為這個系統注入新的技術,適配更多的硬件(關於之前錘他用FreeBSD,那個我後來看了一下一個英文開發者給華為開發者社區發的郵件,其實完全不是“基於”這個概念,我對“證據”圖片先入為主了)和兼容其他操作系統。如果去了解華為在今天的節奏之前20年所做出的貢獻,你會發現這家公司的偉大之處。
但是今天偉大,明天必然也偉大,不代表現在有問題就不能指出。華為官方在宣傳方面很令人擔心,也許是宣傳部門的問題,也有可能就如我所説,是“二次宣傳”,也就是華為官方未授權,只為了蹭熱度帶自己知名度的偽“海軍”帶的節奏。把將要發射的衞星(官方口徑)當成已經上天(民間口徑),把已經承認的“基於”(官方口徑)硬説成“自研”,把ABCD當作一體,用A去為B擋槍,拿C為D辯護,又用D去攻擊質疑B的,這樣下去不會有良好的討論環境,只會一團亂麻。
大家應該都有感覺,2017以後,民眾的話語權逐步增強,公知節節敗退,愛國主義成為了主流。但是正如公知也有真愛國者,愛國主義中也會混雜假愛國派,也即只用愛國主義恰爛錢恰熱度,卻未必真正愛國的人(甚至會有原自由派公知)。我們作為人民羣眾,不光要把親美自由派公知打倒,也要反過頭來對自己內部進行清理,免得假愛國者重新奪取話語權。
愛國的本質是什麼?已經定性:“愛國主義的本質就是堅持愛國和愛黨、愛社會主義高度統一。”而社會主義,教員活的靈魂,改開思想的核心,正是“實事求是”。所以我一直呼籲大家不要扣帽子(但我已經出現一次扣帽子行為了,氣頭上真是啥都敢幹),講事實而不是講立場,講道理而不是虛空領50W。
本着敢作敢當的原則,有誤內容不會刪除,而是作增補,並對原內容以刪除線標籤為提醒(不知道觀網的富文本編輯器支不支持**[del]刪除標籤[/del]**,這裏先試試,就算沒有起效,見到[del][/del]包起來的塊知道是刪除掉的就行。現在是在實訓基地,等回去以後還會再改第二遍,之後如果有更新的資料,會改第三遍,第四遍,直到整篇沒有錯誤為止。
沒法私信觀察者網的編輯,估計我這個文章還會被光臨,所以在這説了,可以在未來版本加一下下面這種分割線的快捷方式嗎?分頁符不能解決大分段問題,沒有大段落分割符,我這種破碎的發言只會把人繞暈(
--------------------------------------------------------------------------------------------
這幾年討論最多的就是華為和它的鴻蒙,但是絕大多數參與討論的人都並沒有計算機領域的知識,結果被公知和民粹媒體刷得團團轉,我覺得趁這個機會科普點東西,指出點問題是可以的,也是危險的.
首先表明立場,**支持華為,支持鴻蒙,但不支持過分吹捧以及"偷換概念"的海軍營銷.**如果將鴻蒙抬到一個不可及的高度,最後傷害的會是整個國內安卓市場,以及潛在的對開源精神的二次傷害.如果不想"紅芯"重演,就請一起抵制這些炒作營銷號.當然,如果不想在某一段之後繼續看下去,也可以把我當成行走的50W,個人歡迎揭發檢舉,但不歡迎謠言.
首先要弄清楚的一個東西,是什麼是Unix,什麼是Linux,什麼是安卓.
在操作系統領域,我們如果不討論最早的單道批處理和多道批處理系統,那麼現代意義上的第一個廣為人知的操作系統,是貝爾實驗室的Unix.這個操作系統的開發目的是運行一款研究員自行編寫的遊戲<Space Travel>,這款遊戲現在在Steam可以通過輸入代碼的方式下載.Unix之後,C語言被貝爾實驗室開發出來,一定程度上終結了彙編語言的統治地位(但彙編語言依舊非常重要),Unix系統也用C語言重寫了一遍.再加上美國國防部開發的TCP/IP網絡協議,這一套計算機軟件體系(暫且這麼叫),被分發給美國的各大學作非商業用途.而Unix是閉源系統,並且大多與計算機硬件掛鈎(這意味着你的電腦換個牌子,可能裝的就不是上一個電腦用的系統了),這使得Unix的普及變得困難.
Unix雖然是閉源的,但有很多的"分支",這些分支由不同組織和個人開發.有一些是授權二次開發,有一些是另起爐灶.其中就有現在的幾種主流開源操作系統家族,比如FreeBSD,[del]比如Linux[/del].(刪除原因見下行)
del原因:知乎評論區指出,由於Unix收費使用,荷蘭有人寫出了不適用at&t代碼的posix兼容的mimix,林納斯認為minix不實用(因為minix更多用於教學),就在minix的基礎上做了linux。至於有人説這是林納斯寫的玩具,這就很難説。
Linux是林納斯出於個人愛好編寫的,隨後他公開了Linux源代碼,邀請其他人一同完善,正是由於這個決定,Linux系操作系統的基礎-Linux才變得越來越好.事實上Linux現在的核心代碼,只有大約2%是由林納斯編寫,他目前的工作也主要是對提交的代碼進行裁定.由於代碼開源,所以任何人都可以將代碼下載下來進行修改,為自己定製一套系統,並且在不侵犯開源協議的前提下發布改造過的系統.
接下來要討論的是Linux使用的GPL協議,其所屬的"自由軟件"概念,與"開源"有很大不同.這也是大家聲討或維護華為時造成誤解的根本.實際上,如果你對GOG的反DRM有所瞭解,那麼你會對以下的內容感到熟悉.
自由軟件聯盟規定了自由軟件的四項基本自由(下面的討論中軟件和程序是等價的):
自由度0:無論用户出於何種目的,必須可以按照用户意願,自由地運行軟件
自由度1:用户可以自由地學習並修改該軟件,[作為前提,用户必須可以訪問到該軟件的源代碼](訪問源代碼≠開源)
自由度2,3:用户可以自由地分發該軟件及該軟件修改後的拷貝
在後續的闡述中,自由軟件組織有進一步説明.
若甲程序運行的時候必須使用到乙程序,那麼只有在甲乙都是自由程序時,甲程序才是自由的(但即使乙不是自由的,甲依然可以開放源代碼供修改).如果修改甲程序成丙程序,丙程序不再依賴乙程序,那麼丙程序就不必在意乙是否是自由的,只需做到自己符合原則即可.
自由軟件必須可以商用,可以商業開發,可以商業發佈.但在自由方面對用户加以限制,或要求付費才能實踐這些自由和不賦予自由並無二致.但出售和購買自由軟件本身確是自由的.
更多相關解釋,可以查看: What is free software?
這裏是GPLv3協議的一個簡要説明: A Quick Guide to GPLv3
和一個詳細使用説明: How to use GNU licenses for your own software
這裏是時候引入開源了.在此之前,我們要先説,我們所使用的軟件到底是什麼.實際上,軟件是由"源代碼",經過"編譯"而得以形成的.“源代碼"是程序員編寫的,在程序員邏輯上能看懂的部分(所以説寫代碼用的是"語言”).而計算機運行程序/軟件,相當於用它自己的語言去給你展現一些東西,如果給它看程序員能看懂的"代碼",它是無法理解的.所謂"編譯",就是將程序員所用的語言,翻譯成計算機能看懂的語言的過程.理論上,如果一門計算機語言對編譯器的規定足夠靠譜(沒錯,一個計算機語言可以被很多種編譯器翻譯,就跟一個人可以配好多英文同聲傳譯一樣),用相同的源代碼,就能編譯出同樣的軟件.
這麼説,開源和閉源其實是一樣的嗎?畢竟如果是"翻譯"成計算機語言的文件,那不是也可以進行"反翻譯"嗎?實際上,編譯後形成的文件很難被破解,這不僅是理解問題.很多編譯器還會在編譯時,對文件進行"加密",“加密"後的文件,計算機依然看得懂,但是反着翻譯過來就會變成非常雜亂的一堆文字,人是看不懂的.還有一點,就是就算能夠"反編譯"出源代碼,在使用上也會由於"版權"而受到代碼原作者的制裁.
首先,與開源相對應的是閉源,我們現在所用到的大多數軟件都是閉源的,它的特點就是用户無法接觸到軟件的代碼.這對於軟件開發者來説,能夠保護他們的知識產權,也能夠使他們"掌握核心科技”.
而開源,就是開放源代碼,並允許任何人自由使用,二次修改,和基於這些代碼製作自己的軟件.開源對於"自由"的解釋,是根據源代碼(即作者)所使用開源協議相關的.有的協議規定,使用開源代碼製作的程序也必須開源;有些則説,可以將二次開發的軟件閉源,但是所引用的開源代碼必須標明版權;甚至還有一些協議規定,代碼可以隨便用,不註明作者也沒關係.對於接下來要討論的GPL協議,如果你從原作者那裏購買了源代碼,那麼將它出售也沒有關係.
實際上自由軟件聯盟是不贊同開源運動的.雖然自由軟件中包含對於開源的要求,但是開源並不是從"自由"的角度,而是從"軟件質量"的角度出發.雖然我們經常説,如果一個軟件要閉源,那麼它的最後一個開源版本會被自由複製,並最終誕生它的一個開源版本(想想PostgreSQL).但這是"自由軟件"的體現.實際上,Linux開放了自己的很多接口,用於其他軟件/操作系統的編寫,這種做法主動提供了屏蔽GPL協議的方式,並最終誕生了安卓系統,也造成了安卓與自由軟件聯盟兩方支持者長久的口水戰.(安卓系統避開了GPL的傳染性,使得硬件廠商可以放心為之開發驅動而不必擔心暴露硬件參數,但安卓系統本身是封閉的,用户無法對其進行自由修改和二次分發,這在後來的"刷機"中尤為明顯)我們可以説安卓對於Linux底層的引用符合GPL許可證,但安卓絕對不是自由軟件/操作系統.
部分內容引自這篇文章: Why Open Source Misses the Point of Free Software
和這篇文章: Android ,在爭議中逃離 Linux 內核的 GPL 約束
# 從這裏開始,涉及到華為,請隨時準備領 50W #
然後我們説説AOSP(Android Open-Source Project 安卓源代碼開放項目).
[del]安卓系統之所以擁有如此多的變種,就仰賴於AOSP,它是一個開源項目,但並不是自由軟件項目.基於AOSP開發的操作系統,並不是"安卓套殼",而只是"跟安卓像,跟其他安卓系統共用一套生態".但 powered by Android 是對於AOSP的基本尊重,因為如果你使用了AOSP當中的部分關鍵成分(如Android運行環境),那麼這個系統"在實際上"就是基於安卓開發的(powered by),雖然名份上依然是AOSP.華為大大方方承認自己基於AOSP開發,但是在使用了安卓的運行環境後沒有顯示powered by android,屬於掩耳盜鈴.其實小米等企業的操作系統,如果按華為的説法,也可以説是自研,因為都是基於AOSP,只是他們都很識趣地寫了"powered by".至少在目前階段,華為還未"掏空安卓"時,他們這麼做是"合法不合理"的.[/del](修改版見下一行,用兩個--段括起來的部分)
--------------------------------------------------------------------------------------------
安卓系統之所以擁有如此多的“變種”,就仰賴於AOSP,它是一個開源項目,但並不是自由軟件項目。基於AOSP開發的操作系統,並不是“套殼”,而只是“相像”,他們共用同一套生態,享受同一套框架所帶來的便利(包括不需考慮硬件適配等)。基於AOSP的操作系統都可以説自己是自研的,但當時做系統的人並沒有這種自信稱自己是自研,除了國內對於“自主”的標準比較高外,他們也可能認為自己只是封裝了UI,或者最開始確實也只是封裝了UI,算不上什麼大的功績,所以起名諸如MIUI,EMUI。但是隨着開發能力的增強,我認為現在大多數國內AOSP操作系統都能達到大家所説的“自研”標準。
至於大家都在討論的powered by android(簡稱pba吧,太難打了),這是“谷歌移動服務協議”中提出的要求,谷歌針對pba標語提出了專門規定,新智能手機若要使用Google Play應用商店,就必須呈現這個標語。也就是説,pba是針對要接入GMS體系的手機做出的規定,若不打算接入,可以不使用。國內的一眾手機系統之所以有pba,是為了照顧海外用户,因為在海外,接入GMS服務體系是最佳選擇。在國內因為用不了GMS服務,所以各家自造服務體系,導致國內系統的各種混亂情況,這是在知乎被無數次提過的。HMS的推出是一個信號,華為把服務體系這件事放到了明面上去説,去引發大家討論,那麼未來中國就有可能進行行業聯合,共同推出統一的服務體系,造福國內手機廠商。如果我們繞過GMS單獨提供服務的軟件,能在國外逐漸得到認可並佔有大多數人的手機中的大多數應用(其實很多國產遊戲就是繞過GMS的,也算是一波超級輸出),那麼GMS市場就會被削弱,更好的PMS(假設)就擁有了能夠在國外與GMS一戰的能力。但如果你要強求其他手機廠商現在就是用HMS,我是堅決反對的,這會入谷歌一樣造成壟斷,對大家都沒好處。
--------------------------------------------------------------------------------------------
至於**“西方卡脖子”**説,看了前面關於"開源"的描述就明白了,即使谷歌突然宣佈安卓完全閉源,AOSP終止,也不存在"卡脖子"問題,國內手機廠,乃至世界手機廠都可以基於閉源前的最後一個開源版本繼續開發.頂多無法繼續獲得後續谷歌公司開發的技術.就算是現在所説的"GMS(谷歌服務)對於AOSP"的侵蝕,國內也早有解決方案.以"鴻蒙"去攻擊其他國產安卓系統,説他們"不愛國",“技術不行”,“被卡脖子”,是非常反智的表現.
關於華為"自研內核",目前實際上是沒做到的,屬於虛假宣傳,它只存在於未來,我也相信未來它會做到自研,但以未來去奪現在的輿論,有些不太合適.它現在還是基於AOSP,用的是安卓生態.如果它真的是自研,就應該像Linux上的Wine一樣,搭建安卓虛擬機來運行安卓軟件,但這會帶來很大的性能問題.
關於**“微內核"和萬物互聯,實際在宣傳上與其本身定義有誤,這不能説是華為造成的,他説了實話,但沒闢謠,也沒有闢謠的義務.**微內核是一種設計方式,它將內核集成的系統服務層分離出來,變成根據需要加入的選件,這可以提升擴展性.在升級系統時,只需要用新模塊代替舊模塊,不需改變整個操作系統.微內核不是"小內核”,但確實可以設計在小的組件上.微內核用現有的Linux分支系統就可以實現,實際上現在的物聯網,就是各種基於Linux的操作系統,用同一套協議在網絡進行信息交換而實現的.現在的一些手機可以操控空調,其實就是物聯網的應用.萬物互聯需要的是統一的協議,並不需要統一的鴻蒙系統,或者説就算用了統一的系統,如果各用各的協議,也無法達成互聯.這方面華為在盡力,但是外界如此將"微內核",“底層細節"這些概念與"萬物互聯"綁定,是在造謠,偷換概念.所謂"安卓是宏內核,無法萬物互聯"也是不存在的,事實是我見過很多微系統都在使用安卓系(也就是AOSP).
**對於開源代碼貢獻率的問題,實際上是有差別認知的,並不是誰貢獻的多,項目就歸誰.**現在的Linux,其創作者林納斯貢獻的代碼只有2%左右,但這依然是"林納斯和Linux社區共同"開發的系統.提交佔比高不能佔用所屬權,因為所有者對開源項目還有管理義務.就算説對AOSP的貢獻度,谷歌也是佔絕對大頭,至少我之前查到的是56%(動態變化),華為最近在用人工智能水Linux內核貢獻,説不定在Linux貢獻率上有一天會成為世界第一。説華為貢獻超過50%的項目,實際上是華為自己的鴻蒙LiteOS,另一套操作系統。
# 至於最後的,最讓我有 50W 嫌疑的,就是我對鴻蒙"國產操作系統之光"的嚴重厭惡. #
國內的優秀操作系統有很多,有些甚至得到了世界的認可,它們的開發都是持續了幾年,十幾年的.其中最有名的是Linux Deepin/UOS,Ubuntu Kylin(優麒麟),NeoKylin(中標麒麟,國內保密要求高的企業和部分廣泛使用).這些系統有的嘗試萬物互聯,有的優化PC體驗,有的可以替代安卓,但它們都明確説明了自己從哪來,而且就算美方制裁"卡脖子”,它們也能迅速發揮作用.有些系統已經達成了"替代Windows"的能力(指的是操作感,單純替代Windows現在Wine就能部分實現).
有些國產操作系統,甚至真正達到了脱離谷歌體系,完全避免了卡脖子問題,但在國際市場上被谷歌盯上,反將一軍,加之生態跟不上而滑落的。比如阿里的YunOS
華為所謂"不花錢的水軍"如此宣傳一個"站在巨人肩膀卻説自己沒站"的操作系統,是對國內開源者信心的重大打擊.如果華為方不加干預,未來只會出現更多的"鴻蒙"行為,它們可能是像鴻蒙一樣宏自研,也有可能是像"中芯"一樣,套個皮打口水戰.
況且,華為的虛假宣傳不是一天兩天,從最開始被詬病的"PPT系統",它就在利用自己當前營造的民粹氛圍,漫天撒謊,偷換概念,打壓友商,為自己牟利.我對華為的研發能力充滿信心,但對那些"沒收錢的水軍"帶來的民粹和反智,以及華為方並未下場闢謠充滿失望.
[del]好了,行走的 50W 自暴了,你們可以開搞了.[/del](刪除原因:過激言論)
--------------------------------------------------------------------------------------------
在這個文章發佈後,我又用了兩個月去持續汴京,最後有一個意外收穫説一説。某答主指出,谷歌是可以通過派遣間諜等方法,去刷掉硬件層系統的,雖然它跟我們用的操作系統不一樣,但破壞性更大。其他有營養的我都填進文章裏了,剩下大是大非談科學的樂子,我也不打算放。
順便説一下,觀網可能在話題按鈕上,用了默認設置,我現在用的網頁護眼插件會把所有背景色改成綠色,結果就是我不知道選沒選話題.
順便,50℃的兩杯水加在一起,熱量上可能相當於一杯100℃水,但實際温度是低於50℃的,我硬件領域學的奇差,這方面不多參合。