7

In various tools there is the concept of "vendoring". i.e. Ruby's bundle, and Chef's Berkshelf.

"vendor" is not a verb and in documentation it's often assumed that I know what it means. Can someone help shed some light on what it is and the benefits of doing it.

7

Vendoring is the concept of downloading/installing a specific version of dependencies and making it available elsewhere (typically, within a local repo/folder of your supporting application)

Vendoring is usually done to prevent breakage occurring when dependences are no longer available. Vendoring also prevents your applications from breaking when dependencies are no longer available( for ex: the leftpad incident)

For example, let's consider you have your Chef cookbook that depends on another third party cookbook, say mysql2 chef gem. Now while mentioning in your metadata.rb, you didn't pin the version or vendor the cookbook. Lets consider the cookbook has had a version upgrade, breaking all previous APIs. The previous versions have also been taken down. In such a case, your cookbooks are suddenly broken as well and if you have a urgent deploy, your Chef run will fail.

Vendoring prevents this by making available the dependency on your local chef server, so even if the dependency has gone ahead, you can continue referring to the previous version and your cookbook will not break

(Also goes without saying, you must keep updating the dependencies and cookbooks, else you might get bit with some bad bugs)

2
  • 1
    Vendoring also protects you if the upstream repository disappears entirely. Jun 5 '17 at 16:35
  • @JasonMartin hah I started with the intent of posting about that and completely forgot about it! thanks for the reminder, will add that in Jun 5 '17 at 17:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.