Commit 390f915a authored by Hu Haowen's avatar Hu Haowen Committed by Jonathan Corbet

docs/zh_TW: add translations for zh_TW/process

Create new translations for zh_TW/process and link them to index.
Signed-off-by: default avatarHu Haowen <src.res@email.cn>
Reviewed-by: default avatarPan Yunwang <panyunwang849@gmail.com>
Link: https://lore.kernel.org/r/20210729155627.41744-2-src.res@email.cnSigned-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 76f1fc26
......@@ -22,9 +22,7 @@
下面的文檔介紹了Linux內核原始碼的許可證(GPLv2)、如何在原始碼樹中正確標記
單個文件的許可證、以及指向完整許可證文本的連結。
TODOList:
* Documentation/translations/zh_TW/process/license-rules.rst
Documentation/translations/zh_TW/process/license-rules.rst
用戶文檔
--------
......@@ -67,9 +65,13 @@ TODOlist:
開發人員做出貢獻。與任何大型社區一樣,知道如何完成任務將使得更改合併的過程
變得更加容易。
.. toctree::
:maxdepth: 2
process/index
TODOList:
* process/index
* dev-tools/index
* doc-guide/index
* kernel-hacking/index
......
This diff is collapsed.
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/3.Early-stage.rst <development_early_stage>`
:Translator:
時奎亮 Alex Shi <alex.shi@linux.alibaba.com>
:校譯:
吳想成 Wu XiangCheng <bobwxc@email.cn>
胡皓文 Hu Haowen <src.res@email.cn>
.. _tw_development_early_stage:
早期規劃
========
當考慮一個Linux內核開發項目時,很可能會直接跳進去開始編碼。然而,與任何重要
的項目一樣,許多成功的基礎最好是在第一行代碼編寫之前就打下。在早期計劃和
溝通中花費一些時間可以在之後節省更多的時間。
搞清問題
--------
與任何工程項目一樣,成功的內核改善從清晰描述要解決的問題開始。在某些情況
下,這個步驟很容易:例如當某個特定硬體需要驅動程序時。不過,在其他情況下,
很容易將實際問題與建議的解決方案混在一起,這可能會導致麻煩。
舉個例子:幾年前,Linux音頻的開發人員尋求一種方法來運行應用程式,而不會因
系統延遲過大而導致退出或其他問題。他們得到的解決方案是一個連接到Linux安全
模塊(LSM)框架中的內核模塊;這個模塊可以配置爲允許特定的應用程式訪問實時
調度程序。這個模塊被實現並發到linux-kernel郵件列表,在那裡它立即遇到了麻煩。
對於音頻開發人員來說,這個安全模塊足以解決他們當前的問題。但是,對於更廣泛的
內核社區來說,這被視爲對LSM框架的濫用(LSM框架並不打算授予他們原本不具備的
進程特權),並對系統穩定性造成風險。他們首選的解決方案包括短期的通過rlimit
機制進行實時調度訪問,以及長期的減少延遲的工作。
然而,音頻社區無法超越他們實施的特定解決方案來看問題;他們不願意接受替代方案。
由此產生的分歧使這些開發人員對整個內核開發過程感到失望;其中一個開發人員返回
到audio列表並發布了以下內容:
有很多非常好的Linux內核開發人員,但他們往往會被一羣傲慢的傻瓜所壓倒。
試圖向這些人傳達用戶需求是浪費時間。他們太「聰明」了,根本聽不到少數
人的話。
(http://lwn.net/articles/131776/)
實際情況卻是不同的;與特定模塊相比,內核開發人員更關心系統穩定性、長期維護
以及找到問題的正確解決方案。這個故事的寓意是把重點放在問題上——而不是具體的
解決方案上——並在開始編寫代碼之前與開發社區討論這個問題。
因此,在考慮一個內核開發項目時,我們應該得到一組簡短問題的答案:
- 需要解決的問題究竟是什麼?
- 受此問題影響的用戶有哪些?解決方案應該解決哪些使用案例?
- 內核現在爲何沒能解決這個問題?
只有這樣,才能開始考慮可能的解決方案。
早期討論
--------
在計劃內核開發項目時,在開始實施之前與社區進行討論是很有意義的。早期溝通可以
通過多種方式節省時間和麻煩:
- 很可能問題是由內核以您不理解的方式解決的。Linux內核很大,具有許多不明顯
的特性和功能。並不是所有的內核功能都像人們所希望的那樣有文檔記錄,而且很
容易遺漏一些東西。某作者發布了一個完整的驅動程序,重複了一個其不
知道的現有驅動程序。重新發明現有輪子的代碼不僅浪費,而且不會被接受到主線
內核中。
- 建議的解決方案中可能有一些要素不適合併入主線。在編寫代碼之前,最好先了解
這樣的問題。
- 其他開發人員完全有可能考慮過這個問題;他們可能有更好的解決方案的想法,並且
可能願意幫助創建這個解決方案。
在內核開發社區的多年經驗給了我們一個明確的教訓:閉門設計和開發的內核代碼總是
有一些問題,這些問題只有在代碼發布到社區中時才會被發現。有時這些問題很嚴重,
需要數月或數年的努力才能使代碼達到內核社區的標準。例如:
- 設計並實現了單處理器系統的DeviceScape網絡棧。只有使其適合於多處理器系統,
才能將其合併到主線中。在代碼中修改鎖等等是一項困難的任務;因此,這段代碼
(現在稱爲mac80211)的合併被推遲了一年多。
- Reiser4文件系統包含許多功能,核心內核開發人員認爲這些功能應該在虛擬文件
系統層中實現。它還包括一些特性,這些特性在不將系統暴露於用戶引起的死鎖的
情況下是不容易實現的。這些問題過遲發現——以及拒絕處理其中一些問題——已經
導致Reiser4置身主線內核之外。
- Apparmor安全模塊以被認爲不安全和不可靠的方式使用內部虛擬文件系統數據結構。
這種擔心(包括其他)使Apparmor多年來無法進入主線。
在這些情況下,與內核開發人員的早期討論,可以避免大量的痛苦和額外的工作。
找誰交流?
----------
當開發人員決定公開他們的計劃時,下一個問題是:我們從哪裡開始?答案是找到正確
的郵件列表和正確的維護者。對於郵件列表,最好的方法是在維護者(MAINTAINERS)文件
中查找要發布的相關位置。如果有一個合適的子系統列表,那麼其上發布通常比在
linux-kernel上發布更可取;您更有可能接觸到在相關子系統中具有專業知識的開發
人員,並且環境可能具支持性。
找到維護人員可能會有點困難。同樣,維護者文件是開始的地方。但是,該文件往往不
是最新的,並且並非所有子系統都在那裡顯示。實際上,維護者文件中列出的人員可能
不是當前實際擔任該角色的人員。因此,當對聯繫誰有疑問時,一個有用的技巧是使用
git(尤其是「git-log」)查看感興趣的子系統中當前活動的用戶。看看誰在寫補丁、
誰會在這些補丁上加上Signed-off-by行簽名(如有)。這些人將是幫助新開發項目的
最佳人選。
找到合適的維護者有時是非常具有挑戰性的,以至於內核開發人員添加了一個腳本來
簡化這個過程:
::
.../scripts/get_maintainer.pl
當給定「-f」選項時,此腳本將返回指定文件或目錄的當前維護者。如果在命令行上
給出了一個補丁,它將列出可能接收補丁副本的維護人員。有許多選項可以調節
get_maintainer.pl搜索維護者的嚴格程度;請小心使用更激進的選項,因爲最終結果
可能會包括對您正在修改的代碼沒有真正興趣的開發人員。
如果所有其他方法都失敗了,那麼與Andrew Morton交流是跟蹤特定代碼段維護人員
的一種有效方法。
何時郵寄?
----------
如果可能的話,在早期階段發布你的計劃只會更有幫助。描述正在解決的問題以及已經
制定的關於如何實施的任何計劃。您可以提供的任何信息都可以幫助開發社區爲項目
提供有用的輸入。
在這個階段可能發生的一件令人沮喪的事情不是得到反對意見,而是很少或根本沒有
反饋。令人傷心的事實是:(1)內核開發人員往往很忙;(2)不缺少有宏偉計劃但
代碼(甚至代碼設想)很少的人去支持他們;(3)沒有人有義務審查或評論別人發表
的想法。除此之外,高層級的設計常常隱藏著一些問題,這些問題只有在有人真正嘗試
實現這些設計時才會被發現;因此,內核開發人員寧願看到代碼。
如果發布請求評論(RFC)並沒得到什麼有用的評論,不要以爲這意味著無人對此項目
有興趣,同時你也不能假設你的想法沒有問題。在這種情況下,最好的做法是繼續進
行,把你的進展隨時通知社區。
獲得官方認可
-----------------------
如果您的工作是在公司環境中完成的,就像大多數Linux內核工作一樣;顯然,在您將
公司的計劃或代碼發布到公共郵件列表之前,必須獲得有適當權利經理的許可。發布
不確定是否兼容GPL的代碼尤其會帶來問題;公司的管理層和法律人員越早能夠就發布
內核開發項目達成一致,對參與的每個人都越好。
一些讀者可能會認爲他們的核心工作是爲了支持還沒有正式承認存在的產品。將僱主
的計劃公布在公共郵件列表上可能不是一個可行的選擇。在這種情況下,有必要考慮
保密是否真的是必要的;通常不需要把開發計劃關在門內。
的確,有些情況下一家公司在開發過程的早期無法合法地披露其計劃。擁有經驗豐富
的內核開發人員的公司可能選擇以開環的方式進行開發,前提是他們以後能夠避免
嚴重的集成問題。對於沒有這種內部專業知識的公司,最好的選擇往往是聘請外部
開發者根據保密協議審查計劃。Linux基金會運行了一個NDA程序,旨在幫助解決這種
情況;更多信息參見:
http://www.linuxfoundation.org/nda/
這種審查通常足以避免以後出現嚴重問題,而無需公開披露項目。
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/7.AdvancedTopics.rst <development_advancedtopics>`
:Translator:
時奎亮 Alex Shi <alex.shi@linux.alibaba.com>
:校譯:
吳想成 Wu XiangCheng <bobwxc@email.cn>
胡皓文 Hu Haowen <src.res@email.cn>
.. _tw_development_advancedtopics:
高級主題
========
現在,希望您能夠掌握開發流程的工作方式。然而,還有更多的東西要學!本節將介紹
一些主題,這些主題對希望成爲Linux內核開發過程常規部分的開發人員有幫助。
使用Git管理補丁
---------------
內核使用分布式版本控制始於2002年初,當時Linus首次開始使用專有的Bitkeeper應用
程序。雖然BitKeeper存在爭議,但它所體現的軟體版本管理方法卻肯定不是。分布式
版本控制可以立即加速內核開發項目。現在有好幾種免費的BitKeeper替代品。
但無論好壞,內核項目都已經選擇了Git作爲其工具。
使用Git管理補丁可以使開發人員的生活更加輕鬆,尤其是隨著補丁數量的增長。Git也
有其粗糙的邊角和一定的危險性,它是一個年輕和強大的工具,仍然在其開發人員完善
中。本文檔不會試圖教會讀者如何使用git;這會是個巨長的文檔。相反,這裡的重點
將是Git如何特別適合內核開發過程。想要加快用Git速度的開發人員可以在以下網站上
找到更多信息:
https://git-scm.com/
https://www.kernel.org/pub/software/scm/git/docs/user-manual.html
同時網上也能找到各種各樣的教程。
在嘗試使用它生成補丁供他人使用之前,第一要務是閱讀上述網頁,對Git的工作方式
有一個紮實的了解。使用Git的開發人員應能進行拉取主線存儲庫的副本,查詢修訂
歷史,提交對樹的更改,使用分支等操作。了解Git用於重寫歷史的工具(如rebase)
也很有用。Git有自己的術語和概念;Git的新用戶應該了解引用、遠程分支、索引、
快進合併、推拉、游離頭等。一開始可能有點嚇人,但這些概念不難通過一點學習來
理解。
使用git生成通過電子郵件提交的補丁是提高速度的一個很好的練習。
當您準備好開始建立Git樹供其他人查看時,無疑需要一個可以從中拉取的伺服器。
如果您有一個可以訪問網際網路的系統,那麼使用git-daemon設置這樣的伺服器相對
簡單。同時,免費的公共託管網站(例如github)也開始出現在網絡上。成熟的開發
人員可以在kernel.org上獲得一個帳戶,但這些帳戶並不容易得到;更多有關信息,
請參閱 https://kernel.org/faq/ 。
正常的Git工作流程涉及到許多分支的使用。每一條開發線都可以分爲單獨的「主題
分支」,並獨立維護。Git的分支很容易使用,沒有理由不使用它們。而且,在任何
情況下,您都不應該在任何您打算讓其他人從中拉取的分支中進行開發。應該小心地
創建公開可用的分支;當開發分支處於完整狀態並已準備好時(而不是之前)才合併
開發分支的補丁。
Git提供了一些強大的工具,可以讓您重寫開發歷史。一個不方便的補丁(比如說,
一個打破二分法的補丁,或者有其他一些明顯的缺陷)可以在適當的位置修復,或者
完全從歷史中消失。一個補丁系列可以被重寫,就好像它是在今天的主線上寫的一樣,
即使你已經花了幾個月的時間在寫它。可以透明地將更改從一個分支轉移到另一個
分支。等等。明智地使用git修改歷史的能力可以幫助創建問題更少的乾淨補丁集。
然而,過度使用這種功能可能會導致其他問題,而不僅僅是對創建完美項目歷史的
簡單癡迷。重寫歷史將重寫該歷史中包含的更改,將經過測試(希望如此)的內核樹
變爲未經測試的內核樹。除此之外,如果開發人員沒有共享項目歷史,他們就無法
輕鬆地協作;如果您重寫了其他開發人員拉入他們存儲庫的歷史,您將使這些開發
人員的生活更加困難。因此,這裡有一個簡單的經驗法則:被導出到其他地方的歷史
在此後通常被認爲是不可變的。
因此,一旦將一組更改推送到公開可用的伺服器上,就不應該重寫這些更改。如果您
嘗試強制進行無法快進合併的更改(即不共享同一歷史記錄的更改),Git將嘗試強制
執行此規則。這可能覆蓋檢查,有時甚至需要重寫導出的樹。在樹之間移動變更集以
避免linux-next中的衝突就是一個例子。但這種行爲應該是罕見的。這就是爲什麼
開發應該在私有分支中進行(必要時可以重寫)並且只有在公共分支處於合理的較新
狀態時才轉移到公共分支中的原因之一。
當主線(或其他一組變更所基於的樹)前進時,很容易與該樹合併以保持領先地位。
對於一個私有的分支,rebasing 可能是一個很容易跟上另一棵樹的方法,但是一旦
一棵樹被導出到外界,rebasing就不可取了。一旦發生這種情況,就必須進行完全
合併(merge)。合併有時是很有意義的,但是過於頻繁的合併會不必要地擾亂歷史。
在這種情況下建議的做法是不要頻繁合併,通常只在特定的發布點(如主線-rc發布)
合併。如果您對特定的更改感到緊張,則可以始終在私有分支中執行測試合併。在
這種情況下,git「rerere」工具很有用;它能記住合併衝突是如何解決的,這樣您
就不必重複相同的工作。
關於Git這樣的工具的一個最大的反覆抱怨是:補丁從一個存儲庫到另一個存儲庫的
大量移動使得很容易陷入錯誤建議的變更中,這些變更避開審查雷達進入主線。當內
核開發人員看到這種情況發生時,他們往往會感到不高興;在Git樹上放置未審閱或
主題外的補丁可能會影響您將來讓樹被拉取的能力。引用Linus的話:
::
你可以給我發補丁,但當我從你那裡拉取一個Git補丁時,我需要知道你清楚
自己在做什麼,我需要能夠相信事情而 *無需* 手動檢查每個單獨的更改。
(http://lwn.net/articles/224135/)。
爲了避免這種情況,請確保給定分支中的所有補丁都與相關主題緊密相關;「驅動程序
修復」分支不應更改核心內存管理代碼。而且,最重要的是,不要使用Git樹來繞過
審查過程。不時的將樹的摘要發布到相關的列表中,在合適時候請求linux-next中
包含該樹。
如果其他人開始發送補丁以包含到您的樹中,不要忘記審閱它們。還要確保您維護正確
的作者信息; git 「am」工具在這方面做得最好,但是如果補丁通過第三方轉發給您,
您可能需要在補丁中添加「From:」行。
請求拉取時,請務必提供所有相關信息:樹的位置、要拉取的分支以及拉取將導致的
更改。在這方面 git request-pull 命令非常有用;它將按照其他開發人員所期望的
格式化請求,並檢查以確保您已記得將這些更改推送到公共伺服器。
審閱補丁
--------
一些讀者顯然會反對將本節與「高級主題」放在一起,因爲即使是剛開始的內核開發人員
也應該審閱補丁。當然,沒有比查看其他人發布的代碼更好的方法來學習如何在內核環境
中編程了。此外,審閱者永遠供不應求;通過審閱代碼,您可以對整個流程做出重大貢獻。
審查代碼可能是一副令人生畏的圖景,特別是對一個新的內核開發人員來說,他們
可能會對公開詢問代碼感到緊張,而這些代碼是由那些有更多經驗的人發布的。不過,
即使是最有經驗的開發人員編寫的代碼也可以得到改進。也許對(所有)審閱者最好
的建議是:把審閱評論當成問題而不是批評。詢問「在這條路徑中如何釋放鎖?」
總是比說「這裡的鎖是錯誤的」更好。
不同的開發人員將從不同的角度審查代碼。部分人會主要關注代碼風格以及代碼行是
否有尾隨空格。其他人會主要關注補丁作爲一個整體實現的變更是否對內核有好處。
同時也有人會檢查是否存在鎖問題、堆棧使用過度、可能的安全問題、在其他地方
發現的代碼重複、足夠的文檔、對性能的不利影響、用戶空間ABI更改等。所有類型
的檢查,只要它們能引導更好的代碼進入內核,都是受歡迎和值得的。
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/8.Conclusion.rst <development_conclusion>`
:Translator:
時奎亮 Alex Shi <alex.shi@linux.alibaba.com>
:校譯:
吳想成 Wu XiangCheng <bobwxc@email.cn>
胡皓文 Hu Haowen <src.res@email.cn>
.. _tw_development_conclusion:
更多信息
========
關於Linux內核開發和相關主題的信息來源很多。首先是在內核原始碼分發中找到的
文檔目錄。頂級
:ref:`Documentation/translations/zh_TW/process/howto.rst <tw_process_howto>`
文件是一個重要的起點;
:ref:`Documentation/translations/zh_TW/process/submitting-patches.rst <tw_submittingpatches>`
和 :ref:`Documentation/translations/zh_TW/process/submitting-drivers.rst <tw_submittingdrivers>`
也是所有內核開發人員都應該閱讀的內容。許多內部內核API都是使用kerneldoc機制
記錄的;「make htmldocs」或「make pdfdocs」可用於以HTML或PDF格式生成這些文檔
(儘管某些發行版提供的tex版本會遇到內部限制,無法正確處理文檔)。
不同的網站在各個細節層次上討論內核開發。本文作者想謙虛地建議用 https://lwn.net/
作爲來源;有關許多特定內核主題的信息可以通過以下網址的 LWN 內核索引找到:
http://lwn.net/kernel/index/
除此之外,內核開發人員的一個寶貴資源是:
https://kernelnewbies.org/
當然,也不應該忘記 https://kernel.org/ ,這是內核發布信息的最終位置。
關於內核開發有很多書:
《Linux設備驅動程序》第三版(Jonathan Corbet、Alessandro Rubini和Greg Kroah Hartman)
線上版本在 http://lwn.net/kernel/ldd3/
《Linux內核設計與實現》(Robert Love)
《深入理解Linux內核》(Daniel Bovet和Marco Cesati)
然而,所有這些書都有一個共同的缺點:它們上架時就往往有些過時,而且已經上架
一段時間了。不過,在那裡還是可以找到相當多的好信息。
有關git的文檔,請訪問:
https://www.kernel.org/pub/software/scm/git/docs/
https://www.kernel.org/pub/software/scm/git/docs/user-manual.html
結論
====
祝賀所有通過這篇冗長的文檔的人。希望它能夠幫助您理解Linux內核是如何開發的,
以及您如何參與這個過程。
最後,重要的是參與。任何開源軟體項目都不會超過其貢獻者投入其中的總和。Linux
內核的發展速度和以前一樣快,因爲它得到了大量開發人員的幫助,他們都在努力使它
變得更好。內核是一個最成功的例子,說明了當成千上萬的人爲了一個共同的目標一起
工作時,可以做出什麼。
不過,內核總是可以從更大的開發人員基礎中獲益。總有更多的工作要做。但是同樣
重要的是,Linux生態系統中的大多數其他參與者可以通過爲內核做出貢獻而受益。使
代碼進入主線是提高代碼質量、降低維護和分發成本、提高對內核開發方向的影響程度
等的關鍵。這是一種共贏的局面。啓動你的編輯器,來加入我們吧;你會非常受歡迎的。
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/code-of-conduct-interpretation.rst <code_of_conduct_interpretation>`
:Translator: Alex Shi <alex.shi@linux.alibaba.com>
Hu Haowen <src.res@email.cn>
.. _tw_code_of_conduct_interpretation:
Linux內核貢獻者契約行為準則解釋
===============================
:ref:`tw_code_of_conduct` 準則是一個通用文檔,旨在爲幾乎所有開源社區提供一套規則。
每個開源社區都是獨一無二的,Linux內核也不例外。因此,本文描述了Linux內核社區中
如何解釋它。我們也不希望這種解釋隨著時間的推移是靜態的,並將根據需要進行調整。
與開發軟體的「傳統」方法相比,Linux內核開發工作是一個非常個人化的過程。你的貢獻
和背後的想法將被仔細審查,往往導致批判和批評。審查將幾乎總是需要改進,材料才
能包括在內核中。要知道這是因爲所有相關人員都希望看到Linux整體成功的最佳解決方
案。這個開發過程已經被證明可以創建有史以來最健壯的作業系統內核,我們不想做任何
事情來導致提交質量和最終結果的下降。
維護者
------
行為準則多次使用「維護者」一詞。在內核社區中,「維護者」是負責子系統、驅動程序或
文件的任何人,並在內核原始碼樹的維護者文件中列出。
責任
----
《行為準則》提到了維護人員的權利和責任,這需要進一步澄清。
首先,最重要的是,有一個合理的期望是由維護人員通過實例來領導。
也就是說,我們的社區是廣闊的,對維護者沒有新的要求,他們單方面處理其他人在
他們活躍的社區的行爲。這一責任由我們所有人承擔,最終《行為準則》記錄了最終的
上訴路徑,以防有關行爲問題的問題懸而未決。
維護人員應該願意在出現問題時提供幫助,並在需要時與社區中的其他人合作。如果您
不確定如何處理出現的情況,請不要害怕聯繫技術諮詢委員會(TAB)或其他維護人員。
除非您願意,否則不會將其視爲違規報告。如果您不確定是否該聯繫TAB 或任何其他維
護人員,請聯繫我們的衝突調解人 Mishi Choudhary <mishi@linux.com>。
最後,「善待對方」才是每個人的最終目標。我們知道每個人都是人,有時我們都會失敗,
但我們所有人的首要目標應該是努力友好地解決問題。執行行為準則將是最後的選擇。
我們的目標是創建一個強大的、技術先進的作業系統,以及所涉及的技術複雜性,這自
然需要專業知識和決策。
所需的專業知識因貢獻領域而異。它主要由上下文和技術複雜性決定,其次由貢獻者和
維護者的期望決定。
專家的期望和決策都要經過討論,但在最後,爲了取得進展,必須能夠做出決策。這一
特權掌握在維護人員和項目領導的手中,預計將善意使用。
因此,設定專業知識期望、作出決定和拒絕不適當的貢獻不被視爲違反行為準則。
雖然維護人員一般都歡迎新來者,但他們幫助(新)貢獻者克服障礙的能力有限,因此
他們必須確定優先事項。這也不應被視爲違反了行為準則。內核社區意識到這一點,並
以各種形式提供入門級節目,如 kernelnewbies.org 。
範圍
----
Linux內核社區主要在一組公共電子郵件列表上進行交互,這些列表分布在由多個不同
公司或個人控制的多個不同伺服器上。所有這些列表都在內核原始碼樹中的
MAINTAINERS 文件中定義。發送到這些郵件列表的任何電子郵件都被視爲包含在行爲
準則中。
使用 kernel.org bugzilla和其他子系統bugzilla 或bug跟蹤工具的開發人員應該遵循
行為準則的指導原則。Linux內核社區沒有「官方」項目電子郵件地址或「官方」社交媒體
地址。使用kernel.org電子郵件帳戶執行的任何活動必須遵循爲kernel.org發布的行爲
準則,就像任何使用公司電子郵件帳戶的個人必須遵循該公司的特定規則一樣。
行為準則並不禁止在郵件列表消息、內核更改日誌消息或代碼注釋中繼續包含名稱、
電子郵件地址和相關注釋。
其他論壇中的互動包括在適用於上述論壇的任何規則中,通常不包括在行為準則中。
除了在極端情況下可考慮的例外情況。
提交給內核的貢獻應該使用適當的語言。在行為準則之前已經存在的內容現在不會被
視爲違反。然而,不適當的語言可以被視爲一個bug;如果任何相關方提交補丁,
這樣的bug將被更快地修復。當前屬於用戶/內核API的一部分的表達式,或者反映已
發布標準或規範中使用的術語的表達式,不被視爲bug。
執行
----
行為準則中列出的地址屬於行為準則委員會。https://kernel.org/code-of-conduct.html
列出了在任何給定時間接收這些電子郵件的確切成員。成員不能訪問在加入委員會之前
或離開委員會之後所做的報告。
最初的行為準則委員會由TAB的志願者以及作爲中立第三方的專業調解人組成。委員會
的首要任務是建立文件化的流程,並將其公開。
如果報告人不希望將整個委員會納入投訴或關切,可直接聯繫委員會的任何成員,包括
調解人。
行為準則委員會根據流程審查案例(見上文),並根據需要和適當與TAB協商,例如請求
和接收有關內核社區的信息。
委員會做出的任何決定都將提交到表中,以便在必要時與相關維護人員一起執行。行爲
準則委員會的決定可以通過三分之二的投票推翻。
每季度,行為準則委員會和標籤將提供一份報告,概述行為準則委員會收到的匿名報告
及其狀態,以及任何否決決定的細節,包括完整和可識別的投票細節。
我們希望在啓動期之後爲行為準則委員會人員配備建立一個不同的流程。發生此情況時,
將使用該信息更新此文檔。
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/code-of-conduct.rst <code_of_conduct>`
:Translator: Alex Shi <alex.shi@linux.alibaba.com>
Hu Haowen <src.res@email.cn>
.. _tw_code_of_conduct:
貢獻者契約行為準則
++++++++++++++++++
我們的誓言
==========
爲了營造一個開放、友好的環境,我們作爲貢獻者和維護人承諾,讓我們的社區和參
與者,擁有一個無騷擾的體驗,無論年齡、體型、殘疾、種族、性別特徵、性別認同
和表達、經驗水平、教育程度、社會狀況,經濟地位、國籍、個人外貌、種族、宗教
或性身份和取向。
我們的標準
==========
有助於創造積極環境的行爲包括:
* 使用歡迎和包容的語言
* 尊重不同的觀點和經驗
* 優雅地接受建設性的批評
* 關注什麼對社區最有利
* 對其他社區成員表示同情
參與者的不可接受行爲包括:
* 使用性意味的語言或意象以及不受歡迎的性注意或者更過分的行爲
* 煽動、侮辱/貶損評論以及個人或政治攻擊
* 公開或私下騷擾
* 未經明確許可,發布他人的私人信息,如物理或電子地址。
* 在專業場合被合理認爲不適當的其他行爲
我們的責任
==========
維護人員負責澄清可接受行爲的標準,並應針對任何不可接受行爲採取適當和公平的
糾正措施。
維護人員有權和責任刪除、編輯或拒絕與本行為準則不一致的評論、承諾、代碼、
wiki編輯、問題和其他貢獻,或暫時或永久禁止任何貢獻者從事他們認爲不適當、
威脅、冒犯或有害的其他行爲。
範圍
====
當個人代表項目或其社區時,本行為準則既適用於項目空間,也適用於公共空間。
代表一個項目或社區的例子包括使用一個正式的項目電子郵件地址,通過一個正式
的社交媒體帳戶發布,或者在在線或離線事件中擔任指定的代表。項目維護人員可以
進一步定義和澄清項目的表示。
執行
====
如有濫用、騷擾或其他不可接受的行爲,可聯繫行為準則委員會<conduct@kernel.org>。
所有投訴都將接受審查和調查,並將得到必要和適當的答覆。行為準則委員會有義務
對事件報告人保密。具體執行政策的進一步細節可單獨公布。
歸屬
====
本行為準則改編自《貢獻者契約》,版本1.4,可從
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 獲取。
解釋
====
有關Linux內核社區如何解釋此文檔,請參閱 :ref:`tw_code_of_conduct_interpretation`
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/development-process.rst <development_process_main>`
:Translator: Alex Shi <alex.shi@linux.alibaba.com>
Hu Haowen <src.res@email.cn>
.. _tw_development_process_main:
內核開發過程指南
================
內容:
.. toctree::
:numbered:
:maxdepth: 2
1.Intro
2.Process
3.Early-stage
4.Coding
5.Posting
6.Followthrough
7.AdvancedTopics
8.Conclusion
本文檔的目的是幫助開發人員(及其經理)以最小的挫折感與開發社區合作。它試圖記錄這個社區如何以一種不熟悉Linux內核開發(或者實際上是自由軟體開發)的人可以訪問的方式工作。雖然這裡有一些技術資料,但這是一個面向過程的討論,不需要深入了解內核編程就可以理解。
This diff is collapsed.
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0
.. raw:: latex
\renewcommand\thesection*
\renewcommand\thesubsection*
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/index.rst <process_index>`
:Translator: Alex Shi <alex.shi@linux.alibaba.com>
Hu Haowen <src.res@email.cn>
.. _tw_process_index:
與Linux 內核社區一起工作
========================
你想成爲Linux內核開發人員嗎?歡迎之至!在學習許多關於內核的技術知識的同時,
了解我們社區的工作方式也很重要。閱讀這些文檔可以讓您以更輕鬆的、麻煩更少的
方式將更改合併到內核。
以下是每位開發人員都應閱讀的基本指南:
.. toctree::
:maxdepth: 1
howto
code-of-conduct
code-of-conduct-interpretation
submitting-patches
programming-language
coding-style
development-process
email-clients
license-rules
kernel-enforcement-statement
kernel-driver-statement
其它大多數開發人員感興趣的社區指南:
.. toctree::
:maxdepth: 1
submitting-drivers
submit-checklist
stable-api-nonsense
stable-kernel-rules
management-style
embargoed-hardware-issues
這些是一些總體性技術指南,由於不大好分類而放在這裡:
.. toctree::
:maxdepth: 1
magic-number
volatile-considered-harmful
.. only:: subproject and html
目錄
====
* :ref:`genindex`
.. SPDX-License-Identifier: GPL-2.0
.. _zh_process_statement_driver:
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/kernel-driver-statement.rst <process_statement_driver>`
:Translator: Alex Shi <alex.shi@linux.alibaba.com>
Hu Haowen <src.res@email.cn>
內核驅動聲明
------------
關於Linux內核模塊的立場聲明
===========================
我們,以下署名的Linux內核開發人員,認爲任何封閉源Linux內核模塊或驅動程序都是
有害的和不可取的。我們已經一再發現它們對Linux用戶,企業和更大的Linux生態系統
有害。這樣的模塊否定了Linux開發模型的開放性,穩定性,靈活性和可維護性,並使
他們的用戶無法使用Linux社區的專業知識。提供閉源內核模塊的供應商迫使其客戶
放棄Linux的主要優勢或選擇新的供應商。因此,爲了充分利用開源所提供的成本節省和
共享支持優勢,我們敦促供應商採取措施,以開源內核代碼在Linux上爲其客戶提供支持。
我們只爲自己說話,而不是我們今天可能會爲之工作,過去或將來會爲之工作的任何公司。
- Dave Airlie
- Nick Andrew
- Jens Axboe
- Ralf Baechle
- Felipe Balbi
- Ohad Ben-Cohen
- Muli Ben-Yehuda
- Jiri Benc
- Arnd Bergmann
- Thomas Bogendoerfer
- Vitaly Bordug
- James Bottomley
- Josh Boyer
- Neil Brown
- Mark Brown
- David Brownell
- Michael Buesch
- Franck Bui-Huu
- Adrian Bunk
- François Cami
- Ralph Campbell
- Luiz Fernando N. Capitulino
- Mauro Carvalho Chehab
- Denis Cheng
- Jonathan Corbet
- Glauber Costa
- Alan Cox
- Magnus Damm
- Ahmed S. Darwish
- Robert P. J. Day
- Hans de Goede
- Arnaldo Carvalho de Melo
- Helge Deller
- Jean Delvare
- Mathieu Desnoyers
- Sven-Thorsten Dietrich
- Alexey Dobriyan
- Daniel Drake
- Alex Dubov
- Randy Dunlap
- Michael Ellerman
- Pekka Enberg
- Jan Engelhardt
- Mark Fasheh
- J. Bruce Fields
- Larry Finger
- Jeremy Fitzhardinge
- Mike Frysinger
- Kumar Gala
- Robin Getz
- Liam Girdwood
- Jan-Benedict Glaw
- Thomas Gleixner
- Brice Goglin
- Cyrill Gorcunov
- Andy Gospodarek
- Thomas Graf
- Krzysztof Halasa
- Harvey Harrison
- Stephen Hemminger
- Michael Hennerich
- Tejun Heo
- Benjamin Herrenschmidt
- Kristian Høgsberg
- Henrique de Moraes Holschuh
- Marcel Holtmann
- Mike Isely
- Takashi Iwai
- Olof Johansson
- Dave Jones
- Jesper Juhl
- Matthias Kaehlcke
- Kenji Kaneshige
- Jan Kara
- Jeremy Kerr
- Russell King
- Olaf Kirch
- Roel Kluin
- Hans-Jürgen Koch
- Auke Kok
- Peter Korsgaard
- Jiri Kosina
- Aaro Koskinen
- Mariusz Kozlowski
- Greg Kroah-Hartman
- Michael Krufky
- Aneesh Kumar
- Clemens Ladisch
- Christoph Lameter
- Gunnar Larisch
- Anders Larsen
- Grant Likely
- John W. Linville
- Yinghai Lu
- Tony Luck
- Pavel Machek
- Matt Mackall
- Paul Mackerras
- Roland McGrath
- Patrick McHardy
- Kyle McMartin
- Paul Menage
- Thierry Merle
- Eric Miao
- Akinobu Mita
- Ingo Molnar
- James Morris
- Andrew Morton
- Paul Mundt
- Oleg Nesterov
- Luca Olivetti
- S.Çağlar Onur
- Pierre Ossman
- Keith Owens
- Venkatesh Pallipadi
- Nick Piggin
- Nicolas Pitre
- Evgeniy Polyakov
- Richard Purdie
- Mike Rapoport
- Sam Ravnborg
- Gerrit Renker
- Stefan Richter
- David Rientjes
- Luis R. Rodriguez
- Stefan Roese
- Francois Romieu
- Rami Rosen
- Stephen Rothwell
- Maciej W. Rozycki
- Mark Salyzyn
- Yoshinori Sato
- Deepak Saxena
- Holger Schurig
- Amit Shah
- Yoshihiro Shimoda
- Sergei Shtylyov
- Kay Sievers
- Sebastian Siewior
- Rik Snel
- Jes Sorensen
- Alexey Starikovskiy
- Alan Stern
- Timur Tabi
- Hirokazu Takata
- Eliezer Tamir
- Eugene Teo
- Doug Thompson
- FUJITA Tomonori
- Dmitry Torokhov
- Marcelo Tosatti
- Steven Toth
- Theodore Tso
- Matthias Urlichs
- Geert Uytterhoeven
- Arjan van de Ven
- Ivo van Doorn
- Rik van Riel
- Wim Van Sebroeck
- Hans Verkuil
- Horst H. von Brand
- Dmitri Vorobiev
- Anton Vorontsov
- Daniel Walker
- Johannes Weiner
- Harald Welte
- Matthew Wilcox
- Dan J. Williams
- Darrick J. Wong
- David Woodhouse
- Chris Wright
- Bryan Wu
- Rafael J. Wysocki
- Herbert Xu
- Vlad Yasevich
- Peter Zijlstra
- Bartlomiej Zolnierkiewicz
.. SPDX-License-Identifier: GPL-2.0
.. _tw_process_statement_kernel:
.. include:: ../disclaimer-zh_TW.rst
:Original: :ref:`Documentation/process/kernel-enforcement-statement.rst <process_statement_kernel>`
:Translator: Alex Shi <alex.shi@linux.alibaba.com>
Hu Haowen <src.res@email.cn>
Linux 內核執行聲明
------------------
作爲Linux內核的開發人員,我們對如何使用我們的軟體以及如何實施軟體許可證有著
濃厚的興趣。遵守GPL-2.0的互惠共享義務對我們軟體和社區的長期可持續性至關重要。
雖然有權強制執行對我們社區的貢獻中的單獨版權權益,但我們有共同的利益,即確保
個人強制執行行動的方式有利於我們的社區,不會對我們軟體生態系統的健康和增長
產生意外的負面影響。爲了阻止無益的執法行動,我們同意代表我們自己和我們版權
利益的任何繼承人對Linux內核用戶作出以下符合我們開發社區最大利益的承諾:
儘管有GPL-2.0的終止條款,我們同意,採用以下GPL-3.0條款作爲我們許可證下的
附加許可,作爲任何對許可證下權利的非防禦性主張,這符合我們開發社區的最佳
利益。
但是,如果您停止所有違反本許可證的行爲,則您從特定版權持有人處獲得的
許可證將被恢復:(a)暫時恢復,除非版權持有人明確並最終終止您的許可證;
以及(b)永久恢復, 如果版權持有人未能在你終止違反後60天內以合理方式
通知您違反本許可證的行爲,則永久恢復您的許可證。
此外,如果版權所有者以某種合理的方式通知您違反了本許可,這是您第一次
從該版權所有者處收到違反本許可的通知(對於任何作品),並且您在收到通知
後的30天內糾正違規行爲。則您從特定版權所有者處獲得的許可將永久恢復.
我們提供這些保證的目的是鼓勵更多地使用該軟體。我們希望公司和個人使用、修改和
分發此軟體。我們希望以公開和透明的方式與用戶合作,以消除我們對法規遵從性或強制
執行的任何不確定性,這些不確定性可能會限制我們軟體的採用。我們將法律行動視爲
最後手段,只有在其他社區努力未能解決這一問題時才採取行動。
最後,一旦一個不合規問題得到解決,我們希望用戶會感到歡迎,加入我們爲之努力的
這個項目。共同努力,我們會更強大。
除了下面提到的以外,我們只爲自己說話,而不是爲今天、過去或將來可能爲之工作的
任何公司說話。
- Laura Abbott
- Bjorn Andersson (Linaro)
- Andrea Arcangeli
- Neil Armstrong
- Jens Axboe
- Pablo Neira Ayuso
- Khalid Aziz
- Ralf Baechle
- Felipe Balbi
- Arnd Bergmann
- Ard Biesheuvel
- Tim Bird
- Paolo Bonzini
- Christian Borntraeger
- Mark Brown (Linaro)
- Paul Burton
- Javier Martinez Canillas
- Rob Clark
- Kees Cook (Google)
- Jonathan Corbet
- Dennis Dalessandro
- Vivien Didelot (Savoir-faire Linux)
- Hans de Goede
- Mel Gorman (SUSE)
- Sven Eckelmann
- Alex Elder (Linaro)
- Fabio Estevam
- Larry Finger
- Bhumika Goyal
- Andy Gross
- Juergen Gross
- Shawn Guo
- Ulf Hansson
- Stephen Hemminger (Microsoft)
- Tejun Heo
- Rob Herring
- Masami Hiramatsu
- Michal Hocko
- Simon Horman
- Johan Hovold (Hovold Consulting AB)
- Christophe JAILLET
- Olof Johansson
- Lee Jones (Linaro)
- Heiner Kallweit
- Srinivas Kandagatla
- Jan Kara
- Shuah Khan (Samsung)
- David Kershner
- Jaegeuk Kim
- Namhyung Kim
- Colin Ian King
- Jeff Kirsher
- Greg Kroah-Hartman (Linux Foundation)
- Christian König
- Vinod Koul
- Krzysztof Kozlowski
- Viresh Kumar
- Aneesh Kumar K.V
- Julia Lawall
- Doug Ledford
- Chuck Lever (Oracle)
- Daniel Lezcano
- Shaohua Li
- Xin Long
- Tony Luck
- Catalin Marinas (Arm Ltd)
- Mike Marshall
- Chris Mason
- Paul E. McKenney
- Arnaldo Carvalho de Melo
- David S. Miller
- Ingo Molnar
- Kuninori Morimoto
- Trond Myklebust
- Martin K. Petersen (Oracle)
- Borislav Petkov
- Jiri Pirko
- Josh Poimboeuf
- Sebastian Reichel (Collabora)
- Guenter Roeck
- Joerg Roedel
- Leon Romanovsky
- Steven Rostedt (VMware)
- Frank Rowand
- Ivan Safonov
- Anna Schumaker
- Jes Sorensen
- K.Y. Srinivasan
- David Sterba (SUSE)
- Heiko Stuebner
- Jiri Kosina (SUSE)
- Willy Tarreau
- Dmitry Torokhov
- Linus Torvalds
- Thierry Reding
- Rik van Riel
- Luis R. Rodriguez
- Geert Uytterhoeven (Glider bvba)
- Eduardo Valentin (Amazon.com)
- Daniel Vetter
- Linus Walleij
- Richard Weinberger
- Dan Williams
- Rafael J. Wysocki
- Arvind Yadav
- Masahiro Yamada
- Wei Yongjun
- Lv Zheng
- Marc Zyngier (Arm Ltd)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment