When working on the previous iteration of butter, Ben mentioned that having namespaces might prove useful. As butter runs on a system of distinct “targets”, each of which has the ability to control it’s own destiny, on a large project the chances of clashing names would be large, so the idea of using namespaces made a lot of sense. Additionally it should allow for pieces of other projects to be included in the build. The way that it was implemented in the previous incarnation will make a reappearance at soem point, but the use of namespaces to reduce naming conflicts shouldn’t apply with this rewrite as I’m doing things differently.

First off during the setup phase (when we find all the targets) we are using the directory as the “base” which means that every target will now be declared in a directory. When added to the build it will therefore be known by the path to the target, ie it will have what appears to be a file path as it’s name. An example may help 🙂

Directory foo/bar
Target blah
Target Name foo/bar/blah

In this way target naming should be easier to manage.

Additionally every directory will automatically have a default target, making it easier to use butter for simple projects.