162306a36Sopenharmony_ci.. raw:: latex 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci \kerneldocCJKoff 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciNOTE: 662306a36Sopenharmony_ciThis is a version of Documentation/process/howto.rst translated into Japanese. 762306a36Sopenharmony_ciThis document is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com> 862306a36Sopenharmony_ciIf you find any difference between this document and the original file or 962306a36Sopenharmony_cia problem with the translation, please contact the maintainer of this file. 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciPlease also note that the purpose of this file is to be easier to 1262306a36Sopenharmony_ciread for non English (read: Japanese) speakers and is not intended as 1362306a36Sopenharmony_cia fork. So if you have any comments or updates for this file, please 1462306a36Sopenharmony_citry to update the original English file first. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci---------------------------------- 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci.. raw:: latex 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci \kerneldocCJKon 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciこの文書は、 2362306a36Sopenharmony_ciDocumentation/process/howto.rst 2462306a36Sopenharmony_ciの和訳です。 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci翻訳者: Tsugikazu Shibata <tshibata@ab.jp.nec.com> 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci---------------------------------- 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciLinux カーネル開発のやり方 3162306a36Sopenharmony_ci========================== 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciこれは上のトピック( Linux カーネル開発のやり方)の重要な事柄を網羅した 3462306a36Sopenharmony_ciドキュメントです。ここには Linux カーネル開発者になるための方法とLinux 3562306a36Sopenharmony_ciカーネル開発コミュニティと共に活動するやり方を学ぶ方法が含まれています。 3662306a36Sopenharmony_ciカーネルプログラミングに関する技術的な項目に関することは何も含めないよ 3762306a36Sopenharmony_ciうにしていますが、カーネル開発者となるための正しい方向に向かう手助けに 3862306a36Sopenharmony_ciなります。 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciもし、このドキュメントのどこかが古くなっていた場合には、このドキュメント 4162306a36Sopenharmony_ciの最後にリストしたメンテナにパッチを送ってください。 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciはじめに 4462306a36Sopenharmony_ci--------- 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ciあなたは Linux カーネルの開発者になる方法を学びたいのでしょうか? そ 4762306a36Sopenharmony_ciれとも上司から「このデバイスの Linux ドライバを書くように」と言われた 4862306a36Sopenharmony_ciのかもしれません。この文書の目的は、あなたが踏むべき手順と、コミュニティ 4962306a36Sopenharmony_ciと一緒にうまく働くヒントを書き下すことで、あなたが知るべき全てのことを 5062306a36Sopenharmony_ci教えることです。また、このコミュニティがなぜ今うまくまわっているのかと 5162306a36Sopenharmony_ciいう理由も説明しようと試みています。 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ciカーネルは少量のアーキテクチャ依存部分がアセンブリ言語で書かれている以 5462306a36Sopenharmony_ci外の大部分は C 言語で書かれています。C言語をよく理解していることはカー 5562306a36Sopenharmony_ciネル開発に必要です。低レベルのアーキテクチャ開発をするのでなければ、 5662306a36Sopenharmony_ci(どんなアーキテクチャでも)アセンブリ(訳注: 言語)は必要ありません。以下 5762306a36Sopenharmony_ciの本は、C 言語の十分な知識や何年もの経験に取って代わるものではありませ 5862306a36Sopenharmony_ciんが、少なくともリファレンスとしては良い本です。 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall] 6162306a36Sopenharmony_ci - 『プログラミング言語C第2版』(B.W. カーニハン/D.M. リッチー著 石田晴久訳) [共立出版] 6262306a36Sopenharmony_ci - "Practical C Programming" by Steve Oualline [O'Reilly] 6362306a36Sopenharmony_ci - 『C実践プログラミング第3版』(Steve Oualline著 望月康司監訳 谷口功訳) [オライリージャパン] 6462306a36Sopenharmony_ci - "C: A Reference Manual" by Harbison and Steele [Prentice Hall] 6562306a36Sopenharmony_ci - 『新・詳説 C 言語 H&S リファレンス』 (サミュエル P ハービソン/ガイ L スティール共著 斉藤 信男監訳)[ソフトバンク] 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ciカーネルは GNU C と GNU ツールチェインを使って書かれています。カーネル 6862306a36Sopenharmony_ciは ISO C11 仕様に準拠して書く一方で、標準には無い言語拡張を多く使って 6962306a36Sopenharmony_ciいます。カーネルは標準 C ライブラリに依存しない、C 言語非依存環境です。 7062306a36Sopenharmony_ciそのため、C の標準の中で使えないものもあります。特に任意の long long 7162306a36Sopenharmony_ciの除算や浮動小数点は使えません。カーネルがツールチェインや C 言語拡張 7262306a36Sopenharmony_ciに置いている前提がどうなっているのかわかりにくいことが時々あり、また、 7362306a36Sopenharmony_ci残念なことに決定的なリファレンスは存在しません。情報を得るには、gcc の 7462306a36Sopenharmony_ciinfo ページ( info gcc )を見てください。 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ciあなたは既存の開発コミュニティと一緒に作業する方法を学ぼうとしているこ 7762306a36Sopenharmony_ciとに思い出してください。そのコミュニティは、コーディング、スタイル、開 7862306a36Sopenharmony_ci発手順について高度な標準を持つ、多様な人の集まりです。地理的に分散した 7962306a36Sopenharmony_ci大規模なチームに対してもっともうまくいくとわかったことをベースにしなが 8062306a36Sopenharmony_ciら、これらの標準は長い時間をかけて築かれてきました。これらはきちんと文 8162306a36Sopenharmony_ci書化されていますから、事前にこれらの標準について事前にできるだけたくさ 8262306a36Sopenharmony_ciん学んでください。また皆があなたやあなたの会社のやり方に合わせてくれる 8362306a36Sopenharmony_ciと思わないでください。 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci法的問題 8662306a36Sopenharmony_ci-------- 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciLinux カーネルのソースコードは GPL ライセンスの下でリリースされていま 8962306a36Sopenharmony_ciす。ソースツリーのメインディレクトリにある COPYING のファイルを見てく 9062306a36Sopenharmony_ciださい。Linux カーネルのライセンスルールとソースコード内の 9162306a36Sopenharmony_ci`SPDX <https://spdx.org/>`_ 識別子の使い方は 9262306a36Sopenharmony_ci:ref:`Documentation/process/license-rules.rst <kernel_licensing>` 9362306a36Sopenharmony_ciに説明されています。 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ciもしライセンスについてさらに質問があれば、 9662306a36Sopenharmony_ciLinux Kernel メーリングリストに質問するのではなく、どうぞ 9762306a36Sopenharmony_ci法律家に相談してください。メーリングリストの人達は法律家ではなく、法的 9862306a36Sopenharmony_ci問題については彼らの声明はあてにするべきではありません。 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ciGPL に関する共通の質問や回答については、以下を参照してください- 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci https://www.gnu.org/licenses/gpl-faq.html 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ciドキュメント 10562306a36Sopenharmony_ci------------ 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciLinux カーネルソースツリーは幅広い範囲のドキュメントを含んでおり、それ 10862306a36Sopenharmony_ciらはカーネルコミュニティと会話する方法を学ぶのに非常に貴重なものです。 10962306a36Sopenharmony_ci新しい機能がカーネルに追加される場合、その機能の使い方について説明した 11062306a36Sopenharmony_ci新しいドキュメントファイルも追加することを勧めます。 11162306a36Sopenharmony_ciカーネルの変更が、カーネルがユーザ空間に公開しているインターフェイスの 11262306a36Sopenharmony_ci変更を引き起こす場合、その変更を説明するマニュアルページのパッチや情報 11362306a36Sopenharmony_ciをマニュアルページのメンテナ mtk.manpages@gmail.com に送り、CC を 11462306a36Sopenharmony_cilinux-api@vger.kernel.org に送ることを勧めます。 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci以下はカーネルソースツリーに含まれている読んでおくべきファイルの一覧で 11762306a36Sopenharmony_ciす- 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci :ref:`Documentation/admin-guide/README.rst <readme>` 12062306a36Sopenharmony_ci このファイルは Linuxカーネルの簡単な背景とカーネルを設定(訳注 12162306a36Sopenharmony_ci configure )し、生成(訳注 build )するために必要なことは何かが書かれ 12262306a36Sopenharmony_ci ています。 カーネルに関して初めての人はここからスタートすると良い 12362306a36Sopenharmony_ci でしょう。 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci :ref:`Documentation/process/changes.rst <changes>` 12662306a36Sopenharmony_ci このファイルはカーネルをうまく生成(訳注 build )し、走らせるのに最 12762306a36Sopenharmony_ci 小限のレベルで必要な数々のソフトウェアパッケージの一覧を示してい 12862306a36Sopenharmony_ci ます。 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci :ref:`Documentation/process/coding-style.rst <codingstyle>` 13162306a36Sopenharmony_ci これは Linux カーネルのコーディングスタイルと背景にある理由を記述 13262306a36Sopenharmony_ci しています。全ての新しいコードはこのドキュメントにあるガイドライン 13362306a36Sopenharmony_ci に従っていることを期待されています。大部分のメンテナはこれらのルー 13462306a36Sopenharmony_ci ルに従っているものだけを受け付け、多くの人は正しいスタイルのコード 13562306a36Sopenharmony_ci だけをレビューします。 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci :ref:`Documentation/process/submitting-patches.rst <codingstyle>` 13862306a36Sopenharmony_ci このファイルには、どうやってうまくパッチを作って投稿するかにつ 13962306a36Sopenharmony_ci いて非常に詳しく書かれており、以下を含みます (これだけに限らない 14062306a36Sopenharmony_ci けれども) 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci - Email に含むこと 14362306a36Sopenharmony_ci - Email の形式 14462306a36Sopenharmony_ci - だれに送るか 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci これらのルールに従えばうまくいくことを保証することではありません 14762306a36Sopenharmony_ci が (すべてのパッチは内容とスタイルについて精査を受けるので)、 14862306a36Sopenharmony_ci ルールに従わなければ間違いなくうまくいかないでしょう。 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci この他にパッチを作る方法についてのよくできた記述は- 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci "The Perfect Patch" 15362306a36Sopenharmony_ci https://www.ozlabs.org/~akpm/stuff/tpp.txt 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci "Linux kernel patch submission format" 15662306a36Sopenharmony_ci https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci :ref:`Documentation/process/stable-api-nonsense.rst <stable_api_nonsense>` 15962306a36Sopenharmony_ci このファイルはカーネルの中に不変の API を持たないことにした意識的 16062306a36Sopenharmony_ci な決断の背景にある理由について書かれています。以下のようなことを含 16162306a36Sopenharmony_ci んでいます- 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci - サブシステムとの間に層を作ること(コンパチビリティのため?) 16462306a36Sopenharmony_ci - オペレーティングシステム間のドライバの移植性 16562306a36Sopenharmony_ci - カーネルソースツリーの素早い変更を遅らせる(もしくは素早い変更を妨げる) 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci このドキュメントは Linux 開発の思想を理解するのに非常に重要です。 16862306a36Sopenharmony_ci そして、他のOSでの開発者が Linux に移る時にとても重要です。 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci :ref:`Documentation/process/security-bugs.rst <securitybugs>` 17162306a36Sopenharmony_ci もし Linux カーネルでセキュリティ問題を発見したように思ったら、こ 17262306a36Sopenharmony_ci のドキュメントのステップに従ってカーネル開発者に連絡し、問題解決を 17362306a36Sopenharmony_ci 支援してください。 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci :ref:`Documentation/process/management-style.rst <managementstyle>` 17662306a36Sopenharmony_ci このドキュメントは Linux カーネルのメンテナ達がどう行動するか、 17762306a36Sopenharmony_ci 彼らの手法の背景にある共有されている精神について記述しています。こ 17862306a36Sopenharmony_ci れはカーネル開発の初心者なら(もしくは、単に興味があるだけの人でも) 17962306a36Sopenharmony_ci 重要です。なぜならこのドキュメントは、カーネルメンテナ達の独特な 18062306a36Sopenharmony_ci 行動についての多くの誤解や混乱を解消するからです。 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>` 18362306a36Sopenharmony_ci このファイルはどのように stable カーネルのリリースが行われるかのルー 18462306a36Sopenharmony_ci ルが記述されています。そしてこれらのリリースの中のどこかで変更を取 18562306a36Sopenharmony_ci り入れてもらいたい場合に何をすれば良いかが示されています。 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci :Ref:`Documentation/process/kernel-docs.rst <kernel_docs>` 18862306a36Sopenharmony_ci カーネル開発に付随する外部ドキュメントのリストです。もしあなたが探 18962306a36Sopenharmony_ci しているものがカーネル内のドキュメントでみつからなかった場合、この 19062306a36Sopenharmony_ci リストをあたってみてください。 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci :ref:`Documentation/process/applying-patches.rst <applying_patches>` 19362306a36Sopenharmony_ci パッチとはなにか、パッチをどうやって様々なカーネルの開発ブランチに 19462306a36Sopenharmony_ci 適用するのかについて正確に記述した良い入門書です。 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ciカーネルはソースコードそのものや、このファイルのようなリストラクチャー 19762306a36Sopenharmony_ciドテキストマークアップ(ReST)から自動的に生成可能な多数のドキュメントを 19862306a36Sopenharmony_ciもっています。これにはカーネル内APIの完全な記述や、正しくロックをかけ 19962306a36Sopenharmony_ciるための規則などが含まれます。 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ciこれら全てのドキュメントを PDF や HTML で生成するには以下を実行します - :: 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci make pdfdocs 20462306a36Sopenharmony_ci make htmldocs 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ciそれぞれメインカーネルのソースディレクトリから実行します。 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ciReSTマークアップを使ったドキュメントは Documentation/outputに生成され 20962306a36Sopenharmony_ciます。Latex とePub 形式で生成するには - :: 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci make latexdocs 21262306a36Sopenharmony_ci make epubdocs 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ciカーネル開発者になるには 21562306a36Sopenharmony_ci------------------------ 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ciもしあなたが、Linux カーネル開発について何も知らないのならば、 21862306a36Sopenharmony_ciKernelNewbies プロジェクトを見るべきです 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci https://kernelnewbies.org 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ciこのサイトには役に立つメーリングリストがあり、基本的なカーネル開発に関 22362306a36Sopenharmony_ciするほとんどどんな種類の質問もできます (既に回答されているようなことを 22462306a36Sopenharmony_ci聞く前にまずはアーカイブを調べてください)。またここには、リアルタイム 22562306a36Sopenharmony_ciで質問を聞くことができる IRC チャネルや、Linuxカーネルの開発に関して学 22662306a36Sopenharmony_ciぶのに便利なたくさんの役に立つドキュメントがあります。 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ciWeb サイトには、コードの構成、サブシステム、現在存在するプロジェクト 22962306a36Sopenharmony_ci(ツリーにあるもの無いものの両方)の基本的な管理情報があります。ここには、 23062306a36Sopenharmony_ciまた、カーネルのコンパイルのやり方やパッチの当て方などの間接的な基本情 23162306a36Sopenharmony_ci報も記述されています。 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ciあなたがどこからスタートして良いかわからないが、Linux カーネル開発コミュ 23462306a36Sopenharmony_ciニティに参加して何かすることをさがしているのであれば、Linux kernel 23562306a36Sopenharmony_ciJanitor's プロジェクトにいけば良いでしょう - 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci https://kernelnewbies.org/KernelJanitors 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ciここはそのようなスタートをするのにうってつけの場所です。ここには、 24062306a36Sopenharmony_ciLinux カーネルソースツリーの中に含まれる、きれいにし、修正しなければな 24162306a36Sopenharmony_ciらない、単純な問題のリストが記述されています。このプロジェクトに関わる 24262306a36Sopenharmony_ci開発者と一緒に作業することで、あなたのパッチを Linuxカーネルツリーに入 24362306a36Sopenharmony_ciれるための基礎を学ぶことができ、そしてもしあなたがまだアイディアを持っ 24462306a36Sopenharmony_ciていない場合には、次にやる仕事の方向性が見えてくるかもしれません。 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ci実際に Linux カーネルのコードについて修正を加える前に、どうやってその 24762306a36Sopenharmony_ciコードが動作するのかを理解することが必要です。そのためには、特別なツー 24862306a36Sopenharmony_ciルの助けを借りてでも、それを直接よく読むことが最良の方法です(ほとんど 24962306a36Sopenharmony_ciのトリッキーな部分は十分にコメントしてありますから)。そういうツールで 25062306a36Sopenharmony_ci特におすすめなのは、Linux クロスリファレンスプロジェクトです。これは、 25162306a36Sopenharmony_ci自己参照方式で、索引がついた web 形式で、ソースコードを参照することが 25262306a36Sopenharmony_ciできます。この最新の素晴しいカーネルコードのリポジトリは以下で見つかり 25362306a36Sopenharmony_ciます - 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci https://elixir.bootlin.com/ 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci開発プロセス 25862306a36Sopenharmony_ci------------ 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ciLinux カーネルの開発プロセスは現在幾つかの異なるメインカーネル「ブラン 26162306a36Sopenharmony_ciチ」と多数のサブシステム毎のカーネルブランチから構成されます。これらの 26262306a36Sopenharmony_ciブランチとは - 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci - Linus のメインラインツリー 26562306a36Sopenharmony_ci - メジャー番号をまたぐ数本の安定版ツリー 26662306a36Sopenharmony_ci - サブシステム毎のカーネルツリー 26762306a36Sopenharmony_ci - 統合テストのための linux-next カーネルツリー 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ciメインラインツリー 27062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~ 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ciメインラインツリーは Linus Torvalds によってメンテナンスされ、 27362306a36Sopenharmony_cihttps://kernel.org のリポジトリに存在します。 27462306a36Sopenharmony_ciこの開発プロセスは以下のとおり - 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci - 新しいカーネルがリリースされた直後に、2週間の特別期間が設けられ、 27762306a36Sopenharmony_ci この期間中に、メンテナ達は Linus に大きな差分を送ることができます。 27862306a36Sopenharmony_ci このような差分は通常 linux-next カーネルに数週間含まれてきたパッチです。 27962306a36Sopenharmony_ci 大きな変更は git(カーネルのソース管理ツール、詳細は 28062306a36Sopenharmony_ci http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ 28162306a36Sopenharmony_ci チファイルの形式のまま送るのでも十分です。 28262306a36Sopenharmony_ci - 2週間後 -rc1 カーネルがリリースされ、新しいカーネルを可能な限り堅牢に 28362306a36Sopenharmony_ci することに焦点が移ります。この期間のパッチのほとんどは退行を修正する 28462306a36Sopenharmony_ci ものとなります。以前から存在していたバグは退行には当たらないため、 28562306a36Sopenharmony_ci 送るのは重要な修正だけにしてください。 28662306a36Sopenharmony_ci 新しいドライバ (もしくはファイルシステム) のパッチは 28762306a36Sopenharmony_ci -rc1 の後で受け付けられることもあることを覚えておいてください。な 28862306a36Sopenharmony_ci ぜなら、変更が独立していて、追加されたコードの外の領域に影響を与え 28962306a36Sopenharmony_ci ない限り、退行のリスクは無いからです。-rc1 がリリースされた後、 29062306a36Sopenharmony_ci Linus へパッチを送付するのに git を使うこともできますが、パッチは 29162306a36Sopenharmony_ci レビューのために、パブリックなメーリングリストへも同時に送る必要が 29262306a36Sopenharmony_ci あります。 29362306a36Sopenharmony_ci - 新しい -rc は Linus が、最新の git ツリーがテスト目的であれば十分 29462306a36Sopenharmony_ci に安定した状態にあると判断したときにリリースされます。目標は毎週新 29562306a36Sopenharmony_ci しい -rc カーネルをリリースすることです。 29662306a36Sopenharmony_ci - このプロセスはカーネルが 「準備ができた」と考えられるまで継続しま 29762306a36Sopenharmony_ci す。このプロセスはだいたい 6週間継続します。 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ciAndrew Morton が Linux-kernel メーリングリストにカーネルリリースについ 30062306a36Sopenharmony_ciて書いたことをここで言っておくことは価値があります - 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci *「カーネルがいつリリースされるかは誰も知りません。なぜなら、 30362306a36Sopenharmony_ci これは現実に認識されたバグの状況によりリリースされるのであり、 30462306a36Sopenharmony_ci 前もって決められた計画によってリリースされるものではないから 30562306a36Sopenharmony_ci です。」* 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ciメジャー番号をまたぐ数本の安定版ツリー 30862306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ciバージョン番号が3つの数字に分かれているカーネルは -stable カーネルです。 31162306a36Sopenharmony_ciこれには最初の2つのバージョン番号の数字に対応した、 31262306a36Sopenharmony_ciメジャーメインラインリリースで見つかったセキュリティ問題や 31362306a36Sopenharmony_ci重大な後戻りに対する比較的小さい重要な修正が含まれます。 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ciメジャー安定版シリーズのそれぞれのリリースは 31662306a36Sopenharmony_ciバージョン番号の3番目を増加させ、最初の2つの番号は同じ値を保ちます。 31762306a36Sopenharmony_ci 31862306a36Sopenharmony_ciこれは、開発/実験的バージョンのテストに協力することに興味が無く、最新 31962306a36Sopenharmony_ciの安定したカーネルを使いたいユーザに推奨するブランチです。 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci安定版ツリーは"stable" チーム <stable@vger.kernel.org> でメンテされており、 32262306a36Sopenharmony_ci必要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差 32362306a36Sopenharmony_ciし迫った問題がなければもう少し長くなることもあります。セキュリティ関 32462306a36Sopenharmony_ci連の問題の場合はこれに対してだいたいの場合、すぐにリリースがされます。 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciカーネルツリーに入っている、 32762306a36Sopenharmony_ciDocumentation/process/stable-kernel-rules.rst ファイルにはどのような種 32862306a36Sopenharmony_ci類の変更が -stable ツリーに受け入れ可能か、またリリースプロセスがどう 32962306a36Sopenharmony_ci動くかが記述されています。 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ciサブシステム毎のカーネルツリー 33262306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ciそれぞれのカーネルサブシステムのメンテナ達は --- そして多くのカーネル 33562306a36Sopenharmony_ciサブシステムの開発者達も --- 各自の最新の開発状況をソースリポジトリに 33662306a36Sopenharmony_ci公開しています。そのため、自分とは異なる領域のカーネルで何が起きている 33762306a36Sopenharmony_ciかを他の人が見られるようになっています。開発が早く進んでいる領域では、 33862306a36Sopenharmony_ci開発者は自身の投稿がどのサブシステムカーネルツリーを元にしているか質問 33962306a36Sopenharmony_ciされるので、その投稿とすでに進行中の他の作業との衝突が避けられます。 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci大部分のこれらのリポジトリは git ツリーです。しかしその他の SCM や 34262306a36Sopenharmony_ciquilt シリーズとして公開されているパッチキューも使われています。これら 34362306a36Sopenharmony_ciのサブシステムリポジトリのアドレスは MAINTAINERS ファイルにリストされ 34462306a36Sopenharmony_ciています。これらの多くは https://git.kernel.org/ で参照することができま 34562306a36Sopenharmony_ciす。 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci提案されたパッチがこのようなサブシステムツリーにコミットされる前に、メー 34862306a36Sopenharmony_ciリングリストで事前にレビューにかけられます(以下の対応するセクションを 34962306a36Sopenharmony_ci参照)。いくつかのカーネルサブシステムでは、このレビューは patchworkと 35062306a36Sopenharmony_ciいうツールによって追跡されます。Patchwork は web インターフェイスによっ 35162306a36Sopenharmony_ciてパッチ投稿の表示、パッチへのコメント付けや改訂などができ、そしてメン 35262306a36Sopenharmony_ciテナはパッチに対して、レビュー中、受付済み、拒否というようなマークをつ 35362306a36Sopenharmony_ciけることができます。大部分のこれらの patchwork のサイトは 35462306a36Sopenharmony_cihttps://patchwork.kernel.org/ でリストされています。 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci統合テストのための linux-next カーネルツリー 35762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ciサブシステムツリーの更新内容がメインラインツリーにマージされる 36062306a36Sopenharmony_ci前に、それらは統合テストされる必要があります。この目的のため、実質的に 36162306a36Sopenharmony_ci全サブシステムツリーからほぼ毎日プルされてできる特別なテスト用のリポジ 36262306a36Sopenharmony_ciトリが存在します- 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ci https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ciこのやり方によって、linux-next は次のマージ機会でどんなものがメイン 36762306a36Sopenharmony_ciラインにマージされるか、おおまかな展望を提供します。 36862306a36Sopenharmony_cilinux-next の実行テストを行う冒険好きなテスターは大いに歓迎されます。 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ciバグレポート 37162306a36Sopenharmony_ci------------- 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ciメインカーネルソースディレクトリにあるファイル 37462306a36Sopenharmony_ci'Documentation/admin-guide/reporting-issues.rst' 37562306a36Sopenharmony_ciは、カーネルバグらしきものの報告の仕方、および、カーネル開発者が問題を 37662306a36Sopenharmony_ci追跡する際の手がかりとなる情報についての詳細を説明しています。 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ciバグレポートの管理 37962306a36Sopenharmony_ci------------------- 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ciあなたのハッキングのスキルを訓練する最高の方法のひとつに、他人がレポー 38262306a36Sopenharmony_ciトしたバグを修正することがあります。あなたがカーネルをより安定化させる 38362306a36Sopenharmony_ciこに寄与するということだけでなく、あなたは 現実の問題を修正することを 38462306a36Sopenharmony_ci学び、自分のスキルも強化でき、また他の開発者があなたの存在に気がつきま 38562306a36Sopenharmony_ciす。バグを修正することは、多くの開発者の中から自分が功績をあげる最善の 38662306a36Sopenharmony_ci道です、なぜなら多くの人は他人のバグの修正に時間を浪費することを好まな 38762306a36Sopenharmony_ciいからです。 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ciすでにレポートされたバグの作業をするためには、興味のあるサブシステムを 39062306a36Sopenharmony_ci見つけ、そのサブシステムのバグの報告先 (多くの場合メーリングリスト、 39162306a36Sopenharmony_ci稀にバグトラッカー) を MAINTAINERS ファイルで調べてください。 39262306a36Sopenharmony_ciそのアーカイブで最近の報告を検索し、できそうなものに力を貸してください。 39362306a36Sopenharmony_cihttps://bugzilla.kernel.org でバグ報告を調べようとする人もいるでしょう。 39462306a36Sopenharmony_ciこれは限られた一部のサブシステムのバグ報告と追跡に利用されるとともに、 39562306a36Sopenharmony_ciとりわけ、カーネル全体に対するバグの登録先となっています。 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ciメーリングリスト 39862306a36Sopenharmony_ci---------------- 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci上のいくつかのドキュメントで述べていますが、コアカーネル開発者の大部分 40162306a36Sopenharmony_ciは Linux kernel メーリングリストに参加しています。このリストの登録/脱 40262306a36Sopenharmony_ci退の方法については以下を参照してください- 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ci http://vger.kernel.org/vger-lists.html#linux-kernel 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ciこのメーリングリストのアーカイブは web 上の多数の場所に存在します。こ 40762306a36Sopenharmony_ciれらのアーカイブを探すにはサーチエンジンを使いましょう。例えば- 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ci https://lore.kernel.org/lkml/ 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ciリストに投稿する前にすでにその話題がアーカイブに存在するかどうかを検索 41262306a36Sopenharmony_ciすることを是非やってください。多数の事がすでに詳細に渡って議論されてお 41362306a36Sopenharmony_ciり、アーカイブにのみ記録されています。 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ci大部分のカーネルサブシステムも自分の個別の開発を実施するメーリングリス 41662306a36Sopenharmony_ciトを持っています。個々のグループがどんなリストを持っているかは、 41762306a36Sopenharmony_ciMAINTAINERS ファイルにリストがありますので参照してください。 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_ci多くのリストは kernel.org でホストされています。これらの情報は以下にあ 42062306a36Sopenharmony_ciります - 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci http://vger.kernel.org/vger-lists.html 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ciメーリングリストを使う場合、良い行動習慣に従うようにしましょう。少し安っ 42562306a36Sopenharmony_ciぽいが、以下の URL は上のリスト(や他のリスト)で会話する場合のシンプル 42662306a36Sopenharmony_ciなガイドラインを示しています - 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci http://www.albion.com/netiquette/ 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ciもし複数の人があなたのメールに返事をした場合、CC: で受ける人のリストは 43162306a36Sopenharmony_ciだいぶ多くなるでしょう。正当な理由がない限り、CC: リストから誰かを削除 43262306a36Sopenharmony_ciをしないように、また、メーリングリストのアドレスだけにリプライすること 43362306a36Sopenharmony_ciのないようにしましょう。1つは送信者から、もう1つはリストからのように、 43462306a36Sopenharmony_ciメールを2回受けることになってもそれに慣れ、しゃれたメールヘッダーを追 43562306a36Sopenharmony_ci加してこの状態を変えようとしないように。人々はそのようなことは好みませ 43662306a36Sopenharmony_ciん。 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ci今までのメールでのやりとりとその間のあなたの発言はそのまま残し、 43962306a36Sopenharmony_ci"John Kernelhacker wrote ...:" の行をあなたのリプライの先頭行にして、 44062306a36Sopenharmony_ciメールの先頭でなく、各引用行の間にあなたの言いたいことを追加するべきで 44162306a36Sopenharmony_ciす。 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ciもしパッチをメールに付ける場合は、 44462306a36Sopenharmony_ciDocumentation/process/submitting-patches.rst に提示されているように、そ 44562306a36Sopenharmony_ciれは プレーンな可読テキストにすることを忘れないようにしましょう。カー 44662306a36Sopenharmony_ciネル開発者は 添付や圧縮したパッチを扱いたがりません。彼らはあなたのパッ 44762306a36Sopenharmony_ciチの行毎にコメントを入れたいので、そうするしかありません。あなたのメー 44862306a36Sopenharmony_ciルプログラムが空白やタブを圧縮しないように確認しましょう。最初の良いテ 44962306a36Sopenharmony_ciストとしては、自分にメールを送ってみて、そのパッチを自分で当ててみるこ 45062306a36Sopenharmony_ciとです。もしそれがうまく行かないなら、あなたのメールプログラムを直して 45162306a36Sopenharmony_ciもらうか、正しく動くように変えるべきです。 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_ci何をおいても、他の購読者に対する敬意を表すことを忘れないでください。 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ciコミュニティと共に働くこと 45662306a36Sopenharmony_ci-------------------------- 45762306a36Sopenharmony_ci 45862306a36Sopenharmony_ciカーネルコミュニティのゴールは可能なかぎり最高のカーネルを提供すること 45962306a36Sopenharmony_ciです。あなたがパッチを受け入れてもらうために投稿した場合、それは、技術 46062306a36Sopenharmony_ci的メリットだけがレビューされます。その際、あなたは何を予想すべきでしょ 46162306a36Sopenharmony_ciうか? 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ci - 批判 46462306a36Sopenharmony_ci - コメント 46562306a36Sopenharmony_ci - 変更の要求 46662306a36Sopenharmony_ci - パッチの正当性の証明要求 46762306a36Sopenharmony_ci - 沈黙 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_ci思い出してください、これはあなたのパッチをカーネルに入れる話です。あな 47062306a36Sopenharmony_ciたは、あなたのパッチに対する批判とコメントを受け入れるべきで、それらを 47162306a36Sopenharmony_ci技術的レベルで評価して、パッチを再作成するか、なぜそれらの変更をすべき 47262306a36Sopenharmony_ciでないかを明確で簡潔な理由の説明を提供してください。もし、あなたのパッ 47362306a36Sopenharmony_ciチに何も反応がない場合、たまにはメールの山に埋もれて見逃され、あなたの 47462306a36Sopenharmony_ci投稿が忘れられてしまうこともあるので、数日待って再度投稿してください。 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_ciあなたがやるべきでないことは? 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci - 質問なしにあなたのパッチが受け入れられると想像すること 47962306a36Sopenharmony_ci - 守りに入ること 48062306a36Sopenharmony_ci - コメントを無視すること 48162306a36Sopenharmony_ci - 要求された変更を何もしないでパッチを出し直すこと 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_ci可能な限り最高の技術的解決を求めているコミュニティでは、パッチがどのく 48462306a36Sopenharmony_ciらい有益なのかについては常に異なる意見があります。あなたは協調的である 48562306a36Sopenharmony_ciべきですし、また、あなたのアイディアをカーネルに対してうまく合わせるよ 48662306a36Sopenharmony_ciうにすることが望まれています。もしくは、最低限あなたのアイディアがそれ 48762306a36Sopenharmony_ciだけの価値があるとすすんで証明するようにしなければなりません。 48862306a36Sopenharmony_ci正しい解決に向かって進もうという意志がある限り、間違うことがあっても許 48962306a36Sopenharmony_ci容されることを忘れないでください。 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_ciあなたの最初のパッチに単に 1ダースもの修正を求めるリストの返答になるこ 49262306a36Sopenharmony_ciとも普通のことです。これはあなたのパッチが受け入れられないということで 49362306a36Sopenharmony_ciは **ありません**、そしてあなた自身に反対することを意味するのでも **あ 49462306a36Sopenharmony_ciりません**。単に自分のパッチに対して指摘された問題を全て修正して再送す 49562306a36Sopenharmony_ciれば良いのです。 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci 49862306a36Sopenharmony_ciカーネルコミュニティと企業組織のちがい 49962306a36Sopenharmony_ci----------------------------------------------------------------- 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ciカーネルコミュニティは大部分の伝統的な会社の開発環境とは異ったやり方で 50262306a36Sopenharmony_ci動いています。以下は問題を避けるためにできると良いことのリストです。 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_ci あなたの提案する変更について言うときのうまい言い方 - 50562306a36Sopenharmony_ci 50662306a36Sopenharmony_ci - "これは複数の問題を解決します" 50762306a36Sopenharmony_ci - "これは2000行のコードを削除します" 50862306a36Sopenharmony_ci - "以下のパッチは、私が言おうとしていることを説明するものです" 50962306a36Sopenharmony_ci - "私はこれを5つの異なるアーキテクチャでテストしたのですが..." 51062306a36Sopenharmony_ci - "以下は一連の小さなパッチ群ですが..." 51162306a36Sopenharmony_ci - "これは典型的なマシンでの性能を向上させます..." 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ci やめた方が良い悪い言い方 - 51462306a36Sopenharmony_ci 51562306a36Sopenharmony_ci - "このやり方で AIX/ptx/Solaris ではできたので、できるはずだ..." 51662306a36Sopenharmony_ci - "私はこれを20年もの間やってきた、だから..." 51762306a36Sopenharmony_ci - "これは私の会社が金儲けをするために必要だ" 51862306a36Sopenharmony_ci - "これは我々のエンタープライズ向け商品ラインのためである" 51962306a36Sopenharmony_ci - "これは私が自分のアイディアを記述した、1000ページの設計資料である" 52062306a36Sopenharmony_ci - "私はこれについて、6ケ月作業している..." 52162306a36Sopenharmony_ci - "以下は ... に関する5000行のパッチです" 52262306a36Sopenharmony_ci - "私は現在のぐちゃぐちゃを全部書き直した、それが以下です..." 52362306a36Sopenharmony_ci - "私は〆切がある、そのためこのパッチは今すぐ適用される必要がある" 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_ciカーネルコミュニティが大部分の伝統的なソフトウェアエンジニアリングの労 52662306a36Sopenharmony_ci働環境と異なるもう一つの点は、やりとりに顔を合わせないということです。 52762306a36Sopenharmony_ciemail と irc を第一のコミュニケーションの形とする一つの利点は、性別や 52862306a36Sopenharmony_ci民族の差別がないことです。Linux カーネルの職場環境は女性や少数民族を受 52962306a36Sopenharmony_ci容します。なぜなら、email アドレスによってのみあなたが認識されるからで 53062306a36Sopenharmony_ciす。 53162306a36Sopenharmony_ci国際的な側面からも活動領域を均等にするようにします。なぜならば、あなた 53262306a36Sopenharmony_ciは人の名前で性別を想像できないからです。ある男性が アンドレアという名 53362306a36Sopenharmony_ci前で、女性の名前は パット かもしれません (訳注 Andrea は米国では女性、 53462306a36Sopenharmony_ciそれ以外(欧州など)では男性名として使われることが多い。同様に、Pat は 53562306a36Sopenharmony_ciPatricia (主に女性名)や Patrick (主に男性名)の略称)。 53662306a36Sopenharmony_ciLinux カーネルの活動をして、意見を表明したことがある大部分の女性は、前 53762306a36Sopenharmony_ci向きな経験をもっています。 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_ci言葉の壁は英語が得意でない一部の人には問題になります。メーリングリスト 54062306a36Sopenharmony_ciの中で、きちんとアイディアを交換するには、相当うまく英語を操れる必要が 54162306a36Sopenharmony_ciあることもあります。そのため、自分のメールを送る前に英語で意味が通じて 54262306a36Sopenharmony_ciいるかをチェックすることをお薦めします。 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci変更を分割する 54562306a36Sopenharmony_ci-------------- 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_ciLinux カーネルコミュニティは、一度に大量のコードの塊を喜んで受容するこ 54862306a36Sopenharmony_ciとはありません。変更は正確に説明される必要があり、議論され、小さい、個 54962306a36Sopenharmony_ci別の部分に分割する必要があります。これはこれまで多くの会社がやり慣れて 55062306a36Sopenharmony_ciきたことと全く正反対のことです。あなたのプロポーザルは、開発プロセスのと 55162306a36Sopenharmony_ciても早い段階から紹介されるべきです。そうすれば あなたは自分のやってい 55262306a36Sopenharmony_ciることにフィードバックを得られます。これは、コミュニティからみれば、あ 55362306a36Sopenharmony_ciなたが彼らと一緒にやっているように感じられ、単にあなたの提案する機能の 55462306a36Sopenharmony_ciゴミ捨て場として使っているのではない、と感じられるでしょう。 55562306a36Sopenharmony_ciしかし、一度に 50 もの email をメーリングリストに送りつけるようなことは 55662306a36Sopenharmony_ciやってはいけません、あなたのパッチ群はいつもどんな時でもそれよりは小さ 55762306a36Sopenharmony_ciくなければなりません。 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ciパッチを分割する理由は以下 - 56062306a36Sopenharmony_ci 56162306a36Sopenharmony_ci1) 小さいパッチはあなたのパッチが適用される見込みを大きくします、カー 56262306a36Sopenharmony_ci ネルの人達はパッチが正しいかどうかを確認する時間や労力をかけないか 56362306a36Sopenharmony_ci らです。5行のパッチはメンテナがたった1秒見るだけで適用できます。 56462306a36Sopenharmony_ci しかし、500行のパッチは、正しいことをレビューするのに数時間かかるか 56562306a36Sopenharmony_ci もしれません(時間はパッチのサイズなどにより指数関数に比例してかかり 56662306a36Sopenharmony_ci ます) 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ci 小さいパッチは何かあったときにデバッグもとても簡単になります。パッ 56962306a36Sopenharmony_ci チを1個1個取り除くのは、とても大きなパッチを当てた後に(かつ、何かお 57062306a36Sopenharmony_ci かしくなった後で)解剖するのに比べればとても簡単です。 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_ci2) 小さいパッチを送るだけでなく、送るまえに、書き直して、シンプルにす 57362306a36Sopenharmony_ci る(もしくは、単に順番を変えるだけでも)ことも、とても重要です。 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_ci以下はカーネル開発者の Al Viro のたとえ話です - 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_ci *"生徒の数学の宿題を採点する先生のことを考えてみてください、 57862306a36Sopenharmony_ci 先生は生徒が解に到達するまでの試行錯誤を見たいとは思わないでし 57962306a36Sopenharmony_ci ょう。先生は簡潔な最高の解を見たいのです。良い生徒はこれを知っ 58062306a36Sopenharmony_ci ており、そして最終解の前の中間作業を提出することは決してないの 58162306a36Sopenharmony_ci です* 58262306a36Sopenharmony_ci 58362306a36Sopenharmony_ci *カーネル開発でもこれは同じです。メンテナ達とレビューア達は、 58462306a36Sopenharmony_ci 問題を解決する解の背後になる思考プロセスを見たいとは思いません。 58562306a36Sopenharmony_ci 彼らは単純であざやかな解決方法を見たいのです。"* 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ciあざやかな解を説明するのと、コミュニティと共に仕事をし、未解決の仕事を 58862306a36Sopenharmony_ci議論することのバランスをキープするのは難しいかもしれません。ですから、 58962306a36Sopenharmony_ci開発プロセスの早期段階で改善のためのフィードバックをもらうようにするの 59062306a36Sopenharmony_ciも良いですが、変更点を小さい部分に分割して全体ではまだ完成していない仕 59162306a36Sopenharmony_ci事を(部分的に)取り込んでもらえるようにすることも良いことです。 59262306a36Sopenharmony_ci 59362306a36Sopenharmony_ciまた、でき上がっていないものや、"将来直す" ようなパッチを、本流に含め 59462306a36Sopenharmony_ciてもらうように送っても、それは受け付けられないことを理解してください。 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_ciあなたの変更を正当化する 59762306a36Sopenharmony_ci------------------------ 59862306a36Sopenharmony_ci 59962306a36Sopenharmony_ciあなたのパッチを分割するのと同時に、なぜその変更を追加しなければならな 60062306a36Sopenharmony_ciいかを Linux コミュニティに知らせることはとても重要です。新機能は必要 60162306a36Sopenharmony_ci性と有用性で正当化されなければなりません。 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ciあなたの変更を説明する 60462306a36Sopenharmony_ci---------------------- 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_ciあなたのパッチを送付する場合には、メールの中のテキストで何を言うかにつ 60762306a36Sopenharmony_ciいて、特別に注意を払ってください。この情報はパッチの ChangeLog に使わ 60862306a36Sopenharmony_ciれ、いつも皆がみられるように保管されます。これは次のような項目を含め、 60962306a36Sopenharmony_ciパッチを完全に記述するべきです - 61062306a36Sopenharmony_ci 61162306a36Sopenharmony_ci - なぜ変更が必要か 61262306a36Sopenharmony_ci - パッチ全体の設計アプローチ 61362306a36Sopenharmony_ci - 実装の詳細 61462306a36Sopenharmony_ci - テスト結果 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ciこれについて全てがどのようにあるべきかについての詳細は、以下のドキュメ 61762306a36Sopenharmony_ciントの ChangeLog セクションを見てください - 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_ci "The Perfect Patch" 62062306a36Sopenharmony_ci https://www.ozlabs.org/~akpm/stuff/tpp.txt 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ciこれらはどれも、実行することが時にはとても困難です。これらの例を完璧に 62362306a36Sopenharmony_ci実施するには数年かかるかもしれません。これは継続的な改善のプロセスであ 62462306a36Sopenharmony_ciり、多くの忍耐と決意を必要とするものです。でも諦めないで、実現は可能で 62562306a36Sopenharmony_ciす。多数の人がすでにできていますし、彼らも最初はあなたと同じところから 62662306a36Sopenharmony_ciスタートしたのですから。 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_ci 63062306a36Sopenharmony_ci 63162306a36Sopenharmony_ci---------- 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ciPaolo Ciarrocchi に感謝、彼は彼の書いた "Development Process" 63462306a36Sopenharmony_ci(https://lwn.net/Articles/94386/) セクションをこのテキストの原型にする 63562306a36Sopenharmony_ciことを許可してくれました。Rundy Dunlap と Gerrit Huizenga はメーリング 63662306a36Sopenharmony_ciリストでやるべきこととやってはいけないことのリストを提供してくれました。 63762306a36Sopenharmony_ci以下の人々のレビュー、コメント、貢献に感謝。 63862306a36Sopenharmony_ciPat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers, 63962306a36Sopenharmony_ciVojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi 64062306a36Sopenharmony_ciKleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, 64162306a36Sopenharmony_ciDavid A. Wheeler, Junio Hamano, Michael Kerrisk, と Alex Shepard 64262306a36Sopenharmony_ci彼らの支援なしでは、このドキュメントはできなかったでしょう。 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_ciMaintainer: Greg Kroah-Hartman <greg@kroah.com> 647