[chef-dev] Re: Re: Re: Mixlib::Versioning 1.0.0 released

Chronological Thread 
  • From: Jay Feldblum < >
  • To: Daniel DeLeo < >
  • Cc: Mike < >, Seth Chisamore < >, " " < >, " " < >
  • Subject: [chef-dev] Re: Re: Re: Mixlib::Versioning 1.0.0 released
  • Date: Sat, 30 Mar 2013 16:55:00 -0400


The chef-client could also do the dependency resolution itself rather than asking the chef-server to do it. The only new API the chef-server would need to provide is a batch API to fetch the full metadatas of all versions of all cookbooks uploaded to the chef-server, or at least as much of the metadatas as is necessary for the chef-client perform the dependency-resolution. The chef-client can then perform its own dependency-resolution on that data and the chef-server wouldn't need to be involved.

In fact, perhaps this should be done anyway. Dependency-resolution can take exponential time. Nothing on the chef-server should ever be permitted to take exponential time. While it is a problem for a given chef-client if the dependency-resolution takes too long on the chef-client, it's a problem for all clients in an infrastructure if that knocks out the whole chef-server rather than just the one chef-client.

Regarding environments, I've added my thoughts here:


Regarding Mixlib::Versioning - cool! I've added my thoughts here:


On Sat, Mar 30, 2013 at 3:28 PM, Daniel DeLeo < " target="_blank"> > wrote:
Chef 10.x won't be getting any new features, and there'd have to be an erlang version of the library to get support in the chef 11 server.

Honestly, though, I'd much rather remove dependency solving from the server entirely. If we radically simplify environments to support only exact cookbook versions dependencies then its relatively straightforward to add versioning of roles to environments, which would solve a lot of wailing and gnashing of teeth. 

In this scenario, you'd still have x.y.z (+ etc) version numbers, but they'd be used for communication between developers (the "semantic" part of semver) and by tools such as berkshelf and librarian when resolving dependencies. Since the server wouldn't use the version numbers, we could relax the restrictions on them to support all the prerelease stuff without adding complexity to the dependency solver algorithm. 

Daniel DeLeo

On Saturday, March 30, 2013 at 11:13 AM, Mike wrote:


This looks awesome! Can we expect this library to supplement cookbook
versioning in Chef Server/Client/Solo so cookbooks can be SemVer
compliant with prerelease and build numbers?


On Sat, Mar 30, 2013 at 1:24 AM, Seth Chisamore < " target="_blank"> > wrote:
We just open-sourced mixlib-versioning which is general purpose Ruby library that allows you to parse, compare version strings in multiple formats. This library was born out of work done in support of Omnibus, Omnitruck and our internal Jenkins build pipelines.

The library has been published to Rubygems.org and source code is available on GitHub:

We hope some people in the community find it useful!

Seth Chisamore
Software Development Engineer, Opscode, Inc.
IRC, Skype, Twitter, Github: schisamo

Archive powered by MHonArc 2.6.16.