xref: /OK3568_Linux_fs/kernel/Documentation/translations/ja_JP/howto.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunNOTE:
2*4882a593SmuzhiyunThis is a version of Documentation/process/howto.rst translated into Japanese.
3*4882a593SmuzhiyunThis document is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com>
4*4882a593SmuzhiyunIf you find any difference between this document and the original file or
5*4882a593Smuzhiyuna problem with the translation, please contact the maintainer of this file.
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunPlease also note that the purpose of this file is to be easier to
8*4882a593Smuzhiyunread for non English (read: Japanese) speakers and is not intended as
9*4882a593Smuzhiyuna fork. So if you have any comments or updates for this file, please
10*4882a593Smuzhiyuntry to update the original English file first.
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun----------------------------------
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunこの文書は、
15*4882a593SmuzhiyunDocumentation/process/howto.rst
16*4882a593Smuzhiyunの和訳です。
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun翻訳者: Tsugikazu Shibata <tshibata@ab.jp.nec.com>
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun----------------------------------
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunLinux カーネル開発のやり方
23*4882a593Smuzhiyun==========================
24*4882a593Smuzhiyun
25*4882a593Smuzhiyunこれは上のトピック( Linux カーネル開発のやり方)の重要な事柄を網羅した
26*4882a593Smuzhiyunドキュメントです。ここには Linux カーネル開発者になるための方法とLinux
27*4882a593Smuzhiyunカーネル開発コミュニティと共に活動するやり方を学ぶ方法が含まれています。
28*4882a593Smuzhiyunカーネルプログラミングに関する技術的な項目に関することは何も含めないよ
29*4882a593Smuzhiyunうにしていますが、カーネル開発者となるための正しい方向に向かう手助けに
30*4882a593Smuzhiyunなります。
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunもし、このドキュメントのどこかが古くなっていた場合には、このドキュメント
33*4882a593Smuzhiyunの最後にリストしたメンテナにパッチを送ってください。
34*4882a593Smuzhiyun
35*4882a593Smuzhiyunはじめに
36*4882a593Smuzhiyun---------
37*4882a593Smuzhiyun
38*4882a593Smuzhiyunあなたは Linux カーネルの開発者になる方法を学びたいのでしょうか? そ
39*4882a593Smuzhiyunれとも上司から「このデバイスの Linux ドライバを書くように」と言われた
40*4882a593Smuzhiyunのかもしれません。この文書の目的は、あなたが踏むべき手順と、コミュニティ
41*4882a593Smuzhiyunと一緒にうまく働くヒントを書き下すことで、あなたが知るべき全てのことを
42*4882a593Smuzhiyun教えることです。また、このコミュニティがなぜ今うまくまわっているのかと
43*4882a593Smuzhiyunいう理由も説明しようと試みています。
44*4882a593Smuzhiyun
45*4882a593Smuzhiyunカーネルは少量のアーキテクチャ依存部分がアセンブリ言語で書かれている以
46*4882a593Smuzhiyun外の大部分は C 言語で書かれています。C言語をよく理解していることはカー
47*4882a593Smuzhiyunネル開発に必要です。低レベルのアーキテクチャ開発をするのでなければ、
48*4882a593Smuzhiyun(どんなアーキテクチャでも)アセンブリ(訳注: 言語)は必要ありません。以下
49*4882a593Smuzhiyunの本は、C 言語の十分な知識や何年もの経験に取って代わるものではありませ
50*4882a593Smuzhiyunんが、少なくともリファレンスとしては良い本です。
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
53*4882a593Smuzhiyun - 『プログラミング言語C第2版』(B.W. カーニハン/D.M. リッチー著 石田晴久訳) [共立出版]
54*4882a593Smuzhiyun - "Practical C Programming" by Steve Oualline [O'Reilly]
55*4882a593Smuzhiyun - 『C実践プログラミング第3版』(Steve Oualline著 望月康司監訳 谷口功訳) [オライリージャパン]
56*4882a593Smuzhiyun - "C:  A Reference Manual" by Harbison and Steele [Prentice Hall]
57*4882a593Smuzhiyun - 『新・詳説 C 言語 H&S リファレンス』 (サミュエル P ハービソン/ガイ L スティール共著 斉藤 信男監訳)[ソフトバンク]
58*4882a593Smuzhiyun
59*4882a593Smuzhiyunカーネルは GNU C と GNU ツールチェインを使って書かれています。カーネル
60*4882a593Smuzhiyunは ISO C89 仕様に準拠して書く一方で、標準には無い言語拡張を多く使って
61*4882a593Smuzhiyunいます。カーネルは標準 C ライブラリに依存しない、C 言語非依存環境です。
62*4882a593Smuzhiyunそのため、C の標準の中で使えないものもあります。特に任意の long long
63*4882a593Smuzhiyunの除算や浮動小数点は使えません。カーネルがツールチェインや C 言語拡張
64*4882a593Smuzhiyunに置いている前提がどうなっているのかわかりにくいことが時々あり、また、
65*4882a593Smuzhiyun残念なことに決定的なリファレンスは存在しません。情報を得るには、gcc の
66*4882a593Smuzhiyuninfo ページ( info gcc )を見てください。
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunあなたは既存の開発コミュニティと一緒に作業する方法を学ぼうとしているこ
69*4882a593Smuzhiyunとに思い出してください。そのコミュニティは、コーディング、スタイル、開
70*4882a593Smuzhiyun発手順について高度な標準を持つ、多様な人の集まりです。地理的に分散した
71*4882a593Smuzhiyun大規模なチームに対してもっともうまくいくとわかったことをベースにしなが
72*4882a593Smuzhiyunら、これらの標準は長い時間をかけて築かれてきました。これらはきちんと文
73*4882a593Smuzhiyun書化されていますから、事前にこれらの標準について事前にできるだけたくさ
74*4882a593Smuzhiyunん学んでください。また皆があなたやあなたの会社のやり方に合わせてくれる
75*4882a593Smuzhiyunと思わないでください。
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun法的問題
78*4882a593Smuzhiyun--------
79*4882a593Smuzhiyun
80*4882a593SmuzhiyunLinux カーネルのソースコードは GPL ライセンスの下でリリースされていま
81*4882a593Smuzhiyunす。ライセンスの詳細については、ソースツリーのメインディレクトリに存在
82*4882a593Smuzhiyunする、COPYING のファイルを見てください。もしライセンスについてさらに質
83*4882a593Smuzhiyun問があれば、Linux Kernel メーリングリストに質問するのではなく、どうぞ
84*4882a593Smuzhiyun法律家に相談してください。メーリングリストの人達は法律家ではなく、法的
85*4882a593Smuzhiyun問題については彼らの声明はあてにするべきではありません。
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunGPL に関する共通の質問や回答については、以下を参照してください-
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun	https://www.gnu.org/licenses/gpl-faq.html
90*4882a593Smuzhiyun
91*4882a593Smuzhiyunドキュメント
92*4882a593Smuzhiyun------------
93*4882a593Smuzhiyun
94*4882a593SmuzhiyunLinux カーネルソースツリーは幅広い範囲のドキュメントを含んでおり、それ
95*4882a593Smuzhiyunらはカーネルコミュニティと会話する方法を学ぶのに非常に貴重なものです。
96*4882a593Smuzhiyun新しい機能がカーネルに追加される場合、その機能の使い方について説明した
97*4882a593Smuzhiyun新しいドキュメントファイルも追加することを勧めます。
98*4882a593Smuzhiyunカーネルの変更が、カーネルがユーザ空間に公開しているインターフェイスの
99*4882a593Smuzhiyun変更を引き起こす場合、その変更を説明するマニュアルページのパッチや情報
100*4882a593Smuzhiyunをマニュアルページのメンテナ mtk.manpages@gmail.com に送り、CC を
101*4882a593Smuzhiyunlinux-api@vger.kernel.org に送ることを勧めます。
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun以下はカーネルソースツリーに含まれている読んでおくべきファイルの一覧で
104*4882a593Smuzhiyunす-
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun  README
107*4882a593Smuzhiyun    このファイルは Linuxカーネルの簡単な背景とカーネルを設定(訳注
108*4882a593Smuzhiyun    configure )し、生成(訳注 build )するために必要なことは何かが書かれ
109*4882a593Smuzhiyun    ています。 カーネルに関して初めての人はここからスタートすると良い
110*4882a593Smuzhiyun    でしょう。
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun  :ref:`Documentation/process/changes.rst <changes>`
113*4882a593Smuzhiyun    このファイルはカーネルをうまく生成(訳注 build )し、走らせるのに最
114*4882a593Smuzhiyun    小限のレベルで必要な数々のソフトウェアパッケージの一覧を示してい
115*4882a593Smuzhiyun    ます。
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun  :ref:`Documentation/process/coding-style.rst <codingstyle>`
118*4882a593Smuzhiyun    これは Linux カーネルのコーディングスタイルと背景にある理由を記述
119*4882a593Smuzhiyun    しています。全ての新しいコードはこのドキュメントにあるガイドライン
120*4882a593Smuzhiyun    に従っていることを期待されています。大部分のメンテナはこれらのルー
121*4882a593Smuzhiyun    ルに従っているものだけを受け付け、多くの人は正しいスタイルのコード
122*4882a593Smuzhiyun    だけをレビューします。
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun  :ref:`Documentation/process/submitting-patches.rst <codingstyle>` と :ref:`Documentation/process/submitting-drivers.rst <submittingdrivers>`
125*4882a593Smuzhiyun    これらのファイルには、どうやってうまくパッチを作って投稿するかにつ
126*4882a593Smuzhiyun    いて非常に詳しく書かれており、以下を含みます (これだけに限らない
127*4882a593Smuzhiyun    けれども)
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun      - Email に含むこと
130*4882a593Smuzhiyun      - Email の形式
131*4882a593Smuzhiyun      - だれに送るか
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun    これらのルールに従えばうまくいくことを保証することではありません
134*4882a593Smuzhiyun    が (すべてのパッチは内容とスタイルについて精査を受けるので)、
135*4882a593Smuzhiyun    ルールに従わなければ間違いなくうまくいかないでしょう。
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun    この他にパッチを作る方法についてのよくできた記述は-
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun       "The Perfect Patch"
140*4882a593Smuzhiyun		http://www.ozlabs.org/~akpm/stuff/tpp.txt
141*4882a593Smuzhiyun       "Linux kernel patch submission format"
142*4882a593Smuzhiyun		https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun  :ref:`Documentation/process/stable-api-nonsense.rst <stable_api_nonsense>`
145*4882a593Smuzhiyun    このファイルはカーネルの中に不変の API を持たないことにした意識的
146*4882a593Smuzhiyun    な決断の背景にある理由について書かれています。以下のようなことを含
147*4882a593Smuzhiyun    んでいます-
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun      - サブシステムとの間に層を作ること(コンパチビリティのため?)
150*4882a593Smuzhiyun      - オペレーティングシステム間のドライバの移植性
151*4882a593Smuzhiyun      - カーネルソースツリーの素早い変更を遅らせる(もしくは素早い変更を妨げる)
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun    このドキュメントは Linux 開発の思想を理解するのに非常に重要です。
154*4882a593Smuzhiyun    そして、他のOSでの開発者が Linux に移る時にとても重要です。
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun  :ref:`Documentation/admin-guide/security-bugs.rst <securitybugs>`
157*4882a593Smuzhiyun    もし Linux カーネルでセキュリティ問題を発見したように思ったら、こ
158*4882a593Smuzhiyun    のドキュメントのステップに従ってカーネル開発者に連絡し、問題解決を
159*4882a593Smuzhiyun    支援してください。
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun  :ref:`Documentation/process/management-style.rst <managementstyle>`
162*4882a593Smuzhiyun    このドキュメントは Linux カーネルのメンテナ達がどう行動するか、
163*4882a593Smuzhiyun    彼らの手法の背景にある共有されている精神について記述しています。こ
164*4882a593Smuzhiyun    れはカーネル開発の初心者なら(もしくは、単に興味があるだけの人でも)
165*4882a593Smuzhiyun    重要です。なぜならこのドキュメントは、カーネルメンテナ達の独特な
166*4882a593Smuzhiyun    行動についての多くの誤解や混乱を解消するからです。
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun  :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>`
169*4882a593Smuzhiyun    このファイルはどのように stable カーネルのリリースが行われるかのルー
170*4882a593Smuzhiyun    ルが記述されています。そしてこれらのリリースの中のどこかで変更を取
171*4882a593Smuzhiyun    り入れてもらいたい場合に何をすれば良いかが示されています。
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun  :Ref:`Documentation/process/kernel-docs.rst <kernel_docs>`
174*4882a593Smuzhiyun    カーネル開発に付随する外部ドキュメントのリストです。もしあなたが探
175*4882a593Smuzhiyun    しているものがカーネル内のドキュメントでみつからなかった場合、この
176*4882a593Smuzhiyun    リストをあたってみてください。
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun  :ref:`Documentation/process/applying-patches.rst <applying_patches>`
179*4882a593Smuzhiyun    パッチとはなにか、パッチをどうやって様々なカーネルの開発ブランチに
180*4882a593Smuzhiyun    適用するのかについて正確に記述した良い入門書です。
181*4882a593Smuzhiyun
182*4882a593Smuzhiyunカーネルはソースコードそのものや、このファイルのようなリストラクチャー
183*4882a593Smuzhiyunドテキストマークアップ(ReST)から自動的に生成可能な多数のドキュメントを
184*4882a593Smuzhiyunもっています。これにはカーネル内APIの完全な記述や、正しくロックをかけ
185*4882a593Smuzhiyunるための規則などが含まれます。
186*4882a593Smuzhiyun
187*4882a593Smuzhiyunこれら全てのドキュメントを PDF や HTML で生成するには以下を実行します - ::
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun        make pdfdocs
190*4882a593Smuzhiyun        make htmldocs
191*4882a593Smuzhiyun
192*4882a593Smuzhiyunそれぞれメインカーネルのソースディレクトリから実行します。
193*4882a593Smuzhiyun
194*4882a593SmuzhiyunReSTマークアップを使ったドキュメントは Documentation/outputに生成され
195*4882a593Smuzhiyunます。Latex とePub 形式で生成するには - ::
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun        make latexdocs
198*4882a593Smuzhiyun        make epubdocs
199*4882a593Smuzhiyun
200*4882a593Smuzhiyunカーネル開発者になるには
201*4882a593Smuzhiyun------------------------
202*4882a593Smuzhiyun
203*4882a593Smuzhiyunもしあなたが、Linux カーネル開発について何も知らないのならば、
204*4882a593SmuzhiyunKernelNewbies プロジェクトを見るべきです
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun	https://kernelnewbies.org
207*4882a593Smuzhiyun
208*4882a593Smuzhiyunこのサイトには役に立つメーリングリストがあり、基本的なカーネル開発に関
209*4882a593Smuzhiyunするほとんどどんな種類の質問もできます (既に回答されているようなことを
210*4882a593Smuzhiyun聞く前にまずはアーカイブを調べてください)。またここには、リアルタイム
211*4882a593Smuzhiyunで質問を聞くことができる IRC チャネルや、Linuxカーネルの開発に関して学
212*4882a593Smuzhiyunぶのに便利なたくさんの役に立つドキュメントがあります。
213*4882a593Smuzhiyun
214*4882a593SmuzhiyunWeb サイトには、コードの構成、サブシステム、現在存在するプロジェクト
215*4882a593Smuzhiyun(ツリーにあるもの無いものの両方)の基本的な管理情報があります。ここには、
216*4882a593Smuzhiyunまた、カーネルのコンパイルのやり方やパッチの当て方などの間接的な基本情
217*4882a593Smuzhiyun報も記述されています。
218*4882a593Smuzhiyun
219*4882a593Smuzhiyunあなたがどこからスタートして良いかわからないが、Linux カーネル開発コミュ
220*4882a593Smuzhiyunニティに参加して何かすることをさがしているのであれば、Linux kernel
221*4882a593SmuzhiyunJanitor's プロジェクトにいけば良いでしょう -
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun        https://kernelnewbies.org/KernelJanitors
224*4882a593Smuzhiyun
225*4882a593Smuzhiyunここはそのようなスタートをするのにうってつけの場所です。ここには、
226*4882a593SmuzhiyunLinux カーネルソースツリーの中に含まれる、きれいにし、修正しなければな
227*4882a593Smuzhiyunらない、単純な問題のリストが記述されています。このプロジェクトに関わる
228*4882a593Smuzhiyun開発者と一緒に作業することで、あなたのパッチを Linuxカーネルツリーに入
229*4882a593Smuzhiyunれるための基礎を学ぶことができ、そしてもしあなたがまだアイディアを持っ
230*4882a593Smuzhiyunていない場合には、次にやる仕事の方向性が見えてくるかもしれません。
231*4882a593Smuzhiyun
232*4882a593Smuzhiyunもしあなたが、すでにひとまとまりコードを書いていて、カーネルツリーに入
233*4882a593Smuzhiyunれたいと思っていたり、それに関する適切な支援を求めたい場合、カーネルメ
234*4882a593Smuzhiyunンターズプロジェクトはそのような皆さんを助けるためにできました。ここに
235*4882a593Smuzhiyunはメーリングリストがあり、以下から参照できます -
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun	https://selenic.com/mailman/listinfo/kernel-mentors
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun実際に Linux カーネルのコードについて修正を加える前に、どうやってその
240*4882a593Smuzhiyunコードが動作するのかを理解することが必要です。そのためには、特別なツー
241*4882a593Smuzhiyunルの助けを借りてでも、それを直接よく読むことが最良の方法です(ほとんど
242*4882a593Smuzhiyunのトリッキーな部分は十分にコメントしてありますから)。そういうツールで
243*4882a593Smuzhiyun特におすすめなのは、Linux クロスリファレンスプロジェクトです。これは、
244*4882a593Smuzhiyun自己参照方式で、索引がついた web 形式で、ソースコードを参照することが
245*4882a593Smuzhiyunできます。この最新の素晴しいカーネルコードのリポジトリは以下で見つかり
246*4882a593Smuzhiyunます -
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun	https://elixir.bootlin.com/
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun開発プロセス
251*4882a593Smuzhiyun------------
252*4882a593Smuzhiyun
253*4882a593SmuzhiyunLinux カーネルの開発プロセスは現在幾つかの異なるメインカーネル「ブラン
254*4882a593Smuzhiyunチ」と多数のサブシステム毎のカーネルブランチから構成されます。これらの
255*4882a593Smuzhiyunブランチとは -
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun  - メインの 4.x カーネルツリー
258*4882a593Smuzhiyun  - 4.x.y -stable カーネルツリー
259*4882a593Smuzhiyun  - サブシステム毎のカーネルツリーとパッチ
260*4882a593Smuzhiyun  - 統合テストのための 4.x -next カーネルツリー
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun4.x カーネルツリー
263*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun4.x カーネルは Linus Torvalds によってメンテナンスされ、
266*4882a593Smuzhiyunhttps://kernel.orgpub/linux/kernel/v4.x/ ディレクトリに存在します。
267*4882a593Smuzhiyunこの開発プロセスは以下のとおり -
268*4882a593Smuzhiyun
269*4882a593Smuzhiyun  - 新しいカーネルがリリースされた直後に、2週間の特別期間が設けられ、
270*4882a593Smuzhiyun    この期間中に、メンテナ達は Linus に大きな差分を送ることができます。
271*4882a593Smuzhiyun    このような差分は通常 -next カーネルに数週間含まれてきたパッチです。
272*4882a593Smuzhiyun    大きな変更は git(カーネルのソース管理ツール、詳細は
273*4882a593Smuzhiyun    http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ
274*4882a593Smuzhiyun    チファイルの形式のまま送るのでも十分です。
275*4882a593Smuzhiyun  - 2週間後、-rc1 カーネルがリリースされ、この後にはカーネル全体の安定
276*4882a593Smuzhiyun    性に影響をあたえるような新機能は含まない類のパッチしか取り込むこと
277*4882a593Smuzhiyun    はできません。新しいドライバ(もしくはファイルシステム)のパッチは
278*4882a593Smuzhiyun    -rc1 の後で受け付けられることもあることを覚えておいてください。な
279*4882a593Smuzhiyun    ぜなら、変更が独立していて、追加されたコードの外の領域に影響を与え
280*4882a593Smuzhiyun    ない限り、退行のリスクは無いからです。-rc1 がリリースされた後、
281*4882a593Smuzhiyun    Linus へパッチを送付するのに git を使うこともできますが、パッチは
282*4882a593Smuzhiyun    レビューのために、パブリックなメーリングリストへも同時に送る必要が
283*4882a593Smuzhiyun    あります。
284*4882a593Smuzhiyun  - 新しい -rc は Linus が、最新の git ツリーがテスト目的であれば十分
285*4882a593Smuzhiyun    に安定した状態にあると判断したときにリリースされます。目標は毎週新
286*4882a593Smuzhiyun    しい -rc カーネルをリリースすることです。
287*4882a593Smuzhiyun  - このプロセスはカーネルが 「準備ができた」と考えられるまで継続しま
288*4882a593Smuzhiyun    す。このプロセスはだいたい 6週間継続します。
289*4882a593Smuzhiyun
290*4882a593SmuzhiyunAndrew Morton が Linux-kernel メーリングリストにカーネルリリースについ
291*4882a593Smuzhiyunて書いたことをここで言っておくことは価値があります -
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun        *「カーネルがいつリリースされるかは誰も知りません。なぜなら、
294*4882a593Smuzhiyun        これは現実に認識されたバグの状況によりリリースされるのであり、
295*4882a593Smuzhiyun        前もって決められた計画によってリリースされるものではないから
296*4882a593Smuzhiyun        です。」*
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun4.x.y -stable カーネルツリー
299*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~
300*4882a593Smuzhiyun
301*4882a593Smuzhiyunバージョン番号が3つの数字に分かれているカーネルは -stable カーネルです。
302*4882a593Smuzhiyunこれには、4.x カーネルで見つかったセキュリティ問題や重大な後戻りに対す
303*4882a593Smuzhiyunる比較的小さい重要な修正が含まれます。
304*4882a593Smuzhiyun
305*4882a593Smuzhiyunこれは、開発/実験的バージョンのテストに協力することに興味が無く、最新
306*4882a593Smuzhiyunの安定したカーネルを使いたいユーザに推奨するブランチです。
307*4882a593Smuzhiyun
308*4882a593Smuzhiyunもし、4.x.y カーネルが存在しない場合には、番号が一番大きい 4.x が最新
309*4882a593Smuzhiyunの安定版カーネルです。
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun4.x.y は "stable" チーム <stable@vger.kernel.org> でメンテされており、
312*4882a593Smuzhiyun必要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差
313*4882a593Smuzhiyunし迫った問題がなければもう少し長くなることもあります。セキュリティ関
314*4882a593Smuzhiyun連の問題の場合はこれに対してだいたいの場合、すぐにリリースがされます。
315*4882a593Smuzhiyun
316*4882a593Smuzhiyunカーネルツリーに入っている、
317*4882a593SmuzhiyunDocumentation/process/stable-kernel-rules.rst ファイルにはどのような種
318*4882a593Smuzhiyun類の変更が -stable ツリーに受け入れ可能か、またリリースプロセスがどう
319*4882a593Smuzhiyun動くかが記述されています。
320*4882a593Smuzhiyun
321*4882a593Smuzhiyunサブシステム毎のカーネルツリーとパッチ
322*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
323*4882a593Smuzhiyun
324*4882a593Smuzhiyunそれぞれのカーネルサブシステムのメンテナ達は --- そして多くのカーネル
325*4882a593Smuzhiyunサブシステムの開発者達も --- 各自の最新の開発状況をソースリポジトリに
326*4882a593Smuzhiyun公開しています。そのため、自分とは異なる領域のカーネルで何が起きている
327*4882a593Smuzhiyunかを他の人が見られるようになっています。開発が早く進んでいる領域では、
328*4882a593Smuzhiyun開発者は自身の投稿がどのサブシステムカーネルツリーを元にしているか質問
329*4882a593Smuzhiyunされるので、その投稿とすでに進行中の他の作業との衝突が避けられます。
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun大部分のこれらのリポジトリは git ツリーです。しかしその他の SCM や
332*4882a593Smuzhiyunquilt シリーズとして公開されているパッチキューも使われています。これら
333*4882a593Smuzhiyunのサブシステムリポジトリのアドレスは MAINTAINERS ファイルにリストされ
334*4882a593Smuzhiyunています。これらの多くは https://git.kernel.org/ で参照することができま
335*4882a593Smuzhiyunす。
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun提案されたパッチがこのようなサブシステムツリーにコミットされる前に、メー
338*4882a593Smuzhiyunリングリストで事前にレビューにかけられます(以下の対応するセクションを
339*4882a593Smuzhiyun参照)。いくつかのカーネルサブシステムでは、このレビューは patchworkと
340*4882a593Smuzhiyunいうツールによって追跡されます。Patchwork は web インターフェイスによっ
341*4882a593Smuzhiyunてパッチ投稿の表示、パッチへのコメント付けや改訂などができ、そしてメン
342*4882a593Smuzhiyunテナはパッチに対して、レビュー中、受付済み、拒否というようなマークをつ
343*4882a593Smuzhiyunけることができます。大部分のこれらの patchwork のサイトは
344*4882a593Smuzhiyunhttps://patchwork.kernel.org/ でリストされています。
345*4882a593Smuzhiyun
346*4882a593Smuzhiyun統合テストのための 4.x -next カーネルツリー
347*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
348*4882a593Smuzhiyun
349*4882a593Smuzhiyunサブシステムツリーの更新内容がメインラインの 4.x ツリーにマージされる
350*4882a593Smuzhiyun前に、それらは統合テストされる必要があります。この目的のため、実質的に
351*4882a593Smuzhiyun全サブシステムツリーからほぼ毎日プルされてできる特別なテスト用のリポジ
352*4882a593Smuzhiyunトリが存在します-
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun       https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
355*4882a593Smuzhiyun
356*4882a593Smuzhiyunこのやり方によって、-next カーネルは次のマージ機会でどんなものがメイン
357*4882a593Smuzhiyunラインカーネルにマージされるか、おおまかなの展望を提供します。-next カー
358*4882a593Smuzhiyunネルの実行テストを行う冒険好きなテスターは大いに歓迎されます。
359*4882a593Smuzhiyun
360*4882a593Smuzhiyunバグレポート
361*4882a593Smuzhiyun-------------
362*4882a593Smuzhiyun
363*4882a593Smuzhiyunhttps://bugzilla.kernel.org は Linux カーネル開発者がカーネルのバグを追跡する
364*4882a593Smuzhiyun場所です。ユーザは見つけたバグの全てをこのツールで報告すべきです。どう
365*4882a593Smuzhiyunkernel bugzilla を使うかの詳細は、以下を参照してください -
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun	https://bugzilla.kernel.org/page.cgi?id=faq.html
368*4882a593Smuzhiyun
369*4882a593Smuzhiyunメインカーネルソースディレクトリにあるファイル
370*4882a593Smuzhiyunadmin-guide/reporting-bugs.rstはカーネルバグらしいものについてどうレポー
371*4882a593Smuzhiyunトするかの良いテンプレートであり、問題の追跡を助けるためにカーネル開発
372*4882a593Smuzhiyun者にとってどんな情報が必要なのかの詳細が書かれています。
373*4882a593Smuzhiyun
374*4882a593Smuzhiyunバグレポートの管理
375*4882a593Smuzhiyun-------------------
376*4882a593Smuzhiyun
377*4882a593Smuzhiyunあなたのハッキングのスキルを訓練する最高の方法のひとつに、他人がレポー
378*4882a593Smuzhiyunトしたバグを修正することがあります。あなたがカーネルをより安定化させる
379*4882a593Smuzhiyunこに寄与するということだけでなく、あなたは 現実の問題を修正することを
380*4882a593Smuzhiyun学び、自分のスキルも強化でき、また他の開発者があなたの存在に気がつきま
381*4882a593Smuzhiyunす。バグを修正することは、多くの開発者の中から自分が功績をあげる最善の
382*4882a593Smuzhiyun道です、なぜなら多くの人は他人のバグの修正に時間を浪費することを好まな
383*4882a593Smuzhiyunいからです。
384*4882a593Smuzhiyun
385*4882a593Smuzhiyunすでにレポートされたバグのために仕事をするためには、
386*4882a593Smuzhiyunhttps://bugzilla.kernel.org に行ってください。もし今後のバグレポートに
387*4882a593Smuzhiyunついてアドバイスを受けたいのであれば、bugme-new メーリングリスト(新し
388*4882a593Smuzhiyunいバグレポートだけがここにメールされる) または bugme-janitor メーリン
389*4882a593Smuzhiyunグリスト(bugzilla の変更毎にここにメールされる)を購読できます。
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun	https://lists.linux-foundation.org/mailman/listinfo/bugme-new
392*4882a593Smuzhiyun
393*4882a593Smuzhiyun	https://lists.linux-foundation.org/mailman/listinfo/bugme-janitors
394*4882a593Smuzhiyun
395*4882a593Smuzhiyunメーリングリスト
396*4882a593Smuzhiyun----------------
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun上のいくつかのドキュメントで述べていますが、コアカーネル開発者の大部分
399*4882a593Smuzhiyunは Linux kernel メーリングリストに参加しています。このリストの登録/脱
400*4882a593Smuzhiyun退の方法については以下を参照してください-
401*4882a593Smuzhiyun
402*4882a593Smuzhiyun	http://vger.kernel.org/vger-lists.html#linux-kernel
403*4882a593Smuzhiyun
404*4882a593Smuzhiyunこのメーリングリストのアーカイブは web 上の多数の場所に存在します。こ
405*4882a593Smuzhiyunれらのアーカイブを探すにはサーチエンジンを使いましょう。例えば-
406*4882a593Smuzhiyun
407*4882a593Smuzhiyun	http://dir.gmane.org/gmane.linux.kernel
408*4882a593Smuzhiyun
409*4882a593Smuzhiyunリストに投稿する前にすでにその話題がアーカイブに存在するかどうかを検索
410*4882a593Smuzhiyunすることを是非やってください。多数の事がすでに詳細に渡って議論されてお
411*4882a593Smuzhiyunり、アーカイブにのみ記録されています。
412*4882a593Smuzhiyun
413*4882a593Smuzhiyun大部分のカーネルサブシステムも自分の個別の開発を実施するメーリングリス
414*4882a593Smuzhiyunトを持っています。個々のグループがどんなリストを持っているかは、
415*4882a593SmuzhiyunMAINTAINERS ファイルにリストがありますので参照してください。
416*4882a593Smuzhiyun
417*4882a593Smuzhiyun多くのリストは kernel.org でホストされています。これらの情報は以下にあ
418*4882a593Smuzhiyunります -
419*4882a593Smuzhiyun
420*4882a593Smuzhiyun	http://vger.kernel.org/vger-lists.html
421*4882a593Smuzhiyun
422*4882a593Smuzhiyunメーリングリストを使う場合、良い行動習慣に従うようにしましょう。少し安っ
423*4882a593Smuzhiyunぽいが、以下の URL は上のリスト(や他のリスト)で会話する場合のシンプル
424*4882a593Smuzhiyunなガイドラインを示しています -
425*4882a593Smuzhiyun
426*4882a593Smuzhiyun	http://www.albion.com/netiquette/
427*4882a593Smuzhiyun
428*4882a593Smuzhiyunもし複数の人があなたのメールに返事をした場合、CC: で受ける人のリストは
429*4882a593Smuzhiyunだいぶ多くなるでしょう。正当な理由がない限り、CC: リストから誰かを削除
430*4882a593Smuzhiyunをしないように、また、メーリングリストのアドレスだけにリプライすること
431*4882a593Smuzhiyunのないようにしましょう。1つは送信者から、もう1つはリストからのように、
432*4882a593Smuzhiyunメールを2回受けることになってもそれに慣れ、しゃれたメールヘッダーを追
433*4882a593Smuzhiyun加してこの状態を変えようとしないように。人々はそのようなことは好みませ
434*4882a593Smuzhiyunん。
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun今までのメールでのやりとりとその間のあなたの発言はそのまま残し、
437*4882a593Smuzhiyun"John Kernelhacker wrote ...:" の行をあなたのリプライの先頭行にして、
438*4882a593Smuzhiyunメールの先頭でなく、各引用行の間にあなたの言いたいことを追加するべきで
439*4882a593Smuzhiyunす。
440*4882a593Smuzhiyun
441*4882a593Smuzhiyunもしパッチをメールに付ける場合は、
442*4882a593SmuzhiyunDocumentation/process/submitting-patches.rst に提示されているように、そ
443*4882a593Smuzhiyunれは プレーンな可読テキストにすることを忘れないようにしましょう。カー
444*4882a593Smuzhiyunネル開発者は 添付や圧縮したパッチを扱いたがりません。彼らはあなたのパッ
445*4882a593Smuzhiyunチの行毎にコメントを入れたいので、そうするしかありません。あなたのメー
446*4882a593Smuzhiyunルプログラムが空白やタブを圧縮しないように確認しましょう。最初の良いテ
447*4882a593Smuzhiyunストとしては、自分にメールを送ってみて、そのパッチを自分で当ててみるこ
448*4882a593Smuzhiyunとです。もしそれがうまく行かないなら、あなたのメールプログラムを直して
449*4882a593Smuzhiyunもらうか、正しく動くように変えるべきです。
450*4882a593Smuzhiyun
451*4882a593Smuzhiyun何をおいても、他の購読者に対する敬意を表すことを忘れないでください。
452*4882a593Smuzhiyun
453*4882a593Smuzhiyunコミュニティと共に働くこと
454*4882a593Smuzhiyun--------------------------
455*4882a593Smuzhiyun
456*4882a593Smuzhiyunカーネルコミュニティのゴールは可能なかぎり最高のカーネルを提供すること
457*4882a593Smuzhiyunです。あなたがパッチを受け入れてもらうために投稿した場合、それは、技術
458*4882a593Smuzhiyun的メリットだけがレビューされます。その際、あなたは何を予想すべきでしょ
459*4882a593Smuzhiyunうか?
460*4882a593Smuzhiyun
461*4882a593Smuzhiyun  - 批判
462*4882a593Smuzhiyun  - コメント
463*4882a593Smuzhiyun  - 変更の要求
464*4882a593Smuzhiyun  - パッチの正当性の証明要求
465*4882a593Smuzhiyun  - 沈黙
466*4882a593Smuzhiyun
467*4882a593Smuzhiyun思い出してください、これはあなたのパッチをカーネルに入れる話です。あな
468*4882a593Smuzhiyunたは、あなたのパッチに対する批判とコメントを受け入れるべきで、それらを
469*4882a593Smuzhiyun技術的レベルで評価して、パッチを再作成するか、なぜそれらの変更をすべき
470*4882a593Smuzhiyunでないかを明確で簡潔な理由の説明を提供してください。もし、あなたのパッ
471*4882a593Smuzhiyunチに何も反応がない場合、たまにはメールの山に埋もれて見逃され、あなたの
472*4882a593Smuzhiyun投稿が忘れられてしまうこともあるので、数日待って再度投稿してください。
473*4882a593Smuzhiyun
474*4882a593Smuzhiyunあなたがやるべきでないことは?
475*4882a593Smuzhiyun
476*4882a593Smuzhiyun  - 質問なしにあなたのパッチが受け入れられると想像すること
477*4882a593Smuzhiyun  - 守りに入ること
478*4882a593Smuzhiyun  - コメントを無視すること
479*4882a593Smuzhiyun  - 要求された変更を何もしないでパッチを出し直すこと
480*4882a593Smuzhiyun
481*4882a593Smuzhiyun可能な限り最高の技術的解決を求めているコミュニティでは、パッチがどのく
482*4882a593Smuzhiyunらい有益なのかについては常に異なる意見があります。あなたは協調的である
483*4882a593Smuzhiyunべきですし、また、あなたのアイディアをカーネルに対してうまく合わせるよ
484*4882a593Smuzhiyunうにすることが望まれています。もしくは、最低限あなたのアイディアがそれ
485*4882a593Smuzhiyunだけの価値があるとすすんで証明するようにしなければなりません。
486*4882a593Smuzhiyun正しい解決に向かって進もうという意志がある限り、間違うことがあっても許
487*4882a593Smuzhiyun容されることを忘れないでください。
488*4882a593Smuzhiyun
489*4882a593Smuzhiyunあなたの最初のパッチに単に 1ダースもの修正を求めるリストの返答になるこ
490*4882a593Smuzhiyunとも普通のことです。これはあなたのパッチが受け入れられないということで
491*4882a593Smuzhiyunは **ありません**、そしてあなた自身に反対することを意味するのでも **あ
492*4882a593Smuzhiyunりません**。単に自分のパッチに対して指摘された問題を全て修正して再送す
493*4882a593Smuzhiyunれば良いのです。
494*4882a593Smuzhiyun
495*4882a593Smuzhiyun
496*4882a593Smuzhiyunカーネルコミュニティと企業組織のちがい
497*4882a593Smuzhiyun-----------------------------------------------------------------
498*4882a593Smuzhiyun
499*4882a593Smuzhiyunカーネルコミュニティは大部分の伝統的な会社の開発環境とは異ったやり方で
500*4882a593Smuzhiyun動いています。以下は問題を避けるためにできると良いことのリストです。
501*4882a593Smuzhiyun
502*4882a593Smuzhiyun  あなたの提案する変更について言うときのうまい言い方 -
503*4882a593Smuzhiyun
504*4882a593Smuzhiyun    - "これは複数の問題を解決します"
505*4882a593Smuzhiyun    - "これは2000行のコードを削除します"
506*4882a593Smuzhiyun    - "以下のパッチは、私が言おうとしていることを説明するものです"
507*4882a593Smuzhiyun    - "私はこれを5つの異なるアーキテクチャでテストしたのですが..."
508*4882a593Smuzhiyun    - "以下は一連の小さなパッチ群ですが..."
509*4882a593Smuzhiyun    - "これは典型的なマシンでの性能を向上させます..."
510*4882a593Smuzhiyun
511*4882a593Smuzhiyun  やめた方が良い悪い言い方 -
512*4882a593Smuzhiyun
513*4882a593Smuzhiyun    - "このやり方で AIX/ptx/Solaris ではできたので、できるはずだ..."
514*4882a593Smuzhiyun    - "私はこれを20年もの間やってきた、だから..."
515*4882a593Smuzhiyun    - "これは私の会社が金儲けをするために必要だ"
516*4882a593Smuzhiyun    - "これは我々のエンタープライズ向け商品ラインのためである"
517*4882a593Smuzhiyun    - "これは私が自分のアイディアを記述した、1000ページの設計資料である"
518*4882a593Smuzhiyun    - "私はこれについて、6ケ月作業している..."
519*4882a593Smuzhiyun    - "以下は ... に関する5000行のパッチです"
520*4882a593Smuzhiyun    - "私は現在のぐちゃぐちゃを全部書き直した、それが以下です..."
521*4882a593Smuzhiyun    - "私は〆切がある、そのためこのパッチは今すぐ適用される必要がある"
522*4882a593Smuzhiyun
523*4882a593Smuzhiyunカーネルコミュニティが大部分の伝統的なソフトウェアエンジニアリングの労
524*4882a593Smuzhiyun働環境と異なるもう一つの点は、やりとりに顔を合わせないということです。
525*4882a593Smuzhiyunemail と irc を第一のコミュニケーションの形とする一つの利点は、性別や
526*4882a593Smuzhiyun民族の差別がないことです。Linux カーネルの職場環境は女性や少数民族を受
527*4882a593Smuzhiyun容します。なぜなら、email アドレスによってのみあなたが認識されるからで
528*4882a593Smuzhiyunす。
529*4882a593Smuzhiyun国際的な側面からも活動領域を均等にするようにします。なぜならば、あなた
530*4882a593Smuzhiyunは人の名前で性別を想像できないからです。ある男性が アンドレアという名
531*4882a593Smuzhiyun前で、女性の名前は パット かもしれません (訳注 Andrea は米国では女性、
532*4882a593Smuzhiyunそれ以外(欧州など)では男性名として使われることが多い。同様に、Pat は
533*4882a593SmuzhiyunPatricia (主に女性名)や Patrick (主に男性名)の略称)。
534*4882a593SmuzhiyunLinux カーネルの活動をして、意見を表明したことがある大部分の女性は、前
535*4882a593Smuzhiyun向きな経験をもっています。
536*4882a593Smuzhiyun
537*4882a593Smuzhiyun言葉の壁は英語が得意でない一部の人には問題になります。メーリングリスト
538*4882a593Smuzhiyunの中で、きちんとアイディアを交換するには、相当うまく英語を操れる必要が
539*4882a593Smuzhiyunあることもあります。そのため、自分のメールを送る前に英語で意味が通じて
540*4882a593Smuzhiyunいるかをチェックすることをお薦めします。
541*4882a593Smuzhiyun
542*4882a593Smuzhiyun変更を分割する
543*4882a593Smuzhiyun--------------
544*4882a593Smuzhiyun
545*4882a593SmuzhiyunLinux カーネルコミュニティは、一度に大量のコードの塊を喜んで受容するこ
546*4882a593Smuzhiyunとはありません。変更は正確に説明される必要があり、議論され、小さい、個
547*4882a593Smuzhiyun別の部分に分割する必要があります。これはこれまで多くの会社がやり慣れて
548*4882a593Smuzhiyunきたことと全く正反対のことです。あなたのプロポーザルは、開発プロセスのと
549*4882a593Smuzhiyunても早い段階から紹介されるべきです。そうすれば あなたは自分のやってい
550*4882a593Smuzhiyunることにフィードバックを得られます。これは、コミュニティからみれば、あ
551*4882a593Smuzhiyunなたが彼らと一緒にやっているように感じられ、単にあなたの提案する機能の
552*4882a593Smuzhiyunゴミ捨て場として使っているのではない、と感じられるでしょう。
553*4882a593Smuzhiyunしかし、一度に 50 もの email をメーリングリストに送りつけるようなことは
554*4882a593Smuzhiyunやってはいけません、あなたのパッチ群はいつもどんな時でもそれよりは小さ
555*4882a593Smuzhiyunくなければなりません。
556*4882a593Smuzhiyun
557*4882a593Smuzhiyunパッチを分割する理由は以下 -
558*4882a593Smuzhiyun
559*4882a593Smuzhiyun1) 小さいパッチはあなたのパッチが適用される見込みを大きくします、カー
560*4882a593Smuzhiyun   ネルの人達はパッチが正しいかどうかを確認する時間や労力をかけないか
561*4882a593Smuzhiyun   らです。5行のパッチはメンテナがたった1秒見るだけで適用できます。
562*4882a593Smuzhiyun   しかし、500行のパッチは、正しいことをレビューするのに数時間かかるか
563*4882a593Smuzhiyun   もしれません(時間はパッチのサイズなどにより指数関数に比例してかかり
564*4882a593Smuzhiyun   ます)
565*4882a593Smuzhiyun
566*4882a593Smuzhiyun   小さいパッチは何かあったときにデバッグもとても簡単になります。パッ
567*4882a593Smuzhiyun   チを1個1個取り除くのは、とても大きなパッチを当てた後に(かつ、何かお
568*4882a593Smuzhiyun   かしくなった後で)解剖するのに比べればとても簡単です。
569*4882a593Smuzhiyun
570*4882a593Smuzhiyun2) 小さいパッチを送るだけでなく、送るまえに、書き直して、シンプルにす
571*4882a593Smuzhiyun   る(もしくは、単に順番を変えるだけでも)ことも、とても重要です。
572*4882a593Smuzhiyun
573*4882a593Smuzhiyun以下はカーネル開発者の Al Viro のたとえ話です -
574*4882a593Smuzhiyun
575*4882a593Smuzhiyun        *"生徒の数学の宿題を採点する先生のことを考えてみてください、
576*4882a593Smuzhiyun        先生は生徒が解に到達するまでの試行錯誤を見たいとは思わないでし
577*4882a593Smuzhiyun        ょう。先生は簡潔な最高の解を見たいのです。良い生徒はこれを知っ
578*4882a593Smuzhiyun        ており、そして最終解の前の中間作業を提出することは決してないの
579*4882a593Smuzhiyun        です*
580*4882a593Smuzhiyun
581*4882a593Smuzhiyun        *カーネル開発でもこれは同じです。メンテナ達とレビューア達は、
582*4882a593Smuzhiyun        問題を解決する解の背後になる思考プロセスを見たいとは思いません。
583*4882a593Smuzhiyun        彼らは単純であざやかな解決方法を見たいのです。"*
584*4882a593Smuzhiyun
585*4882a593Smuzhiyunあざやかな解を説明するのと、コミュニティと共に仕事をし、未解決の仕事を
586*4882a593Smuzhiyun議論することのバランスをキープするのは難しいかもしれません。ですから、
587*4882a593Smuzhiyun開発プロセスの早期段階で改善のためのフィードバックをもらうようにするの
588*4882a593Smuzhiyunも良いですが、変更点を小さい部分に分割して全体ではまだ完成していない仕
589*4882a593Smuzhiyun事を(部分的に)取り込んでもらえるようにすることも良いことです。
590*4882a593Smuzhiyun
591*4882a593Smuzhiyunまた、でき上がっていないものや、"将来直す" ようなパッチを、本流に含め
592*4882a593Smuzhiyunてもらうように送っても、それは受け付けられないことを理解してください。
593*4882a593Smuzhiyun
594*4882a593Smuzhiyunあなたの変更を正当化する
595*4882a593Smuzhiyun------------------------
596*4882a593Smuzhiyun
597*4882a593Smuzhiyunあなたのパッチを分割するのと同時に、なぜその変更を追加しなければならな
598*4882a593Smuzhiyunいかを Linux コミュニティに知らせることはとても重要です。新機能は必要
599*4882a593Smuzhiyun性と有用性で正当化されなければなりません。
600*4882a593Smuzhiyun
601*4882a593Smuzhiyunあなたの変更を説明する
602*4882a593Smuzhiyun----------------------
603*4882a593Smuzhiyun
604*4882a593Smuzhiyunあなたのパッチを送付する場合には、メールの中のテキストで何を言うかにつ
605*4882a593Smuzhiyunいて、特別に注意を払ってください。この情報はパッチの ChangeLog に使わ
606*4882a593Smuzhiyunれ、いつも皆がみられるように保管されます。これは次のような項目を含め、
607*4882a593Smuzhiyunパッチを完全に記述するべきです -
608*4882a593Smuzhiyun
609*4882a593Smuzhiyun  - なぜ変更が必要か
610*4882a593Smuzhiyun  - パッチ全体の設計アプローチ
611*4882a593Smuzhiyun  - 実装の詳細
612*4882a593Smuzhiyun  - テスト結果
613*4882a593Smuzhiyun
614*4882a593Smuzhiyunこれについて全てがどのようにあるべきかについての詳細は、以下のドキュメ
615*4882a593Smuzhiyunントの ChangeLog セクションを見てください -
616*4882a593Smuzhiyun
617*4882a593Smuzhiyun  "The Perfect Patch"
618*4882a593Smuzhiyun      http://www.ozlabs.org/~akpm/stuff/tpp.txt
619*4882a593Smuzhiyun
620*4882a593Smuzhiyunこれらはどれも、実行することが時にはとても困難です。これらの例を完璧に
621*4882a593Smuzhiyun実施するには数年かかるかもしれません。これは継続的な改善のプロセスであ
622*4882a593Smuzhiyunり、多くの忍耐と決意を必要とするものです。でも諦めないで、実現は可能で
623*4882a593Smuzhiyunす。多数の人がすでにできていますし、彼らも最初はあなたと同じところから
624*4882a593Smuzhiyunスタートしたのですから。
625*4882a593Smuzhiyun
626*4882a593Smuzhiyun
627*4882a593Smuzhiyun
628*4882a593Smuzhiyun
629*4882a593Smuzhiyun----------
630*4882a593Smuzhiyun
631*4882a593SmuzhiyunPaolo Ciarrocchi に感謝、彼は彼の書いた "Development Process"
632*4882a593Smuzhiyun(https://lwn.net/Articles/94386/) セクションをこのテキストの原型にする
633*4882a593Smuzhiyunことを許可してくれました。Rundy Dunlap と Gerrit Huizenga はメーリング
634*4882a593Smuzhiyunリストでやるべきこととやってはいけないことのリストを提供してくれました。
635*4882a593Smuzhiyun以下の人々のレビュー、コメント、貢献に感謝。
636*4882a593SmuzhiyunPat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers,
637*4882a593SmuzhiyunVojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi
638*4882a593SmuzhiyunKleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop,
639*4882a593SmuzhiyunDavid A. Wheeler, Junio Hamano, Michael Kerrisk, と Alex Shepard
640*4882a593Smuzhiyun彼らの支援なしでは、このドキュメントはできなかったでしょう。
641*4882a593Smuzhiyun
642*4882a593Smuzhiyun
643*4882a593Smuzhiyun
644*4882a593SmuzhiyunMaintainer: Greg Kroah-Hartman <greg@kroah.com>
645