手把手帶你玩轉 openEuler | 初識 openEuler
為了讓更多人更深入認識 openEuler 並積極參與進來,社群將出一些列課程和大家近距離接觸,邀請 openEuler 開源的重要參與者、SIG 組 maintainer 等資深專家來進行持續分享。本課程分為三部分,主要是讓大家瞭解 openEuler 是什麼、怎麼玩、如何參與。
- 第 1 部分:認識 openEuler。瞭解 openEuler 是一個怎樣的平臺,包含哪些內容。
- 第 2 部分:openEuler 社群運作。通過本講您可以瞭解到 openEuler 社群的治理及運作方式。
- 第 3 部分:openEuler 版本介紹。通過該部分您可以瞭解到 openEuler 的軟體構建和未來的一些規劃。
1. 認識 openEuler
1.1 社群網站:openEuler.org[1]
通過社群網站大家可以瞭解到更多關於 openEuler 的相關內容,並通過文件檢視 openEuler 的使用方法。
openEuler 是一個開源、免費的 Linux 發行版平臺,通過開放的社群形式與全球的開發者共同構建一個開放、多元和架構包容的軟體生態體系。同時,openEuler 也是一個創新的平臺,鼓勵任何人在該平臺上提出新想法、開拓新思路、實踐新方案。
1.2 下載體驗 openEuler
上面瞭解了 openEuler 是一個開源免費的平臺,對於工程師來說,下載使用才是第一步,那麼我們怎麼去下載 openEuler 呢?
openEuler 社群提供了openEuler 下載地址[2]。
可以通過 openEuler 社群導航上的【下載】按鈕,下載 openEuler 20.03 LTS 的 ISO 安裝包。openEuler 20.03 LTS 版本是面向開放場景的標準發行版,生命週期四年。
在 openEuler 使用過程中遇到問題或想提出意見,在社群導航下的【下載】裡和文件裡可以提出意見反饋,供相關技術人員及時解決問題。
1.3 參與 openEuler 社群
可以通過 openEuler 導航下的【社群】來參與 openEuler 社群,裡面有很多社群相關的子選單大家可以在官方社群裡進行深入的瞭解。【社群】裡的【貢獻攻略】可以指導開發者一步一步參於 openEuler 社群、【SIG(專案組)】可以找到自己感興趣的專案組、【郵件列表】可以收聽參與相關的一些討論。
- 開發者:參與社群貢獻需要簽署”貢獻者許可協議(CLA)“,要了解社群行為守則。
- SIG(專案組):SIGs 是社群根據領域劃分的各個領域的興趣小組,每一個小組會根據情況維護社群一個或者多個專案。訪問此處[3]瞭解如何申請一個新 SIG。
- 郵件列表:郵件列表是社群交流的很重要的一種方式。
- 你可以訂閱郵件列表:建議您在訂閱前把郵箱的‘答覆郵件上的郵件頭使用英語’的相關設定開啟:1)開啟郵箱的選項介面。2)點選【高階】——並找到【國際選項】——勾選‘答覆或轉發郵件上的郵件頭和轉發通知使用英語’。
- 傳送郵件到郵件列表:要將郵件傳送到指定的郵件列表,請向上表中列出的郵件地址傳送您的電子郵件。這樣所有在這個郵件列表中的社群成員都能收到您的電子郵件。
- 檢視以前的郵件列表:要檢視郵件列表中以前釋出的電子郵件,請訪問以下存檔地址(Community[4]、Dev[5]、Announce[6]、Council[7]、Infra[8]、Marketing[9]、User-committee[10]、Build-team[11]、TC[12]、Kernel[13]、A-Tune[14]、iSulad[15]、QA[16]、Sig-ai-bigdata[17]、Crystal-ci[18]、Virt[19])
通過社群我們可以做些什麼:
在我們要做一些事情之前,先說一下 openEuler 本身是在什麼地方的?openEuler 本身是放在 gitee.com 上的,並且是開源的,如果大家想要加入使用 openEuler 需要有一個 gitee 賬號。
下面就是我們要在社群裡做些事情了。
1)提需求/bug: 在使用/開發過程中遇到的一些問題,發現哪些地方使用不方便,大家都可以可以通過 issue 或者郵件列別提出問題。
最簡單基本的參與社群的方式:當然是先點一點社群裡的內容了,看看有哪些需要優化改進的地方,提出一些有價值有意義的建議。這也是最簡單的方式了。
在社群中提交問題都是通過 issue 機制來進行的,在提交問題的過程中需要提交人指定提交的物件是誰,也就是你要提交問題給誰。
讓我們看下 issue 的介面長什麼樣子?
舉個栗子:如果你想提交一個社群治理的一個問題,那麼你可以在 Community 程式碼倉庫的 issue 中提交問題
方框裡的 issue 就是我們用來提交 bug/問題的入口,進入到 issue 裡我們可以點選【新建 Issue】,進去之後就可以提交 issue 了。
當然你可以設定提交的 issue 是什麼級別的。
我們在提交問題時怎麼來接行 issue 的劃分呢?
總的來說分為以下幾類:
- 在社群中使用基礎設施的過程中,感覺不爽,比如頁面佈局不夠霸氣,文字太小等等,可以提交問題到http://gitee.com/openeuler/infrastructure[20]
- 如果遇到社群治理方面的問題,比如委員選舉機制等問題可以提交到 http://gitee.com/openeuler/community[21]
- 具體的軟體問題,提交到 http://gitee.com/openeuler/kernel[22]
- 其他問題,也就是你知道該提交什麼地方的問題,可以提交到 http://gitee.com/openeuler/community-issue[23]
如果你想要更詳細的瞭解 issue 提交的流程,下面的連結可以幫助到你:http://gitee.com/openeuler/community/blob/master/zh/contributors/issue-submit.md[24]
2)修 bug 解決問題: 這個就需要高層次的社群人員,以一個開發者的身份參與到社群中,在社群裡可以自己主動認定一些 bug,來解決相關的問題。
在社群裡,通常我們希望提出問題並同時解決問題,如果有一個問題,當然最好的情況是同時提供問題解決的 patch 補丁。我們以社群的輕量化容器引擎 iSulad 為例,http://gitee.com/openeuler/iSulad[25],假定我們需要為 iSulad 提交一個 patch 補丁,基本流程如下:
第一步:首先要先建立一個自己的分支
分支是通過 Fork 建立的,如果大家不瞭解 Fork,還是先去學習以下 git 吧,對於開發者來說,git 的開發模式是最常用的,也是最基本的,使用 git 是必須的。
第二步:修改程式碼並生成 Pull Request
點選 fork 完畢後,目錄已經從 openEuler 切換成了自己的賬戶了,你自己的分支就建立好了。接下來就可以在自己的分支上進行程式碼的修改了。
修改完程式碼後,點選 Pull Request,就會生成一個 patch 提交程式碼到原始社群裡了,到這裡就完成了 patch 的提交了,接下來的時間就是等待 maintainer 稽核你的程式碼了。
3)貢獻軟體包: 可以在 openEuler 程式碼倉庫中的 openeuler 或者 src-openeuler 貢獻自己的軟體包,當然裡面有很多軟體包供開發者使用。這樣日積月累,openEuler 就能夠提供更多更豐富的軟體包功能,越多人蔘與進來,openEuler 就能夠成為萬能的軟體生態系統。
4)開發新軟體: 大家根據自己愛好和想法,可以開發一些新的軟體,貢獻到 openeler 下面,經過一定時間的孵化可以進駐到 src-openeuler 裡,供大家使用。
有兩種方式可以將自己的作品釋出到 openEuler 社群:
- 在其他社群開發,整合到 openEuler 中:假如我們常使用的 github、gitlab、gitee,在上面有一些我們的專案,我們可以通過將軟體放到 src-openEuler 的 repo 倉就可以了。這樣就可以把我們在其他管理平臺裡的軟體整合到 openEuler 裡。
- 在 openEuler 社群中開發,在 openEuler 中整合:我們可以直接在 openEuler 的程式碼倉庫http://gitee.com/openeuler中建立專案,相當於將程式碼託管到openEuler社群。就像社群裡的iSula和A-Tune就是這樣的模式。
1.4 《社群參與之旅》
如果大家想更加詳細的瞭解社群,可以通過兩篇比較好的部落格去進一步瞭解。可以介紹如何參與社群的部落格地址如下:我的社群參與之旅[26]openEuler 社群參與之旅[27]
1.5 openEuler 程式碼倉庫
openEuler 的願景是:通過社群合作,打造創新平臺,構建支援多處理器架構、統一和開放的作業系統 openEuler,推動軟硬體生態繁榮發展。
openEuler 程式碼是放在 gitee 上的,大家可以盡情的去下載使用。
openEuler 主要包括兩個程式碼倉庫:
src-openEuler 軟體包倉庫地址:http://gitee.com/src-openeuler[28]
src-openEuler 主要用於存放製作釋出件所需的軟體包。為 openEuler 的 release 發行版提供生成 rpm 包等構建資訊等的地方。
openEuler 程式碼倉庫地址:http://gitee.com/openeuler[29]
openEuler 主要用於存放原始碼類專案。openeuler 這個倉是儲存所有“原生態”的軟體,也就是為原創性的軟體提供一個展示的舞臺,或者是一個孵化器平臺。
2. openEuler 社群運作
2.1 社群治理:開放、透明
openEuler 社群碼雲地址: http://gitee.com/openeuler/community[30]
程式碼倉 Community 儲存了關於 openEuler 社群的所有資訊,包括社群治理、社群活動、開發者貢獻指南、溝通交流指南等內容。這裡包括:openEuler 社群介紹、社群治理組織架構、社群活動、開發者貢獻指南。
社群治理組織結構
我們主要介紹 祕書處、安全委員會、技術委員會、SIG。通過對各自的介紹,大家很明白的知道這些架構組織的作用了。
祕書處: 負責社群的籌備、運營規劃等支撐社群規範化運作成熟。
現階段,openEuler 社群祕書處的主要職責如下:
- 制定社群運營規劃
- 制定費用預算,請獲得社群創始人批准
- 執行社群創始人籌備社群的工作
- openEuler 社群其他未明確分配到責任人的工作
安全委員會: 負責接收和響應 openEuler 安全問題報告、提供社群安全指導。
現階段,openEuler 社群安全委員會的工作職責如下:
- 協助漏洞修復:確保及時修復已知漏洞。通過為軟體包 Maintainer 們提供補丁幫助,幫助使用者系統在成為攻擊受害者之前進行漏洞修復,包括提供相關漏洞檢測和修復工具。
- 響應安全問題:響應上報的安全問題,跟蹤安全問題的處理進展,並遵循安全問題披露策略對安全問題在社群內進行披露和公告。
- 安全編碼規則:普及安全編碼知識是安全團隊的目標。安全團隊會努力建立文件或開發工具來幫助開發團隊避免軟體開發過程中的常見陷阱。安全團隊還會嘗試回答在開發和使用過程中遇到的任何問題。
- 參與程式碼稽核:安全團隊希望能夠通過程式碼稽核幫助團隊提前發現程式碼中的漏洞。
技術委員會: 負責社群技術決策和技術資源的協調。
技術委員會的主要職責如下:
- 負責回答理事會提出的技術問題,支撐理事會對戰略藍圖的技術發展方向做出判斷;
- 以遠端協作的方式執行,每半年召開一次面對面溝通的正式會議,正式會議間定期召開例行線上公開會議;
- 對社群技術路線、介面定義、架構設計、構建釋出等進行指導,並逐步構建社群規則;
- 協調跨專案合作,對社群跨專案技術問題進行指導,並逐步構建社群規則;
- 制定、指導專案孵化、開發、退出流程,支撐社群技術生態健康發展;
- 制定、指導軟體包接納、退出 openEuler 的流程,支撐 openEuler 開源版本的可信和可靠;
- 接受使用者委員會的反饋(需求和問題),牽引社群資源將其落地至專案;
- 建立社群認證標準和平臺,為社群認證(OS 商業發行版認證、硬體相容性認證等)提供技術支撐;
SIG: 社群興趣小組,每個小組維護一個或多個專案(對應多個 gitee 倉)
2.2 參與社群治理和運作
在您遇到任何問題、想參與各委員會/各 SIG 的運作、找到感興趣的 SIG 都可以通過一下方式進行了解和提問。
如果您對社群治理有任何問題或建議,可以發郵件到 maillist:[email protected]
提 issue:http://gitee.com/openeuler/community
如果您想參與各委員會、各 SIG 的運作,可以通過郵件列表交流及獲取資訊郵件列表:http://openeuler.org/zh/community/mails.html
SIGs:http://openeuler.org/zh/sig.html
如果您沒找到感興趣或者合適的 SIG,可以申請建立 1 個新 SIGhttp://gitee.com/openeuler/community/tree/master/zh/technical-committee/governance
如果您對社群版本釋出有任何建議或者需求、想法,可以發郵件到 maillist:[email protected]
標題行首帶上[release management] 提 issue:http://gitee.com/openeuler/release-management
3. openEuler 版本介紹
3.1 Linux Kernel 等上游社群
openEuler 跟其他大家比較熟悉的作業系統是一樣的,主要是從上游社群來取相關的軟體進行一些增強開發、整合和質量保障,然後構建出來的一個社群免費版本。基於上游社群開源軟體構建的免費、開源的 Linux 社群發行版,與國內主流 OS 廠商共建共享,形成合力繁榮國內 Linux 作業系統生態
下圖是 openEuler 與 Linux 發行版的對比,大家可以瞭解一下。
- openEuler 與 SUSE、Debian、 RedHat 一樣基於上游社群開源軟體 構建
- openEuler 社群發行 LTS 免費版本, 使能 OSV 發展商業發行版,如麒麟軟體、普華、中科軟、萬里開源等
- openEuler 當前基於核心 4.19 版本
3.2 openEuler 基於上游開源軟體構建,回饋上游開源社群
openEuler 大部分軟體來自於上游開源社群,基於上游開源社群我們也做了大量的貢獻來回饋上游開源社群。(比如:在 Linux Kernel 社群裡,華為的貢獻排到了 Top5;在 GCC 社群裡華為有 Maintainer 在社群裡進行貢獻,等等。)推送到上游社群比較困難的程式碼,經過 openEuler maintainer 的評審,如果確實有價值,也可以將程式碼先合入到openEuler社群裡。但還是鼓勵儘可能推送到上游社群,堅持upstream first的原則。
3.3 openEuler 版本路標規劃
openEuler 社群版本命名,釋出時間與生命週期管理[31]
LTS 版本:2 年釋出 1 個,維護 4 年,OSV 廠商可以基於 LTS 版本構建商用發行版;下一個 LTS 版本 22.03
創新版本:6 個月釋出 1 個,維護 6 個月
- 社群版本按按照交付年份和月份進行版本號命名。例如,openEuler 20.09 於 2020 年 09 月釋出
- 社群版本分為長期支援版本和創新版本。
- 長期支援版本:釋出間隔週期定為 2 年,提供 4 年社群支援。社群首個 LTS 版本 openEuler 20.03 已於 20 年 3 月正式釋出。
- 社群創新版本:LTS 版本之間每隔 6 個月 openEuler 會發佈一個社群創新版本,提供 6 個月社群支援。
歡迎社群開發者和使用者提出寶貴建議,以上規則將根據反饋意見以及社群實施情況不斷完善。
3.4 openEuler 20.03LTS 版本基本資訊
20.03LTS 版本基本資訊表[32]
LTS 版本架構環境支援 ARM 和 X86 版本。如果對 ARM 感興趣的人員可以通過 openEuler 的【首頁】—【鵬城實驗室】可以去申請 ARM 的虛擬機器資源進行體驗。詳細的版本資訊可查看下錶。
3.5 openEuler 軟體全堆疊的技術優化,充分釋放多樣化計算平臺算力
openEuler 關鍵特性文件說明[33]
- 多核排程技術:關鍵路徑 Fs pagecache 免鎖重構,極致發揮算力,Nginx HTTP 效能提升 15%
- 整合 KAE 外掛:軟硬協同,助力鯤鵬加速庫實現 10%-100%效能提升
- iSula 輕量級容器:具備輕、快、易、靈特點啟動時間縮短 35%,記憶體資源消耗降低 68%,通過 Smart-loading 智慧映象下載技術,顯著提升映象下載速度
- openEuler Community build of OpenJDK:通過 GC 優化,冗餘 DMB 指令消除等技術提升效能 20%
- A-Tune 場景自優化:典型場景智慧自優化,推理出業務特徵,配置最佳的系統引數合,使業務處於最優執行狀態,提升系統調優效率 30%
4. To Do More
通過社群合作,打造創新平臺,構建支援多處理器架構、統一和開放的作業系統 openEuler,推動軟硬體生態繁榮發展。後面會有更多有意義有挑戰性的一些特性在後續的開發維護中會陸陸續續的釋出出來,大家盡請關注。
社群地址:http://gitee.com/openeuler[34]
參考資料
[1]openEuler.org: http://openeuler.org/
[2] http://openeuler.org/zh/download.html: http://openeuler.org/zh/download.html
[3] http://gitee.com/openeuler/community/blob/master/zh/technical-committee/governance/README.md
[4]Community: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[5]Dev: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[6]Announce: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[7]Council: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[8]Infra: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[9]Marketing: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[10]User-committee: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[11]Build-team: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[12]TC: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[13]Kernel: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[14]A-Tune: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[15]iSulad: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[16]QA: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[17]Sig-ai-bigdata: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[18]Crystal-ci: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[19]Virt: http://mailweb.openeuler.org/hyperkitty/list/[email protected]
[20] http://gitee.com/openeuler/infrastructure
[21]http://gitee.com/openeuler/community
[22]http://gitee.com/openeuler/kernel
[23]http://gitee.com/openeuler/community-issue
[24]http://gitee.com/openeuler/community/blob/master/zh/contributors/issue-submit.md
[25]http://gitee.com/openeuler/iSulad
[26]我的社群參與之旅: http://openeuler.org/zh/blog/2020/06/10/2020-06-10-my-traval-of-openeuler.html
[27]openEuler 社群參與之旅: http://openeuler.org/zh/blog/2020/05/13/2020-5-13-openEuler-Travel.html
[28]http://gitee.com/src-openeuler
[29]http://gitee.com/openeuler
[30]http://gitee.com/openeuler/community
[31]openEuler 社群版本命名,釋出時間與生命週期管理: http://gitee.com/openeuler/release-management/blob/master/lifecycle.md
[32]20.03LTS 版本基本資訊表: http://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/release_notes.html
[33]openEuler 關鍵特性文件說明: http://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/%E5%85%B3%E9%94%AE%E7%89%B9%E6%80%A7.html
[34]http://gitee.com/openeuler
- 玩轉機密計算從 secGear 開始
- openEuler資源利用率提升之道06:虛擬機器混部OpenStack排程
- openGauss Cluster Manager RTO Test
- JVM 鎖 bug 導致 G1 GC 掛起問題分析和解決【畢昇JDK技術剖析 · 第 2 期】
- 手把手帶你玩轉 openEuler | openEuler 的使用
- 681名學生中選!暑期2021開啟火熱“開源之夏”!
- 手把手帶你玩轉 openEuler | 初識 openEuler
- StratoVirt 中的 PCI 裝置熱插拔實現
- 使用 NMT 和 pmap 解決 JVM 資源洩漏問題
- JNI 中錯誤的訊號處理導致 JVM 崩潰問題分析
- Java Flight Recorder - 事件機制詳解
- 畢昇 JDK 8u292、11.0.11 釋出!
- StratoVirt 中的虛擬網絡卡是如何實現的?
- openEuler結合ebpf提升ServiceMesh服務體驗的探索
- 我的openEuler社群參與之旅
- StratoVirt 的中斷處理是如何實現的?
- 看看畢昇 JDK 團隊是如何解決 JVM 中 CMS 的 Crash
- 使用 perf 解決 JDK8 小版本升級後效能下降的問題【畢昇JDK技術剖析 · 第 1 期】
- 2021年畢昇 JDK 的第一個重要更新來了
- 漏洞盒子 × openEuler | 廣邀白帽共築安全的Linux開放應用生態