# %NetBSD: ROADMAP,v 1.23 2008/08/04 15:37:05 simonb Exp % NetBSD の上位概念ロードマップ このファイルは次の N 年間で NetBSD をどのようにしたいかというロードマップを含んでいます。あまり詳細に書かれておらず、また個別の項目には深入りしていません。いくつかの異なった "TODO" ファイルと "NetBSDプロジェクト" のリストが別の場所にあり、それらにはより詳細な計画が含まれています。それらのプロジェクトと計画は、このロードマップの枠組みに沿って実施される予定です。 これはボランティアプロジェクトなので、これらの項目に期日はありません。これらの項目は順不同に着手されるかもしれないし、着手されないかもしれません。そして、技術とニーズの変化に応じて、ロードマップは変化するかもしれません。 もちろんロードマップは NetBSD プロジェクトの幅広い目標にあわせて構成されます: * きれいな設計 * 堅牢性 * 速さ * きれいなライセンス * 移植性 * 相互運用性 * 適合性 * 商用での利用 * 研究での利用 * 趣味での利用 一般的に、私たちのゴールは以下のようなものです。 * 最高水準のツール (currentの (そしてstableの) GNUツール、Solaris の dtrace または同程度の機能性の追加、すべてのプラットフォームのカーネルコアダンプと事後分析ツール、PMC のようにハードウェアを用いたパフォーマンス分析ツール) * 権利つきコード無しにすべてのデバイスのサポートすること * 基本システムの成長管理 * 基本システムの最小量のGPL / LGPLコード * 移植性を損なうことのない最高性能 * 最高水準のカーネルとユーザーランド * バグなし、セキュリティ脆弱性なし * pkgsrcと組み合わせて、様々なユーザー、管理者、研究者のための完全なシステム: デスクトップ、組み込みデバイス、サーバー、ワークステーション、ポータブル機器 このリストは全くもって包括的ではなく、また意図して野心的になっています。これらのゴールのうち 1 つは、我々が取り組む各々の分野で優れたものを作ることであり、「器用貧乏」になりたいわけではありません。 後述する具体的な項目は、おおざっぱなカテゴリーに分けられます: 1. プラットフォームから独立したカーネル 2. プラットフォームから独立したユーザーランド 3. プラットフォームに依存するカーネル 4. プラットフォームに依存するユーザーランド 5. その他 あなたがプロジェクトを引き受けたいと思うならば、あなたの名前/電子メール (あなたが主張しているプロジェクト (プロジェクトの一部ならば、その部分を指定してください) の日付) と期待される完成日を記録してください。これにより、うまく行けば努力の重複と、度々または長期間プロジェクトが停滞することの両方を避けることができるでしょう。 これがボランティアプロジェクトであり、どのリリースバージョン (または名前) も、完全であるか、または着手されている、ということを保証しているわけではないことに注意してください。興味がある方は以下に連絡してください。 core@NetBSD.org 詳細な情報。 1. プラットフォームから独立したカーネル ============================== aa. スケジューラ機能 コンテキストスイッチの分離とスレッドのスケジューリング。 責任者: yamt ETA: 5.0 (yamt-idlelwp ブランチ) モジュール実装のための汎用スケジューラ API。 責任者: dsieger ETA: 5.0 (yamt-idlelwp ブランチにマージ) 新しいスケジューラ (POSIX リアルタイム機能と、CPU 親和性と、MP システムのためのより良いサポート) 責任者: rmind ETA: 5.0 ab. ジャイアントロックの削減 このための最善の方法がいくつか提案されています。わずかな人数でも前進し、このゴールへたどり着くことを必要としています。 責任者: ad ETA: 5.0 (vmlocking2 ブランチ) ac. wedge サポートの拡大 wedge の開発を完了させること。そして、互換性に必要があるのを除いて disklabels を引退させること。 責任者: thorpej (おそらく) ETA: 5.0 ad. ボリューム管理 パーティションを拡張、縮小、移動できるようにすること (可能であれば、ファイルシステムについても同様に) 責任者: 未定 ETA: ? ae. スナップサポートがある高性能の、そして、たぶんログベースのジャーナルファイルシステム FFSにログ、ジャーナル、スナップショット機能を追加するのは一大事です。おそらく別のファイルシステムならより綺麗で速いでしょう。 責任者: simonb ETA: 5.0 (もっとも、ジャーナリングとスナップの組み合わせは、まだ同時に機能していません) af. ieee1394サポートの拡張 可能な限り DV、ディスク、ネットワークデバイスをサポートします。 責任者: 未定 ETA: 4.0ではFireWireサポートの準備がされています。 ag. 汎用デバイス hotplug サポート hotplug に対応したすべてのデバイスとバスをサポートすること。これはサブカテゴリーに分割されるべきであり、SATA、SCSI、FC、USB、FireWire、 PCI (PCI X と PCI-Express)などの場合は、プラットフォームに依存する領域にまたがります。いくつかの初歩的なサポートがありますが、それは全く包括的ではありません。 責任者: bouyer ETA: ? ah. サスペンドとリジュームサポート PC、MacPPC、そしてサスペンドとリジュームをサポートしているハードウェア (sparc、hpcsh、hpcarmなど) ならば完全に使用できるべきです。 責任者: jmcneill、joerg ETA: 5.0 ai. LWP サポートを完了させること LWP 化以前のコードの名残がまだカーネルに残っており、これはアップデートすべきです。(ktrace以外何がある?) 責任者: darrenr、skrll、christos は ktrace-lwp をしました。 ETA: 4.0 aj. PTHREAD_CONCURRENCY > 1 サポート 1 プロセスが確実に 1 つ以上の CPU を使用できるようにする必要があります。 責任者: ad ETA: 5.0 (newlock2 による 1:1 pthread は含まれます) ak. AIO サポート POSIX aio_*() によるカーネルでの完全な非同期 I/O (AIO) サポート 責任者: rmind ETA: 5.0 al. モダンなパラレルポートサポート 双方向パラレルポートと、更なるパラレルポートのサポートを完了させること。 責任者: jdolecek ETA: ? am. NFSv4 現在の NFS の水準まで上げること。 責任者: 未定 ETA: ? an. カーネルのロック機構をアップデートすること thorpejによる今や古めかしいnewlockブランチに良い作業結果があります。これはいくつかのプラットフォームサポートを必要とします。mutex_*(9) と ltsleep(9) が連動するために cpu_switch/scheduler のオーバーホールがいくつか必要です。 責任者: ad ETA: 5.0 (newlock2) ao. TCP/IP 開発のレビュー NewReno をフィックスすること。 責任者: mycroft ETA: 3.0 SACK サポートをカーネルに追加すること。 責任者: kurahone ETA: 3.0 ECN サポートをカーネルに追加すること。 責任者: rpaulo ETA: 5.0 その他の "recent" や最新の TCP/IP についての研究を調べること。 TCP/IP スタックを近代的に書き換えること。 責任者: 未定 ETA: ? ap. カーネルリンカ (FreeBSD 由来の kld) 責任者: 未定 ETA: ? aq. CARP/VRRP 機能は素晴らしいのですが、シスコの特許による懸念がいくつかあります。 責任者: liamfoy ETA: 4.0 ar. UDF ファイルシステムサポート 最近 OpenBSD が対応しました。 責任者: reinoud ETA: 4.0 as. 3-way RAID 1 のための RAIDFrame 責任者: 未定 ETA: ? at. RAID6 のための RAIDFrame サポート 責任者: oster ETA: 5.0? au. もっと多くのモダンなドライバー 多くの他のオープンソース OS でサポートされているモダンなデバイス (PCI-Express、RAIDカードなど) がサポートされていません。 責任者: 未定 ETA: ? av. iSCSI イニシエーターサポート iSCSI ボリュームを使用できるべきです。 責任者: agc ETA: 5.0 aw. 実行時に SysV IPC の設定値を変更する SysV IPC のいくつかの設定値がカーネルコンフィギュレーションでハードコードされています。─これらはsysctlで変更可能であるべきです。 責任者: rmind ETA: 4.0 ax. NUMA サポート この目標を達成するなら、CPU スケジューラは、CPU の距離とグルーピングを考慮するように変更されるべきです。また、メモリブロックのサポートは VM サブシステムで実装されるべきです。 責任者: 未定 ETA: ? 2. プラットフォームから独立したユーザーランド ================================ aa. X の保持 X.org の進捗を追うこと。既存の XFree86 を維持すること。 責任者: 数千人のキャスト ETA: 進行中 ab. リエントラントライブラリ スレッド化されたアプリケーションで使えるように、全てのライブラリーが確実にリエントラントであるようにしてください。 責任者: ginsbach 他 ETA: 5.0? ac. gcc アップデート gcc4 を BSD make(1) で動作するようにするか、BSD make(1) をアップデートするか、または想像を絶する作業が必要です。 責任者: mrg, matt ETA: 4.0 ad. gdb アップデート 責任者: skrll ETA: 5.0 ae. binutils アップデート おそらく gdb アップデートと協力して作業します。 責任者: skrll ETA: 4.0 af. より良い検死用デバッグツール ps/*statなどのツールと、gdbにコアファイルとの間に何かがあると便利でしょう。なにか、おそらく SysV(?) の crash(8) のようなものです。 責任者: 未定 ETA: ? ag. より良い 802.11 ユーティリティとサポート 本当にモバイルユーザをサポートするためには、ベースステーションを検索してそれらに加入することが必要です。 責任者: dyoung、skrll、scw、他 ETA: 4.0 ah. 国際化 Citrus、ワイド文字対応 curses(SoC に統合?)、文字照合、位置パラメーター対応のローカライズされた printfサポート、時刻と通貨サポート、そのほか。NetBSD にはグローバルなユーザーと開発者ベースがあり、そして i18n はそれらを反映すべきです。 (a) Support cond. printf fmt: 4.0 には、位置パラメタサポートに対応した vfwprintf があるでしょう。 5.0 には、位置パラメタサポートに対応した vfprintf があるでしょう。 責任者: christos ETA: 5.0 (b) LC_COLLATEサポート (c) mklocale(1) -> localedef(1) (d) C++ における wchar_t (e) i18n 化されたユーザーランドコマンド (f) カーネルにおける iconv 責任者: 未定 ETA: ? ai. システムパッケージ 何らかのやり方でシステムパッケージをサポートする必要があります。これは、少なくともまともなバイナリ監査およびバイナリ形式のパッチを可能にします。 責任者: apb ETA: 4.0 aj. インストール時におけるバイナリパッケージの提供 現在の迅速で美しい基本的なインストール環境を犠牲にせずに、他のフリーのオペレーティングシステムと同じくらい機能的なデスクトップをインストールできる統合インストールがあるべきです。sysinst の拡張はこの要望を満たすかもしれません。または sysinst によって呼び出されるツールや、実行中のシステムで利用可能なツールです(例えばpkgsrc-wip/pkg_selectです)。 責任者: agc 他 ETA: 4.0 ak. ネイティブの署名/秘匿性ソフトウェア これは BPG(SoC からの) または openpgp-sdk かもしれません。 責任者: agc、cjs、他 ETA: 4.0? al. ユーザーランドバージョン識別 どんなバイナリがインストールされていますか?だれが本当に知っていますか? 少なくともこれは ai. にいくらか関連します。 責任者: 未定 ETA: ? 3. プラットフォームに依存するカーネル ============================ aa. evb* ポートにない evb ポート (sandpoint) を evb* ポートに移動させること。 既存の evb* ポートは、どんな種類の評価ボードにも対応します。既存の非 evb* ポートのいくつかは、本当は evb* カテゴリーに入ります。 責任者: 未定 ETA: ? ab. m68k ポートは、より多くのコードを共有する必要があります 近年いくつかの進歩が見られましたが、まだまだやるべき仕事があります。 責任者: 未定 ETA: ? ac. すべてのプラットフォームのカーネルコアダンプサポート いくつかのプラットフォーム (PowerPC ポート、ARM ポートなど) は、カーネルコアダンプや libkvm を使った検死デバッグを完全にはサポートしていません。これをアップデートすべきです。 責任者: 未定 ETA: ? ad. NDIS x86 プラットフォーム上のバイナリーネットワークドライバーのサポート 責任者: rittera ETA: 4.0 4. プラットフォームに依存するユーザーランド ============================== ab. m68k は sets を共有できるべきです 近年いくつかの進歩が見られましたが、まだまだやるべき仕事があります。 責任者: 未定 ETA: ? 5. その他 ======== aa. より多くのより良い回帰テスト 現在あるテストスイートは限られています。さまざまなプラットフォームの current とリリースブランチ用のテストを運用するために、システムを提供すべきです (またはボランティアプールを管理する? )。また、ATF を利用できるようにするために現在の 'regress' から 'tests' の環境のすべてをテストできるようにする必要があります。(qemu か、同様の物を使った仮想化も必要か? ) 責任者: jmmv ETA: 5.0 では、大部分の回帰テストを変更しなければなりません。 ab. 複数プラットフォームのネイティブ Java i386、amd64、sparc64、PowerPC を入手すれば好調にスタートできるでしょう。PowerPCは、より多くの仕事を必要とするでしょうけれど。(Sun の) 許諾は受けていますが、作業に取り組む人手が必要です。 責任者: Java 移植作業員 ETA: ? ac. 電源制御装置フレームワーク サスペンド/リジュームに関連して、プロセッサーの動的ステップスピード、ファン制御、シャットダウンや省電力のための電源サブシステム、熱制限値使用によるシステム維持、といういくつかのフレームワークがあります。 責任者: 未定 ETA: ?