Chapter 20. FreeBSD への貢献

Table of Contents
20.1. 何が必要?
20.2. 貢献の仕方
20.3. 寄贈者ギャラリー
20.4. コアチームの卒業生
20.5. 開発チームの卒業生
20.6. BSD 派生ソフトウェアへのコントリビュータ
20.7. その他の FreeBSD へのコントリビュータ
20.8. 386BSD パッチキットへのパッチ提供者

原作: Jordan K. Hubbard .

訳: 岩崎 満 , 1997 年 4 月 27 日.

あなたも何か FreeBSD のために貢献したくなりましたか? 素晴らしい! 私たちは常に支援を受ける用意がありますし, FreeBSD は生き残るためにユー ザベースの貢献に頼るようなシステムの一つです. あなたの貢献は 感謝されるだけではなく, FreeBSD が成長し続けるために極めて重要なものな のです!

一部の人達が言っているのとは逆に, 貢献を受け付けてもらうために腕利 きのプログラマーになるとか FreeBSD コアチームの人と親友になる必要はあ りません. FreeBSD プロジェクトの開発は, 多くのそして益々増加する世界中 の貢献者達によってなされており, 彼らの年齢, 専門技術分野は多岐に渡りま す. そして手の空いている人よりも 成されるべき仕事の方が常に多いのです.

FreeBSD プロジェクトがカーネルや散在しているユーティリティよりも, オペレーティングシステム環境 (と, そのインストール) に対して責任を持つ ようになったため, 私たちのTODOリストはドキュメンテーション, ベータテ スト, 高度に専門化されたタイプのカーネル開発の好例を紹介するなど非常に 広い範囲のタスクに渡ります. あなたの技能レベルに関わらず, プロジェクト を支援できることが必ず何かあります!

FreeBSD 関連の事業に従事している商業団体が私たちにコンタクトすること も歓迎します. あなたの製品を (FreeBSD 上で) 動作させるには, 特別な拡張 が必要ではありませんか? あまりにも風変わりな要求でなければ, それを受け 入れる用意が私たちにあるとわかるはずです. 付加価値のある製品ですか? 私たちに知らせてください! 多分私たちは, ある 面において共同して作業をすることができるでしょう. フリーソフトウェア界 は, ソフトウェアがそのライフサイクルを通してどのように開発され, 売られ, 保守されていくかについて, 既存の仮説に挑戦しています. 少なくとももう一 度考慮してみることを私たちは強くお奨めします.

20.1. 何が必要?

次のタスクとサブプロジェクトのリストは, コアチームの色々な TODO リ ストと最近2ヶ月で集めたユーザリクエストを合わせたものです. 可能なとこ ろでは, 緊急度によってタスクがランクづけされています. もしここにあるタ スクの実行に興味があるのでしたら, コーディネータの名前をクリックしてメー ルを送ってください. もしコーディネータが決まっていなければ, あなたがボ ランティアしてみませんか?

20.1.1. 優先度の高いタスク

