Why you should never do major changes to an API/Major flow in a minor release.

You’ll have to pardon my rant, as it is a rant, however it is one that annoys me strongly when it happens… Something changes in minor release of something.

In this case, my pain is Chef; as 0.7.0 came out we were rocking with Metadata.rb, as I wasn’t paying attention and reading release documentation properly suddenly that doesn’t do squat, and everything is in Metadata.json. I’m sure there was something in one of the release notes that I omitted, however it brings up a valid point that Opscode has broken many times (I am only mentioning these 2) in the .7 release cycle

They have repeatedly broken the basic idea of not making major changes in a minor release, such as this, or when they re-wrote the bootstrap system; and then neutered the old system so you had to use the old bootstrap tarball (which is the only reason I am not up in arms).

… However, if you want to do things like this, you should release a new major version and allow people to get used to the major changes. There are always growing pains with anything new, different, … however the past has taught us that you should not make stupid major changes to a structure without a major release.

Here’s to hoping that they don’t continue this fatal folly in the .8 series (when it’s out)

update

Adam Jacob has mentioned that .8 will be a smoother release and not have the backwards compatibility issues that plagued .7

Posted by scottmlikens on Monday, November 02, 2009