The Glide Re-Architecture

When we originally started working on Glide we were trying to solve the problem of package management in a different way. It was before the Go vendor experiment. In the beginning we didn't use codegangsta/cli either.

Over the past year we moved to the vendor experiment, that will soon be the standard, among other changes. Over the course of time the codebase ended up with two problems:

  1. Legacy code from the old way of doing things was still around. Sometimes there was a new implementation and an old one being used in different places. This needed to be cleaned up.
  2. The style we originally used was now coupled with codegangsta/cli. Two ways of doing this combined wasn't going over so well.

In addition to these two things, we originally used the chain of command pattern which is akin to declarative programming. When contributors wanted to solve bugs or contribute features this became a stumbling block.

To solve these problems we re-worked the architecture and just merged those changes in. This will likely create some new bugs as the prior state of the codebase was stable-ish (just don't blow too hard on it).

Please take a look at this new Glide and help us get it into the next release.

For those of you looking to fix some bugs or holding off on some features you wanted to contribute now is the time when you can start to do that again.

Thanks for being patient with us while we try to make Glide be even better.