次のタスクは通常, ひどく壊れているとか, とても必要とされている何かを 表しているため, 急務と考えられています:

  1. 第3ステージ・ブート問題. 全体コーディネーション: FreeBSD の技術的議論に関するメーリングリスト

    • 第3ステージがディスクの BIOS ジオメトリの正確なマッピングを提供 できるように WinNT コンパチブルなドライブの追跡をおこなう.

  2. ファイルシステム問題. 全体コーディネーション: FreeBSD filesystem プロジェクト メーリングリスト

    • nullfs ファイルシステムコードのクリーンアップと ドキュメンテーション. コーディネータ: Eivind Eklund

    • union ファイルシステムの修正. コーディネータ: David Greenman

  3. Int13 vm86 ディスクドライバの実装. コーディネータ: FreeBSD の技術的議論に関するメーリングリスト

  4. New bus アーキテクチャカーネル. コーディネータ: New Bus アーキテクチャのメーリングリスト

    • すべての現存 ISA ドライバの 新しいアーキテクチャへの移植.

    • すべての割り込み処理コードを 適切なバスドライバに移動.

    • PCI サブシステムの 新しいアーキテクチャへの移植. コーディネータ: Doug Rabson

    • リムーバブルデバイスを正しく扱う方法を見い出し, PC-Card や CardBus を実装するための土台にする.

    • プローブ・アタッチの優先順位の問題を 一回ですっきりと解決する.

    • その他残りのバスをすべて新しい アーキテクチャへと移行する.

  5. カーネルの諸問題. 全体コーディネーション: FreeBSD の技術的議論に関するメーリングリスト

  6. より積極的にセキュリティ基盤の整備を進める. 全体コーディネーション: FreeBSD セキュリティ関連メーリングリスト

    • Tripwire(TM) のようなものをカーネル内の リモート・ローカル両部分に備える. これを正しく実現する上で, 暗号技術に関する問題が いろいろと上がっています. 詳細についてはコーディネータに連絡を取ってみてください. コーディネータ: Eivind Eklund

    • カーネルで (UID を) 0 と比較している部分を すべて suser() を使うようにする. 現在, 約半分の箇所が使っています. コーディネータ: Eivind Eklund

    • セキュアレベルをいくつかの部分に分ける. これによって管理者は, 放棄しても構わない 権限については放棄できるようになります. 当然ながら, 全体セキュアレベルをセットしたときの 効果は現在のままにしなければなりません. コーディネータ: Eivind Eklund

    • BPF に対して "許可されたプログラム" のリストをアップロードできるようにして、 BPF がそれ以外の プログラムを受け入れるのを食い止める. これによって, BPF を例えば DHCP に使うと, アタッカーに ローカルネットワークをこっそり探られることもなくなる でしょう.

    • セキュリティチェッカスクリプトを更新する. 何はともあれ, 他の BSD 派生システムにあるチェックは すべて取り込む. さらに, システムがセキュアレベルを 高くしている場合には, 関連箇所について適切なフラグを 設定しているかどうかのチェックを行うようにする. コーディネータ: Eivind Eklund

    • カーネルに認証機構を設け, 認証ポリシーを 複数サポートする. その一部は suser() を修正することで可能でしょう. コーディネータ: Eivind Eklund

    • NFS レイヤにコードを追加し, NFS パーティションの 外に出るような chdir("..") は できないようにする. 例えば, /usr が UFS で /usr/src が NFS エクスポートされているとします. 現在では, /usr/src への NFS ファイル ハンドルを使って /usr に アクセスできてしまう可能性があります.

20.1.2. 優先度がさほど高くないタスク

次のタスクはやっておくべきではありますが, 特にさし迫っているわけで はありません:

  1. 完全な KLD ベースのドライバのサポート / コンフィグレーションマネー ジャ.

    • 穏やかな方法でハードウェアを検知する コンフィグレーションマネージャ の作成 (第3ステージ・ブートの中に?). ハードウェアが必要とする KLD だけを 残す等.

  2. PCMCIA/PCCARD. コーディネータ: Michael Smith と Warner Losh

    • ドキュメンテーション!

    • pcic ドライバの信頼性のある操作 (テスト要).

    • sio.c のリコグナイザとハンドラ (ほぼ完了).

    • ed.c のリコグナイザとハンドラ (ほぼ完了).

    • ep.c のリコグナイザとハンドラ (ほぼ完了).

    • User-mode のリコグナイザとハンドラ (部分的に完了).

  3. 先進的なパワーマネージメント. コーディネータ: Nate Williams と Poul-Henning Kamp

    • APM サブドライバ (ほぼ完了).

    • IDE/ATA ディスクサブドライバ (部分的に完了).

    • syscons/pcvt サブドライバ.

    • PCMCIA/PCCARD ドライバ群との統合 (サスペンド / レジューム).

20.1.3. 優先度の低いタスク

次のタスクは全くのあら隠し, または誰もすぐにおこないそうもない投資 のような仕事を表します:

最初の N 項目は Terry Lambert からのものです.

  1. ネットワークカードと一緒に提供される ODI カードドライバを使用で きるようにする, NetWare サーバ (プロテクトモードの ODI ドライバ) ロー ダとサブサービス. NDIS ドライバと NetWare の SCSI ドライバについても同 様.

  2. 前のリビジョンの FreeBSD マシンではなく, Linux マシンで動作する 「アップグレード システム」オプション.

  3. カーネルのマルチスレッド化 (カーネルのプリエンプションが必要).

  4. カーネルのプリエンプション付き対称マルチプロセッシング (カーネル のプリエンプションが必要).

  5. ポータブルコンピュータのサポートにおける協調の試み. これは PCMCIA ブリッジング規則と電源管理イベント処理の変更により, いく らかは処理できます. しかし, 内蔵ディスプレイと外部ディスプレイの検出, この 2 種類のディスプレイがあるという事実に基づく 異なる解像度の選択, マシンがドックにある場合には ディスクのモータ停止を防止すること, マシンの ブート能力に影響を与えずにドックベースのカードの消滅を 可能にすること (PCMCIA と同じ問題) などの問題があります.

