back

DragonFly BSD 2nd Step - Project Overview

2004-07-26 00:12:38(UTC)。FreeBSD の src/share/misc/bsd-family-treerevision 1.82 になった時間である。その commit message は次のようになっている。

Add DragonFly BSD 1.0.

Approved by: wosch (maintainer)

2004-07-11 に 1.0-RELEASE を迎えた DragonFly は、今また新たな転換期に入ろうとしている。

1.0 は DragonFly に多くのユーザを引き込むという役割を立派に果たしたといえる。筆者自身も、1.0 がリリースされてから DragonFly を使いはじめ、そして今まで 1.1-CURRENT をずっと使い続けている。メーリングリストを見ても、最近は 「DragonFly を使いはじめようと思っているのだが」 あるいは 「使いはじめたのだが、こんなエラーが出ている」 と投稿してくる人達をしばしば見かけるようになった。また、ただインストールして終わらせるのではなく、継続的に DragonFly を使い、気になる点があれば報告する人々の数も増えてきている。さらにいえば、私のおぼえている限りでも 1.0-RELEASE 後に commiter に就任した開発者が 4人いる。インストレーションの回数が増え、ユーザが増え、そして開発者が増えた。これは、間違いなく DragonFly BSD Project がうまくいっていることの証になるだろう。

Project は順風満帆なのだろうか ?

1.0-RELEASE から今までの約 3ヵ月という短い期間ではあるものの、私は DragonFly BSD Project をずっと見続けてきた。開発はもちろん進んでいると断言できるし、Project が掲げた当面の目標に少しずつ近付いていることは間違いない。フレームもなく、バイク小屋もなく、また雑音も極めて少ないコミュニティ。Project の行く道をしっかりと見据えている開発者達。あるいは、今の状況は非常に良いのかもしれない。ただいたずらに人を呼び込むことは、この調和を崩してしまうことになるのかもしれない。

しかし、絶対的に人が足りない。

Project に多数の人間が関わりを持つということがいい結果だけを生み出すわけではない。残念ながら、そこには悪い側面も少なからず存在する。*BSD に関わってきた人々はそれを経験的に知っている。しかし、そうした面を加味した上でも、私はやはりこう思っている。「絶対的に人が足りない」。私は、その状況を少しでも改善したいと考えている。

現状、DragonFly BSD Project について記述した日本語文書は極めて少ない。また、Project の内側の視点からの文書となるとほとんど皆無といっていい状況だ。私は、この文書があなたが抱いている 「結局、DragonFly ってどうなんだ ?」 という疑問を少しでも氷解させることを望んでいる。あなたが 「じゃぁ、使ってみるか」 と考えること、「じゃぁ、contribute してみるか」 と考えること、それは私にとって至福の喜びである。あなたが DragonFly のことを理解し、DragonFly に受け入れられ、そして DragonFly とともに歩む道を選んでくれることを願ってやまない。

開発体制

DragonFly Team と Commiter 達

基本的に DragonFly は The DragonFly Team に記載がある人達によって開発(保守、配布等)がされているということになっている。これは決して間違いではないにせよ、全くの真実というわけではない。もちろん人には多忙な時期というものもあるし、現在熱心に開発やその他の行動をしていないからといってその人の価値が下がるわけではないが、しかし Team のページ が現在活動している開発者のリストになっていないことは事実である。

以下は、私の独断と偏見に基づいた 現在アクティブな主要開発者達 のリストである。フォーラムを基準に活発さを計っているので、ここにあげられていない開発者達が即 アクティブではない というわけではない。あくまで、ひとつの参考として扱ってほしい。当り前の話だが、ここにあげられている開発者以外にも開発者は存在している。これは、あくまで部分的なリストである。

Matthew Dillon
プロジェクトリーダであり、現在(そしておそらく創設以来ずっと)最もアクティブな開発者。DragonFly の主要かつユニークな部分の開発は、ほとんど彼ひとりで行っているといっても過言ではない。またそれら以外にも、担当 commiter が明確に割り当てられていない仕事や、担当 commiter が手こずっているような仕事、あるいは手こずっていない仕事でも、つまりあらゆるところに口と手を出すことが多い。users や bugs 等のフォーラムでも、回答者がいない場合はほとんど全て彼が対応している。現在、Project 中で唯一のフルタイムの開発者。元 FreeBSD Commiter。
Jörg Sonnenberger (joerg@)
commiter。Team の紹介欄に 「Anything and Everything except web site」 とある 通り、ドキュメントを除くほぼ全域が担当範囲。担当範囲が重複しているためか、あるいは目的から担当範囲が広範になったのかはわからないが、Dillon のサポートのような仕事が主で、(主要部分の初期実装を除けば) Dillon とほぼ同じ内容の作業を行っている。
Jeroen Ruigrok van der Werven (asmodai@)
commiter。主に コア以外の部分を担当。いわゆる contributed software や dfports 関係の作業をすることが多い。The TenDRA Projects 創設者。
Scott Ullrich (geekgod@)
commiter。主に Installer 方面で作業を行っているが、OpenSSH の porting 作業も担当。
YONETANI Tomokazu
commiter。主に ACPI を担当。本人は 「I don't think I'm an ACPI expert」 と言っているが、既にプロジェクトの中では既成事実化。
Justin C. Sherrill
commiter。ドキュメントおよびウェブサイト担当で、src/ 以下には一切関与しない。DragonFly BSD Digest 著者。
Simon 'corecode' Schubert
公式 Snapshot master site である chlamydia.fs.ei.tum.de 管理者。Diary build のエラーログ等を提供。

