複数のプロジェクトを横断して使われるモジュールとかそういうかんじの単位のものをどう扱うか、というはなしについて、僕もいろいろ思うところがあっていろいろ考えたりもしている。
- 更新が楽
- VCS (Git) と相性がよい
- 重複しない
「みなさ〜〜〜ん更新してくださ〜〜〜〜い」と必死で声をかけるのはつらいし、できればコマンド一発でどうにかしたい。その点、Git submodule はたいへん扱いづらい。
また、VCS との相性も重要で特に分散型 VCS を使っている場合、頻繁にブランチは切られてマージされるため、衝突解決もろもろがめんどうな手法だとつらい。その点、Git submodule はたいへん扱いづらい。
重複しない、というのは修正は一箇所で済むように、ということ。要するにコピペはしたくない。
で、RubyGems の source を自前で立てる、というのはどうか。つまり gem として管理するので Bundler とかで普通に管理できる。が、ホストするのは自前なので、公開する必要はない。いかんともしがたい理由で公開できないようなモジュールとか、やむをえず fork したけど還元できるような patch をあてているわけではない、とか、そういうものとうまく共存できるのではないか。
べつに Ruby の文化圏に限ったはなしでなくて、たとえば OrePAN がそういったことができるようにみえる。