手把手帶你玩轉 openEuler | 初識 openEuler

語言: CN / TW / HK

為了讓更多人更深入認識 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 的劃分呢?

總的來説分為以下幾類:

  • 在社區中使用基礎設施的過程中,感覺不爽,比如頁面佈局不夠霸氣,文字太小等等,可以提交問題到https://gitee.com/openeuler/infrastructure[20]
  • 如果遇到社區治理方面的問題,比如委員選舉機制等問題可以提交到 https://gitee.com/openeuler/community[21]
  • 具體的軟件問題,提交到 https://gitee.com/openeuler/kernel[22]
  • 其他問題,也就是你知道該提交什麼地方的問題,可以提交到 https://gitee.com/openeuler/community-issue[23]

如果你想要更詳細的瞭解 issue 提交的流程,下面的鏈接可以幫助到你:https://gitee.com/openeuler/community/blob/master/zh/contributors/issue-submit.md[24]

2)修 bug 解決問題: 這個就需要高層次的社區人員,以一個開發者的身份參與到社區中,在社區裏可以自己主動認定一些 bug,來解決相關的問題。

在社區裏,通常我們希望提出問題並同時解決問題,如果有一個問題,當然最好的情況是同時提供問題解決的 patch 補丁。我們以社區的輕量化容器引擎 iSulad 為例,https://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 的代碼倉庫https://gitee.com/openeuler中創建項目,相當於將代碼託管到openEuler社區。就像社區裏的iSula和A-Tune就是這樣的模式。

1.4 《社區參與之旅》

如果大家想更加詳細的瞭解社區,可以通過兩篇比較好的博客去進一步瞭解。可以介紹如何參與社區的博客地址如下:我的社區參與之旅[26]openEuler 社區參與之旅[27]

1.5 openEuler 代碼倉庫

openEuler 的願景是:通過社區合作,打造創新平台,構建支持多處理器架構、統一和開放的操作系統 openEuler,推動軟硬件生態繁榮發展。

openEuler 代碼是放在 gitee 上的,大家可以盡情的去下載使用。

openEuler 主要包括兩個代碼倉庫:

src-openEuler 軟件包倉庫地址:https://gitee.com/src-openeuler[28]

src-openEuler 主要用於存放製作發佈件所需的軟件包。為 openEuler 的 release 發行版提供生成 rpm 包等構建信息等的地方。

openEuler 代碼倉庫地址:https://gitee.com/openeuler[29]

openEuler 主要用於存放源碼類項目。openeuler 這個倉是存儲所有“原生態”的軟件,也就是為原創性的軟件提供一個展示的舞台,或者是一個孵化器平台。

2. openEuler 社區運作

2.1 社區治理:開放、透明

openEuler 社區碼雲地址: https://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:https://gitee.com/openeuler/community

如果您想參與各委員會、各 SIG 的運作,可以通過郵件列表交流及獲取信息郵件列表:https://openeuler.org/zh/community/mails.html

SIGs:https://openeuler.org/zh/sig.html

如果您沒找到感興趣或者合適的 SIG,可以申請創建 1 個新 SIGhttps://gitee.com/openeuler/community/tree/master/zh/technical-committee/governance

如果您對社區版本發佈有任何建議或者需求、想法,可以發郵件到 maillist:[email protected]

標題行首帶上[release management] 提 issue:https://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]

 

  1. 多核調度技術關鍵路徑 Fs pagecache 免鎖重構,極致發揮算力,Nginx HTTP 性能提升 15%
  2. 集成 KAE 插件軟硬協同,助力鯤鵬加速庫實現 10%-100%性能提升
  3. iSula 輕量級容器具備輕、快、易、靈特點啟動時間縮短 35%,內存資源消耗降低 68%,通過 Smart-loading 智能鏡像下載技術,顯著提升鏡像下載速度
  4. openEuler Community build of OpenJDK通過 GC 優化,宂餘 DMB 指令消除等技術提升性能 20%
  5. A-Tune 場景自優化典型場景智能自優化,推理出業務特徵,配置最佳的系統參數合,使業務處於最優運行狀態,提升系統調優效率 30%

 

4. To Do More

通過社區合作,打造創新平台,構建支持多處理器架構、統一和開放的操作系統 openEuler,推動軟硬件生態繁榮發展。後面會有更多有意義有挑戰性的一些特性在後續的開發維護中會陸陸續續的發佈出來,大家盡請關注。

社區地址:https://gitee.com/openeuler[34]

參考資料

[1]openEuler.org: https://openeuler.org/

[2] https://openeuler.org/zh/download.html: https://openeuler.org/zh/download.html

[3] https://gitee.com/openeuler/community/blob/master/zh/technical-committee/governance/README.md

[4]Community: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[5]Dev: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[6]Announce: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[7]Council: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[8]Infra: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[9]Marketing: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[10]User-committee: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[11]Build-team: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[12]TC: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[13]Kernel: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[14]A-Tune: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[15]iSulad: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[16]QA: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[17]Sig-ai-bigdata: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[18]Crystal-ci: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[19]Virt: https://mailweb.openeuler.org/hyperkitty/list/[email protected]

[20] https://gitee.com/openeuler/infrastructure

[21]https://gitee.com/openeuler/community

[22]https://gitee.com/openeuler/kernel

[23]https://gitee.com/openeuler/community-issue

[24]https://gitee.com/openeuler/community/blob/master/zh/contributors/issue-submit.md

[25]https://gitee.com/openeuler/iSulad

[26]我的社區參與之旅: https://openeuler.org/zh/blog/2020/06/10/2020-06-10-my-traval-of-openeuler.html

[27]openEuler 社區參與之旅: https://openeuler.org/zh/blog/2020/05/13/2020-5-13-openEuler-Travel.html

[28]https://gitee.com/src-openeuler

[29]https://gitee.com/openeuler

[30]https://gitee.com/openeuler/community

[31]openEuler 社區版本命名,發佈時間與生命週期管理: https://gitee.com/openeuler/release-management/blob/master/lifecycle.md

[32]20.03LTS 版本基本信息表: https://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/release_notes.html

[33]openEuler 關鍵特性文檔説明: https://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/%E5%85%B3%E9%94%AE%E7%89%B9%E6%80%A7.html

[34]https://gitee.com/openeuler