原作: Jordan K. Hubbard <jkh@FreeBSD.ORG>.
訳: 岩崎 満 <iwasaki@jp.FreeBSD.ORG>. 27 April 1997.
あなたも何か FreeBSD のために貢献したくなりましたか? 素晴らしい! 私たちは常に支援を受ける用意がありますし, FreeBSD は生き残るためにユー ザベースの貢献に頼るようなシステムの一つです. あなたの貢献は 感謝されるだけではなく, FreeBSD が成長し続けるために極めて重要なものな のです!
一部の人達が言っているのとは逆に, 貢献を受け付けてもらうために腕利 きのプログラマーになるとか FreeBSD コアチームの人と親友になる必要はあ りません. FreeBSD プロジェクトの開発は, 多くのそして益々増加する世界中 の貢献者達によってなされており, 彼らの年齢, 専門技術分野は多岐に渡りま す. そして手の空いている人よりも 成されるべき仕事の方が常に多いのです.
FreeBSD プロジェクトがカーネルや散在しているユーティリティよりも, オペレーティングシステム環境 (と, そのインストール) に対して責任を持つ ようになったため, 私たちのTODOリストはドキュメンテーション, ベータテ スト, 高度に専門化されたタイプのカーネル開発の好例を紹介するなど非常に 広い範囲のタスクに渡ります. あなたの技能レベルに関わらず, プロジェクト を支援できることが必ず何かあります!
FreeBSD 関連の事業に従事している商業団体が私たちにコンタクトすること も歓迎します. あなたの製品を (FreeBSD 上で) 動作させるには, 特別な拡張 が必要ではありませんか? あまりにも風変わりな要求でなければ, それを受け 入れる用意が私たちにあるとわかるはずです. 付加価値のある製品ですか? 私たちに知らせてください! 多分私たちは, ある 面において共同して作業をすることができるでしょう. フリーソフトウェア界 は, ソフトウェアがそのライフサイクルを通してどのように開発され, 売られ, 保守されていくかについて, 既存の仮説に挑戦しています. 少なくとももう一 度考慮してみることを私たちは強くお奨めします.
次のタスクとサブプロジェクトのリストは, コアチームの色々な TODO リ ストと最近2ヶ月で集めたユーザリクエストを合わせたものです. 可能なとこ ろでは, 緊急度によってタスクがランクづけされています. もしここにあるタ スクの実行に興味があるのでしたら, コーディネータの名前をクリックしてメー ルを送ってください. もしコーディネータが決まっていなければ, あなたがボ ランティアしてみませんか?
次のタスクは通常, ひどく壊れているとか, とても必要とされている何かを 表しているため, 急務と考えられています:
第3ステージ・ブート問題. 全体コーディネーション: FreeBSD technical discussions mailing list <freebsd-hackers@FreeBSD.ORG>
第3ステージがディスクの BIOS ジオメトリの正確なマッピングを提供 できるように WinNT コンパチブルなドライブの追跡をおこなう.
ファイルシステム問題. 全体コーディネーション: FreeBSD filesystem project mailing list <freebsd-fs@FreeBSD.ORG>
nullfs ファイルシステムコードのクリーンアップと ドキュメンテーション. コーディネータ: Justin T. Gibbs <gibbs@FreeBSD.ORG>
union ファイルシステムの修正. コーディネータ: David Greenman <dg@FreeBSD.ORG>
カーネル vm86 及びユーザ vm86 サポート実装. コーディネータ: Jonathan Lemon <jlemon@FreeBSD.ORG>
Int13 vm86 ディスクドライバの実装. コーディネータ: FreeBSD technical discussions mailing list <freebsd-hackers@FreeBSD.ORG>
カーネル問題. 全体コーディネーション: FreeBSD technical discussions mailing list <freebsd-hackers@FreeBSD.ORG>
すべての現存ドライバの eisaconf 変換の達成.
すべての割り込みルーチンを ユニット番号を使う代わりに (void *) を 取るように変更.
EISA/PCI/ISAの割り込み登録コードの統合.
PCI/EISA/ISA デバイス検出を bt742a.c(WIP) のようなドライバから分割.
syscons の ALT-Fn/vt 切替えによるハングの修正. コーディネータ: S�ren Schmidt <sos@FreeBSD.ORG>
3c509と3c590 ドライバの統合 (本質的には PCI デバイス検出の ep.c への提供).
次のタスクはやっておくべきではありますが, 特にさし迫っているわけで はありません:
MCA サポート? これは続けるにしても止めてしまうにしても結論を出 すべき.
完全な KLD ベースのドライバのサポート / コンフィグレーションマネー ジャ.
ld なしですべての LKM の登録をおこなう方法を考案する. これは カーネル中にある種のシンボルテーブルを 持たせることを意味します.
穏やかな方法でハードウェアを検知する コンフィグレーションマネージャ の作成 (第3ステージ・ブートの中に?). ハードウェアが必要とする KLD だけを 残す等.
PCMCIA/PCCARD. コーディネータ: Michael Smith <msmith@FreeBSD.ORG> と Poul-Henning Kamp <phk@FreeBSD.ORG>
ドキュメンテーション!
pcic ドライバの信頼性のある操作 (テスト要).
sio.c のリコグナイザとハンドラ (ほぼ完了).
ed.c のリコグナイザとハンドラ (ほぼ完了).
ep.c のリコグナイザとハンドラ (ほぼ完了).
User-mode のリコグナイザとハンドラ (部分的に完了).
先進的なパワーマネージメント. コーディネータ: Nate Williams <nate@FreeBSD.ORG> と Poul-Henning Kamp <phk@FreeBSD.ORG>
APM サブドライバ (ほぼ完了).
IDE/ATA ディスクサブドライバ (部分的に完了).
syscons/pcvt サブドライバ.
PCMCIA/PCCARD ドライバ群との統合 (サスペンド / レジューム).
次のタスクは全くのあら隠し, または誰もすぐにおこないそうもない投資 のような仕事を表します:
最初の20項目は Terry Lambert <terry@lambert.org> からのもので す.
プロセッサ上で V86 モードを使用して, プロテクトモードからの BIOS コールができるようにし, マップされた割り込み IPC 機構を経由してプロテ クトモードの呼出し元に結果を返すようにする.
DOS と同じように, 実際の下位ハードウェアから独立になるよう, BIOS コール機構を使用したカーネルの中に組み込まれたドライバ. これは DOS ベー スのローダプログラムで BSD がロードされる前に DOS にロードされていたネッ トワークドライバや ASPI ドライバも含みます. このことは潜在的なポーリン グ, つまりプロテクトモードカーネルによる V86 マシンのための DOS-not-busy 割り込みの生成を意味します.
ハードウェア固有のプロテクトモードの ドライバがロードされて活性化 された後で, デフォルトのカーネル実行形式の中の, そのようなドライバデー タとテキストエリアを追跡して, カーネルアドレス空間のその部分が回復され るようにするためのイメージ形式. これは個々の BIOS ベースのドライバを互いに分離することを含みます. なぜ なら全く実行しないよりも, すべてのケースにおいて BIOS ベースのドライバ と共に実行した方が良いためです.
バスインタフェース機構の抽象化. 現在のところ, PCMCIA, EISA そし て PCI バスはブリッジで ISA バスに接続されていると仮定しています. こう いった仮定はおこなうべきではありません.
パワーマネージメントイベント, カードの挿入, 取り出し, そしてバス (PNPISA と PCMCIA とのブリッジチップ) 対カードのレベルのイベント管理を 含む PNP イベントを解釈するコンフィグレーションマネージャ.
固定デバイスによる他の再割当可・不可の デバイス空間リソースの使用 と衝突しない, 再割当可能なアドレスの割り当てのためのトポロジカルソート 機構.
ハードウェアサービス登録のための登録ベースの機構. 特にタイマ, サウンドおよび他の システムクリティカルなサービス供給源のためのデバイス 中心の登録機構. 単一の独立していないサービス供給源の一つの例として Timer2, Timer0 そしてスピーカサービスを考慮する必要があります.
ネットワークカードと一緒に提供される ODI カードドライバを使用で きるようにする, NetWare サーバ (プロテクトモードの ODI ドライバ) ロー ダとサブサービス. NDIS ドライバと NetWare の SCSI ドライバについても同 様.
前のリビジョンの FreeBSD マシンではなく, Linux マシンで動作する 「アップグレード システム」オプション.
移植を簡単にするためと, X, ThinkPad, PS/2マウス, LED, コンソール スイッチング, しつこい NumLock などの問題を全部一度に片付けるためのコ ンソールドライバの抽象レイヤへの分割.
機会が許したら, 他の外部ドライバのための他のカーネルのエミュレー ション環境. SCO と Solaris は UnixWare などに続く良い候補です.
異なるアーキテクチャのバイナリの実行のための プロセッサエミュレーション環境. これはシステムコールインタフェースがあまり変わらなければ, 思ったより簡単です.
商用のストリームドライバを使用可能にするための ストリーム機構.
カーネルのマルチスレッド化 (カーネルのプリエンプションが必要).
カーネルのプリエンプション付き対称マルチプロセッシング (カーネル のプリエンプションが必要).
ポータブルコンピュータのサポートにおける協調の試み. これは PCMCIA ブリッジング規則と電源管理イベント処理の変更により, いく らかは処理できます. しかし, 内蔵ディスプレイと外部ディスプレイの検出, この 2 種類のディスプレイがあるという事実に基づく 異なる解像度の選択, マシンがドックにある場合には ディスクのモータ停止を防止すること, マシンの ブート能力に影響を与えずにドックベースのカードの消滅を 可能にすること (PCMCIA と同じ問題) などの問題があります.
マルチプラットフォームへの移植のための ソースツリーの再組織化.
make worldできちんと「世界を創造する」 ができるようにする. (もしmake regress(訳注: 後退する)と呼び方が適当であれば, そのように 名前を変える)
最小必要メモリ 4MB 化 (もっと小さければなお良し!).
上のセクションで挙げたタスクは膨大な時間の投資または FreeBSD のカーネルに関する深い知識を必要とします (もしくはそのどちらも). しかしながら, "週末ハッカー"やプログラミングのスキルを持 たない人々に適した立派なタスクも数多くあります.
FreeBSD-current を運用しており, 状態の良いインターネット接続があ るならば, current.freebsd.org という一日に一回フルリリースを行っている マシンがあります --- 時おり最新のリリースをそこからインストールし, その 過程で何か問題があるなら報告して下さい.
<freebsd>-bugs メーリングリストを読んでください. そこではあなたが建 設的なコメントを付けたりテストできるパッチが 提供されているような問題がある かもしれません. もしくはそれらの問題の一つをあなた自身で修正することさえ できるかもしれません.
定期的に FAQ とハンドブックを通して読んでみてください. もしまずい説明や古い事柄や完全に間違っていることなどが あれば我々に しらせて下さい. さらに良いのは我々に修正案を送ることです (SGML は学ぶのにそれほど難しくありませんが, プレインテキストでも問題は ありません).
(もしまだないならば) FreeBSD のドキュメントを自分の母国語に翻訳 するのを手伝ってください --- 作業している人がいるかどうか FreeBSD documentation project mailing list <freebsd-doc@FreeBSD.ORG> にメールを 送って聞くだけです. とはいっても, そうすることによってあなたが全ての FreeBSD ドキュメントの翻訳に携わるように なるというわけではないですから ね --- 実際, もっとも翻訳が必要とされているドキュメントはインストール方 法です.
たまに(もしくは定期的に) freebsd-questions メーリングリストや comp.unix.bsd.freebsd.misc を読んでください. これは, あなたの持ってい る専門知識を共有したり誰かが抱えている問題を 解決するのに非常に有効な ものになり得ることです. 時にはあなた自身で新しいことを学ぶことさえ できるかもしれません. これらのフォーラムはやるべきことのアイディア の源にもなり得るのです.
-current に正しく当てられるがしばらく経っても(通常は 2, 3 週間) -stable に取り込まれてないようなバグフィックスがあるならば コミッターに 丁寧に思い出させてください.
寄贈ソフトウェアをソースツリーの src/contrib に移動させてください.
src/contrib 以下のコードが最新のものであるか確認してください.
2000 年問題に関するバグを探してください(そして, 見つけたら修正してください!).
ソースツリー全体(もしくはその一部)を, 警告を詳細に報告するようにして構築してみてください. そして警告が出ないようにしてください.
ports で, gets() を使っているとか malloc.h をインクルードしている などといった警告が出ないようにしてください.
もしなんらかの ports に関わっているなら, あなたのパッチを作者に フィードバックしてください (次のバージョンが出た時にあなたが楽になります).
このリストに追加するタスクを提案して下さい!