20.1.4. もっと簡単なタスク

上のセクションで挙げたタスクは膨大な時間の投資または FreeBSD のカーネルに関する深い知識を必要とします (もしくはそのどちらも). しかしながら, "週末ハッカー"やプログラミングのスキルを持 たない人々に適した立派なタスクも数多くあります.

  1. FreeBSD-current を運用しており, 状態の良いインターネット接続があ るならば, current.FreeBSD.org という一日に一回フルリリースを行っている マシンがあります -- 時おり最新のリリースをそこからインストールし, その 過程で何か問題があるなら報告して下さい.

  2. freebsd-bugs メーリングリストを読んでください. そこではあなたが建 設的なコメントを付けたりテストできるパッチが 提供されているような問題がある かもしれません. もしくはそれらの問題の一つをあなた自身で修正することさえ できるかもしれません.

  3. 定期的に FAQ とハンドブックを通して読んでみてください. もしまずい説明や古い事柄や完全に間違っていることなどが あれば我々に しらせて下さい. さらに良いのは我々に修正案を送ることです (SGML は学ぶのにそれほど難しくありませんが, プレインテキストでも問題は ありません).

  4. (もしまだないならば) FreeBSD のドキュメントを自分の母国語に翻訳 するのを手伝ってください -- 作業している人がいるかどうか FreeBSD ドキュメンテーションプロジェクト メーリングリスト にメールを 送って聞くだけです. とはいっても, そうすることによってあなたが全ての FreeBSD ドキュメントの翻訳に携わるように なるというわけではないですから ね -- 実際, もっとも翻訳が必要とされているドキュメントはインストール方 法です.

  5. たまに(もしくは定期的に) freebsd-questions メーリングリストや comp.unix.bsd.freebsd.misc を読んでください. これは, あなたの持ってい る専門知識を共有したり誰かが抱えている問題を 解決するのに非常に有効な ものになり得ることです. 時にはあなた自身で新しいことを学ぶことさえ できるかもしれません. これらのフォーラムはやるべきことのアイディア の源にもなり得るのです.

  6. -current に正しく当てられるがしばらく経っても(通常は 2, 3 週間) -stable に取り込まれてないようなバグフィックスがあるならば コミッターに 丁寧に思い出させてください.

  7. 寄贈ソフトウェアをソースツリーの src/contrib に移動させてください.

  8. src/contrib 以下のコードが最新のものであるか確認してください.

  9. 2000 年問題に関するバグを探してください(そして, 見つけたら修正してください!).

  10. 警告を詳細に報告するようにして ソースツリー全体(もしくはその一部)を構築してみてください. そして警告が出ないようにしてください.

  11. ports で, gets() を使っているとか malloc.h をインクルードしている などといった警告が出ないようにしてください.

  12. もしなんらかの ports に関わっているなら, あなたのパッチを作者に フィードバックしてください (次のバージョンが出た時にあなたが楽になります).

  13. このリストに追加するタスクを提案して下さい!

20.1.5. 障害報告(PR; Problem Report)データベースにおける作業

FreeBSD 障害報告リストでは, 現在問題となっている報告と, FreeBSD の利用者によって提出された改良の要望に関する 全てのリストを公開しています. open 状態の障害情報を見て, 興味を引く内容かどうか確かめて下さい. 本当に複雑なものも含まれているでしょうし, 例えば, 障害報告に対する修正がちゃんとしたものであるかどうか 単にチェックするだけのとても簡単な作業もあるでしょう.

まず, まだ誰にも割り当てられていない障害報告から作業を 始めて下さい. もし, 誰か他の人に割り当てが決まっているけれども 自分が作業可能だ, というものがあれば, 作業ができるかどうか-- 既にテスト用パッチが用意されているのかどうか, あるいは その問題についてあなたが考えている, より進んだ考えに関して議論ができるかどうか, 割り当てられている人に電子メールで問い合わせて下さい.