なぜモジュールをgithub止まりにするのか
『tl;dr』
http://d.hatena.ne.jp/charsbar/20080606/1212704287
『tl;dr』は甘え
ここまで読んで意味がわかった方には、このポエムを読む必要などありません。読むだけ時間の無駄ですので、より創造的な活動に貴重な時間を費やしていただきたい。
え?どういうことw
はい、此処から先は、上記の意味が解らなかった方向けにお届けする、自戒風個人的見解というジャンルのポエムです。
CPANにモジュールをリリースするということ
思うに、少なくとも以下のような意味があるはずです。
あなたの作ったモジュールが、cpanm一発でインストールできるようになる。
これはそのままで、単に
cpanm Your::Module
などのようにすることでインストールできるようになることを指しています。あなたの業務で当該モジュールを利用していた場合、確かにこれは如何にも便利だと思います。
あなたの作ったモジュールが、世界中のperlプログラマから「選択」される可能性が発生する。
同時に、あなた以外の(あなたが全く知らない)perlプログラマが、あなたのモジュールを
cpanm Your::Module
としてインストールし、利用する可能性も発生します。
モジュールがどのように評されようとも、それはリリースした人間の責任である
例えば、webサービスへのリクエストを発行する機能がある場合。
anon. > webサービスのラッパーモジュールがテストで実際にAPI叩くの渋すぎるな
このような評価をされてしまう可能性があります。
また、
anon. > 依存漏れがあるっぽい(けどほっとこう
というケースもあるでしょう。
全部自分でやる必要もないのですが、やはり自らリリースしたモジュールについては、相応の責任をもつことが重要でしょう。
後続のperlプログラマがcpanを探索した時に与える影響を少し考えてみる
あるいは、もっと別の観点から考えると、
anon. > CPANは慎み深い文化だからなー
anon. > さすがに劣化コピーが蔓延してしまうのは得がない
このような指摘が出てくるというものです。
何故か。それは、「検索性」というキーワードで説明がつきます。同じような機能を持ったモジュールをリリースしたとあれば、まだCPANに慣れていない「利用者」からすると、どれを選べば良いのかわからなくなるというものです。
もしあなたの作ったモジュールを「本気」で「選択」してほしいと思うのであれば、競合しているモジュールが完全に霞んでしまうほどの利点が必要だと思います。
「CPANでのモジュール公開」は手段であるべき
上述のような特性から、CPANへのアップロードは手段であるべきで、曲がり間違えても「目的」などになってはいけないわけです。
この点については、僕自信も相当に自戒すべき点があるのですが、であればこそ、同じ過ちが起こることを食い止めたいと思い、このポエムを書いたわけです。
だからモジュールをgithub止まりにする
とはいえ、「じゃあ一体どういうものを上げればいいのよ?」という向きの言い分も解らないでもないです。
完全に個人的な目安でしかないのですが、僕は最近、以下のような観点で2個以上該当するかどうかで、CPANへのアップロード可否を判断しています。
機能面において、競合するモジュールが全く存在しない
機能面において競合するモジュールがあるが、比較して、依存が少なく、性能も遥かに凌駕しており、コード量が圧倒的に少なく、見通しが良い。
既に自分と自分以外の誰かが利用していて、評判もそこそこ以上であり、利用者からのフィードバックやPull Requestなどの助力が受けられる見込みがある。
github上でのスターが20個以上である
ちなみに項番4は未だに該当したことがありません。
まとめ
「tl;dr」で済ませてはいけないものが世の中にはあるんですよ!