Linux カーネル用ドライバの提出方法
----------------------------------

この文書は、各種カーネルツリーへデバイスドライバを提出する方法を説明する
ものです。ビデオカードドライバに興味をお持ちなら、おそらく、ここではなく
XFree86 (http://www.xfree86.org) に相談するほうがよいでしょう。

さらに、文書 Documentation/SubmittingPatches を読んでください。


デバイス番号の割当て
--------------------

ブロックデバイスおよびキャラクタデバイス用のメジャー番号およびマイナー
番号は "Linux assigned name and number authority" (現在、H Peter Anvin
さんと言った方が通るでしょう) によって割当てられます。そのサイトは
http://www.lanana.org/ です。ここでは、メインストリームカーネルへ提出
されないデバイス用の番号の割当ても処理されます。

割当てを受けていない番号を使用した場合、あなたのデバイスが出荷された時
に (あらためて) 割当てられた番号が与えられるかもしれませんが、これは既
にあなたが顧客に出荷してしまっている番号とは異なるものになるかもしれま
せん。


ドライバの提出先
----------------

Linux 2.0:
        このカーネルツリー用の新しいドライバは受け付けられません。

Linux 2.2:
        そのコード領域の全般的な管理者がいる場合、カーネルファイルの
        MAINTAINERS に記載された管理者に提出してください。管理者が応答
        しないか、適切な管理者が見つけられない場合、Alan Cox
        <alan@lxorguk.ukuu.org.uk> に連絡してください。

Linux 2.4:
        2.2 と同じ規則が適用されます。Linux 2.4 の提出に関する最終連絡
        先は Marcelo Tosatti <marcelo.tosatti@cyclades.com> です。

Linux 2.6:
        API の変更に追従するために linux-kernel についていく必要がある
        という点を除き、2.4 と同じ規則が適用されます。Linux 2.6 の提出に
        関する最終連絡先は Andrew Morton <akpm@osdl.org> です。


受理決定に関する基準
--------------------

ライセンス：    コードは GNU General Public License 下で我々にリリース
                されなければなりません。GPL ライセンスのみにこだわる
                わけではなく、BSD のような他のコミュニティのドライバを
                役立たせたいなら、複数のライセンス下でリリースを望ん
                でも構いません。
                [訳注；例示された BSD ライセンスに関わるものは現在、
                ほとんど併記されるようになりました。]

著作権：        著作権保持者は GPL の使用に同意する必要があります。提出
                者と著作権保持者が同じ人／団体であることがもっとも望ま
                しいです。そうでない場合は、著作権保持者の意思を確認する
                必要が生じた場合に備えて、GPL の使用を認めた人／団体の
                名前を記載しておいてください。

インターフェース：あなたのドライバが既存のインターフェースを使用し、同じ
                クラスの別のドライバのように振舞うなら、よけいな新しい
                振舞いをする場合よりも受理されやすいでしょう。Linux と
                NT で共通の API を実装する必要があれば、API はユーザ空間
                で実装してください。

コード：        Documentation/CodingStyle で説明されている、Linux スタ
                イルのコード書式を使用してください。他の書式にする必要の
                あるコード部がある場合、例えば Windows ドライバキットと
                コードを共有しそれらを一元管理したいといった場合には、
                そこだけうまく分離し、その件について注意を加えてください。

移植性：        ポインタはいつも 32 ビットであるとは限らず、すべての
                コンピュータがリトルエンディアンというわけではなく、
                すべての人が浮動小数点ユニットを持っているわけでもない
                ので、不用意にドライバの中でインライン x86 アセンブラ
                を使うべきではありません。純粋な x86 ドライバは一般的
                ではありません。x86 ハードウェアしか持っていない場合、
                移植性を試すことは困難ですが、コードが簡単に移植できる
                ことを確認するのは簡単です。

分かりやすさ：  ドライバを修正する方法が誰にもわかるようになっていると
                良いでしょう。バグ報告ではなく、パッチを受け取ることが
                できますから助けになります。故意にハードウェア動作を隠
                蔽するようなドライバを提出すれば、それはゴミ箱行きにな
                るでしょう。

コントロール：  一般に、著者による活発な保守が続いている場合、パッチが
                明解でチェックが不要なものではない場合、著者に転送され
                ます。ドライバに関する連絡先および更新元となりたい場合、
                このことをコメントにはっきり書き、ドライバ向けの
                MAINTAINERS の中にエントリを入れておくとよいでしょう。


受理決定に関しない基準
----------------------

ベンダー：      ハードウェアベンダーがドライバを管理することは多くの場
                合よいことです。既にツリーに他の方々からの安定して動作
                するドライバがある場合、「私たちはベンダーです」という
                ことによってドライバが採択されることを期待しないでくだ
                さい。単一の完全なドライバを構築するために、既存のドラ
                イバの著者と作業をするのが理想です。

著者：          Linux 関連の大きな会社がドライバを書いても、あなたが書
                いても、そのことは重要ではありません。誰もカーネルツリー
                への特別なアクセスはできません。何か違ったことを言う人
                は、筋道を立てた話をしていないのでしょう。


情報源
------

Linux カーネルのマスターツリー：
        ftp.??.kernel.org:/pub/linux/kernel/...
        ?? == "us", "uk", "fr" のようなあなたの国コード

Linux カーネルのメーリングリスト：
        linux-kernel@vger.kernel.org
        [購読のために majordomo@vger.kernel.org へメールしてください]

カーネルトラフィック：
        カーネルリスト活動の週単位の要約 (とても簡単に読めます)
        http://www.kerneltraffic.org/kernel-traffic/

Linux USB プロジェクト：
        http://sourceforge.net/projects/linux-usb/

======================================================================
日本語訳：野本浩一 <hng(a)ps.ksky.ne.jp>
最終更新：2004/05/10
    校正：Seiji Kaneko さん <skaneko(a)a2.mbn.or.jp>
          中谷千絵さん <jeanne(a)mbox.kyoto-inet.or.jp>
    更新：川崎貴彦 <takahiko(a)hakubi.co.jp>
