Blog

Module::Install の功罪

M::I が最近微妙だよねという話を懇親会をしていたら、なんか中途半端につたわった感じがあったのでちゃんとまとめておきますね。箇条書きだけど。

利点

  • DSL でかけるのでみためがかっこいい。
  • プラグインとかあって便利
    • 最近は author_tests と、XSUtils ぐらいしかつかてないけど

欠点

  • auto_install がやばいし、つかってると charsbar さんに DIS られます
  • include_deps は依存モジュールがアップデートしたときにしぬ!
  • use_test_base がぶっこわれてる → include_deps をつかいこなすのが無理ゲーな実例
    • use_test_base は test_requires 'Test::Base'; で代替しましょう
  • プラグインがインストールされてない時のエラーメッセージが凶悪
  • dotcloud でつかうには git add -f inc/ しなくちゃいけなくてめんどい
    • とはいえ通常 inc/ を repository にいれておくともともとはいっている Module::Install のバージョンとちがうのをコミッタがいれてると微妙なかんじになったりするので複数人開発の際にめんどくさい
    • dotcloud 対応という意味で Amon2::Setup では EU::MM を採用している

test_requires/configure_requires が今はある

test_requires/configure_requires の存在により inc/ がオワコンになっている
configure_requires をサポートしていない CPAN シェルをつかっている人はもう無視していい時代にきている。CPAN シェルつかってる人は最新版の CPAN.pm をつかってください。CPAN モジュールをインストールしようとしているのに CPAN.pm をアップグレードできない人とかいないでしょう。
CPAN Testers とかも基本的にサポート済のレポートがあがってきている様子

感想

M::I の存在によって進化せざるをえない状況においこんだという面もあるのかなーとおもったりもするし、Module::Build が dagolden の事情などなどによって停滞しておるという面もあるので、アレゲですね。 EU::MM は最近は mst ちゃんがリリースしてくれてたりするので、EU::MM 直接つかえばいいんじゃねえの! という気分になったりしています。