vendoring とは何か
"vendoring" とは(あるいは "vendorする" とも)、ライブラリなどの依存先ソフトウェア(dependencies)のコピーをリポジトリに取り込んでしまうことを言います。
vendoring のメリット
- 依存先がなくてもビルドできます
- 同じ環境を容易に再現できます。
- 依存先のソースに独自のパッチをあてることができます。
- 開発環境にたくさんのパッケージを入れる必要がありません。
vendoring のデメリット
- リポジトリが大きく、重くなります。
- 依存先の履歴やタグなどが失われます。
- 依存先のソースにパッチをあてることができてしまいます。
- そのため、依存先にdivergence(分岐)が発生する可能性があります。
- そのため、依存先が正規のコピーであるかそれとも独自のパッチを当てたものであるか、後で把握するのが大変になります。
vendoringの具体例
- 最近、私はとあるソースコード生成ツールのテンプレートについてvendoringした方が良いと判断しました。テンプレートはOSSでダウンロードしたものですが、十分なバージョン管理が行われていないためです。
- (TBW)
参考資料
- What does the term “vendoring” or “to vendor” mean for Ruby on Rails?
- Python でも Vendoring すれば環境汚染しないパッケージが書けて嬉しい
- "Vendoring" is a vile anti-pattern