FreeBSD Daily Topics

2010年12月21日groff(1)をmadoc(1)で置き換えるプロジェクト

2010Q3 FreeBSD Status Reportが公開されました。報告されている中から興味深い話題を紹介します。

mandoc/mdocml - groff Replacement for Rendering Manual Pages in FreeBSD

オンラインマニュアルにはroffフォーマットが使われています。このデータをgroff(1)を使ってコンパイルして利用する仕組みになっていますが、これを別のツールで置き換えようという取り組みがあります。mdocmlと呼ばれる取り組みで、とくにその主要コマンドからmandocとも呼ばれています。

groff(1)からmandoc(1)へ置き換えを進めようとしている理由はいくつかあります。主な理由は次のとおりです。

  • groff(1)のソースコードは5MBを超えており、ベースシステムに組み込むには大きすぎる
  • ソースコードにはC++が採用されている(C++は複雑さやツールの関係もあり、ベースシステムのコードとしてはCの方が好まれる傾向にある)
  • ライセンスにGPLを採用している
  • 処理速度が遅い
  • 出力が不確定なところがある
  • OSごとに動作違う傾向がある

mandoc(1)はこれを解決することを目指しており、C言語を採用し小サイズのソースコード、ISCライセンス採用、動作速度は高速で出力は常に一定で決まった出力をするという特徴があります。このツールはすでにNetBSDおよびOpenBSDで採用されています。

FreeBSDでも同様の取り組みが進められています。ただし、FreeBSDで採用するにはいくつかの機能が足りていないため、それらを実装するとともに、マニュアルページ側をクリーンナップして処理できる形へ整理する必要があります。Ports Collectionにgroff(1)のportを追加する作業も必要になります。今後の作業としてはそれら残りの開発やマニュアルページのクリーンナップの他、mandoc(1)の移植関連の作業、それに将来、ベースシステムのgroff(1)をどういった扱いにしていくのかといった議論を実施する必要があるとされています。

おすすめ記事

記事・ニュース一覧