Perlのbug report eco-systemはどのように素晴らしいのか

Perlのbug report eco-systemまわりはOSSとしてはわりと理想的だと思っています。つまり有用なレポートを生成する仕組みがあり、perlコア開発者だけでなくライブラリ開発者もその仕組を活用できるため、可搬性のあるソフトウェアとしてメンテナンスし続けやすいのです。もっとこのあたりはもっと真似されるべき。

まずバグレポートには現象と再現手順と環境の情報が必須ですが、環境の情報は perl -V で非常に簡単に取得できます。これは以下の情報を含みます。

  • ソフトウェアの名前とバージョン (e.g. perl 5.18.1)
  • ターゲットプラットフォーム (e.g. osname=darwin, osvers=12.4.0, archname=darwin-2level)
  • ビルドオプション (e.g. config_args='-Dprefix=/Users/goro-fuji/.plenv/versions/5.18.1 -de -Dusedevel -A'eval:scriptdir=/Users/goro-fuji/.plenv/versions/5.18.1/bin'')
  • コンパイラやリンカの情報や具体的なオプション
  • intなどのプリミティブ値のサイズ
  • 実際に有効になっている主要なマクロ (e.g. USE_PERL_ATOF, USE_THREADS)
  • 関連しそうな環境変数 (perlのばあいはPERL_*がperl -V で列挙される)
  • ライブラリの検索パス (@INC)

Perlには標準で perlbug(1) が付属していまして、これをつかってreportを作ると自動的に perl -V の結果が添付されるので、利用者としては現象と再現手順を記すだけで済みます。perlbug(1)を使わないケースでも、このperl -Vの結果は必須です。これがperlの処理系まわりのこと。

ライブラリについてはさらに、CPAN Testersというインストール時のユニットテストの結果を集計するしくみがあり*1、ライブラリ開発者はだれでもその集計システムの恩恵にあずかれます。もちろんCPAN Testersのレポートも perl -V の結果が付加されるほか、ライブラリの依存モジュールのバージョンなども記載されます。

CPAN TestersとTravis CIを比較すると、リリースされたバージョンに対してテストを行うこと、さまざまな環境でテストを行い、処理系のバージョン x OSでマトリックスを生成することなどが違います。

このシステム、CPAN Testersについては以前エントリをかいたのでそちらもどうぞ。


YAPC::Asia 2013でも関連セッションがありました。スライド:

*1:そもそもPerlのライブラリはインストール時にユニットテストを走らせるという文化があります。これも特徴的かも。