10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vendoring とは; そのメリットとデメリット

Last updated at Posted at 2019-09-22

vendoring とは何か

"vendoring" とは(あるいは "vendorする" とも)、ライブラリなどの依存先ソフトウェア(dependencies)のコピーをリポジトリに取り込んでしまうことを言います。

vendoring のメリット

  • 依存先がなくてもビルドできます
    • 依存先が削除された時にも安全です。 (具体的には、軍事利用に反対した作者によってパッケージが突然削除された事例1や、容量制限のため古いバージョンを削除している事例2などがあげられます)
    • ネットワークがない、または制限されている環境でもビルドできます。(CIやオンサイトなど)
  • 同じ環境を容易に再現できます。
  • 依存先のソースに独自のパッチをあてることができます。
  • 開発環境にたくさんのパッケージを入れる必要がありません。

vendoring のデメリット

  • リポジトリが大きく、重くなります。
  • 依存先の履歴やタグなどが失われます。
  • 依存先のソースにパッチをあてることができてしまいます。
    • そのため、依存先にdivergence(分岐)が発生する可能性があります。
    • そのため、依存先が正規のコピーであるかそれとも独自のパッチを当てたものであるか、後で把握するのが大変になります。

vendoringの具体例

  • 最近、私はとあるソースコード生成ツールのテンプレートについてvendoringした方が良いと判断しました。テンプレートはOSSでダウンロードしたものですが、十分なバージョン管理が行われていないためです。
  • (TBW)

参考資料

  1. A Developer Deletes His Code to Protest Its Use by ICE

  2. https://github.com/google/jax/issues/8640#issuecomment-975030663

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?