作業方法

作業予定の公開、作業内容の議論、他雑多な連絡等は、他の *BSD と同様に フォーラムと呼ばれる各種公開メーリングリスト(ニューズグループとしても利用可能) 上で行われる。関係が近しい開発者間ではダイレクトメールがやり取りされたり、また IRC での議論の成果が入ることもあるが、基本的にはフォーラム上での作業が主である。また、DragonFly BSD Project は他の *BSD が稼働させているような GNATS & send-pr システムは導入していない。Project 用の Bugzilla も存在しているものの、公式のものとしては認められていないし、稼働率も微々たるものである。開発が進むにつれてこれらの正式導入はあるだろうが、現在ではフォーラムベースの作業が中心である。

開発状況

DragonFly Specific

今現在最も作業が優先され、プロジェクトリーダの Dillon 自身が取り組んでいるのが src/sys 以下の開発である。DragonFly BSD Project の goals であげられている DragonFly 固有の機能はこの部分が大半であり、最も優先されているのは当然とも言える。ただ、先にあげた通りこの部分の開発に取り組んでいるのは現在では Dillon ひとりであるし、当然の通りここで問題があると立上りすらしない状況になるので、開発は慎重かつ段階的に行われている。

2004-10月現在は 8月に着手された VFS への修正作業が行われている。Dillon の commit log によれば、現在の進捗は 8/99。今後の状況によって左右されることはあるかもしれないが、このままだとおよそ 1年後に完全な形で修正が終わる予定である。また、その間には他の部分への修正も同時並行的に行われると思われる。

その他

kernel の特殊性が話題の中心になることが多い DragonFly ではあるが、当然それ以外の作業も行われている。ここでは goals で触れられている以外の kernel と Base System、dfports、そして最近取り入れられた安定版提供の仕組みである DragonFly_Stable について解説する。

Kernel & Base System

以下は、1.1-RELEASE のために保守されている 「Feature/update/release documentation for DragonFly 1.1」(2004-10-20) から抜粋したものである。

Kernel Changes

Userland Changes

Contributed Software

一覧を見てもわかる通り、幾つかの作業は確かに行われている。しかし、その速度は非常に緩やかだ。例えば、BIND 9.2.4rc7 が入ってから結構な時間が経過しているが、rc が取れた正式版の 9.2.4 が入る気配はないし、FreeBSD で既に Base System として取り入れられた 9.3.0 は議論の対象にすらなっていない。新しいバージョンがリリースされたからといってすぐに取り込むことがいいと言っているわけではないが、その点を加味した上で考えても作業速度が非常に緩やかであることは疑いようがないことだろう。現在の開発では DragonFly Specific なことが最重要視されているという事情があり、この作業がある程度進んだ後にこれらの一般的な開発に目が向けられることを期待している。

dfports

1.0-RELEASE が出されてから、技術的な変化はない。DragonFly は現在も FreeBSD Ports System を利用しているし、FreeBSD Ports で install できない Port や、FreeBSD Ports で install したバイナリに問題がある場合のみ dfport が作られ、dfports/ 以下に加えられていっている。

現状では、dfports は FreeBSD Ports System と協調して動作する。dfport と port の違いは、/usr/(df)port/*/Makefile が bsd.port.mk を include するか、あるいは bsd.dfport.mk を include するかの違いであり、それに加え dfport では files/ 以下に DragonFly 固有の patch が置かれていることが多い。それ以外は dfport も port も同じものであり、両者ともに FreeBSD Ports System の仕組みに則って動作する。ports/packages db も ports のものを利用するし、例えば pkg_version などは dfports と FreeBSD Ports をあわせた情報を出力する。FreeBSD で最近日常的に用いられるようになった sysutils/portupgrade も修正なしでおおむね正常に動く。暫定的な処置であることを考えれば 、悪くない動作であると思う。

しかし、「dfports system は 100% 問題ありませんか ?」 という質問をされれば、DragonFly ユーザ(開発者含む)の大多数は No と答えるだろう。これは 「ソフトウェアに 100% はない」 という哲学的・宗教的な問題とはまた別の現実的な問題を含んでいる。つまり、FreeBSD Ports System は FreeBSD Project が管理しているものであり、DragonFly BSD Project が管理しているものではない、ということだ。そしてそれは日々更新される。細かな差異が問題を孕んでいる可能性はあるし、実際、DragonFly 上で portupgrade を使用していると問題が発生することもある。ただ、それらの問題は非常に些細なことである場合が多く、FreeBSD Ports System の仕組みを簡単に知っていれば、わずかな修正を加えることで回避することが可能だ。いずれにしろ、最低限の知識と経験さえあれば、dfports は簡単に扱うことができるし、現時点の DragonFly にとっては最良解であるといえる。

DragonFly_Stable

Project のウェブサイト上の FAQ でも取り上げられているが、DragonFly では 暫定安定版として DragonFly_Stable と呼ばれているものが用意されている。これは単なる cvs tag であり、Dillon によって 「ここは安定しているポイントだろう」 と判断された場所に適宜打たれる。DragonFly は他の *BSD と同様に cvsup での update が基本となっているが、cvsup で同期する tag に DragonFly_Stable を選べば、 Current の恐怖を味わうことなく Current に取り入れられた成果を自らのシステムに取り入れることが可能になっている。

DragonFly_Stable を扱うにあたっては注意点がふたつある。ひとつは、 Dillon の判断と言えども、絶対ではない ということだ。DragonFly_Stable と同期を取っていても、不安定な部分が出てこないとは言い切れないし、実際、DragonFly_Stable が導入されそれが何度か打たれた後、 「適切な場所ではない」 という理由で tag の場所が戻されたことがある。また DragonFly_Stable が打たれた後に 「まだ早すぎる。差し戻すべきだ」 というコメントがついたこともある。筆者の感想では、DragonFly_Stable が打たれた後、フォーラムを 1週間ほど注視し、cvsup するかどうか考慮する必要があるというのが正直なところだ。

ふたつめの点は DragonFly_Stable の成立ちそのものにある。先程も書いた通り、DragonFly_Stable は単なるひとつの tag に過ぎない。FreeBSD のように安定版のためのブランチではない。名前こそ 「Stable」 となってはいるものの、結局 Current の snapshot 的なものなのである。当然専任の管理者もいない。そこには、安定性への配慮や 「Stable なのだから」 という理由の遠慮などは一切ない。つまり、ひとつめの注意点とあわせて、DragonFly_Stable だから極めて安定している とは言い切れない、ということだ。これは、Dillon 自身も 「他の *BSD の -STABLE のようなものではない」 として遠回しに認めている。

注意点のみ強調してきたが、それらの点に配慮できれば DragonFly_Stable も悪い選択肢ではない。HEAD と常に同期を取っていくよりもはるかに少ない注意力で、常用に耐えうる DragonFly System を維持できることだろう。しかしその場合でもやはり、フォーラム(あるいはそれに値するもの)に注視するということは絶対条件である。

今後について

予定

いい意味でも悪い意味でも、現在の予定通りに開発が進めば、今後は下記のような作業が主に行われていくということが予定されている。

  1. 1年以内に VFS の作業完了
  2. VFS への作業完了後に DragonFly/amd64 への本格対応作業開始
  3. 1.1-RELEASE は BGL Free と VFS の作業等に加え、new dfports も含める

現在では 1.1-RELEASE が来年中に出るのかどうかすら予測できない状況だ。また、 DragonFly のリリースは「時間ベース」ではなく、「機能ベース」で行われる予定であり、その点から考えてみても、今後のことを予測するのは非常に難しい。

現在発表されている 1.1 の内容を見る限り、ウェブサイトに書いてある機能のほとんどが 1.1 に盛り込まれる予定になっている。1年というのはリリースサイクルとしては長い期間であるように感じられるが、もし全ての機能が実現されるのであれば、それは非常に短い時間だと言える。1.1 が予定されている機能と共にリリースされるとしたら、それは素晴らしいものになることは間違いない。私達は 1.0-RELEASE で見ることができなかった本当の DragonFly と、そしてそれが実現する素晴らしい革新を目の当たりにすることができるだろう。

未来へ

「輝かしい未来を語ることは誰にでもできる」 とよく言われる。DragonFly BSD Project の面々は(自分達でも認めている通り)広範囲かつ高い水準の目標を掲げがちだ。現在 DragonFly を使用している人なら誰でも、現状と目標とがかけ離れていることを知っている。

同時に我々が知っていることがもうひとつある。開発は進んでいるということだ。DragonFly には trunk しかなく、また文書等も絶対的に不足しているせいで、現在の開発状態が表に出てくることが極めて少ない。リリースがないため、リリースインフォメーションもない。ウェブサイトも細かく update されているわけではない。もちろん、文書等の整備が遅れていることは当然真っ当な批判となるべきであるし、開発作業が行われるのと並行して改善される必要があることは事実である。

しかし、もう一度書こう。開発は日々進んでいる。目指すべき具体的な目標も既に設定されている。開発者達は日々作業に取り組んでいるし、成果は着々と積みあがってきている。私がこの文書で伝えられること、そして伝えたいことは、ただその1点のみである。

あとがき

とりあえずプロジェクトはどんな感じよ ?

という質問に応えられればいいなと思いつつ書いてみました。本文中でも書いた通り、1.1-RELEASE は出る気配が全然ありません。その一方で、この後書きを書いている時に FreeBSD 5.3-RELEASE が出そうとの情報が入ってきました。5-STABLE も既に branch 済みです。FreeBSD 4.x から FreeBSD 5.x へ移る人達が沢山いるでしょう。

分岐点です。

DragonFly はどうですか ?

更新履歴