Orthogonally to the process open dev / release, we have the notion of
two different uses of Configurations.
I call them the Projects vs the Dependencies style.
Let us look at these two uses. I will take an example that is not in
Moose but we can see the exact
same problems in Moose.
There is a parallel with XMLSupport (a group loading XMLparser, writer,
SIXX, Pastell....
and XMLParser, XMLWriter
XMLSupport is a "Project" configuration: it is a convenient way to
group and load (in particular it expresses
dependencies to clients of XML) so the relation is not I load Sixx
because I dependent on it.
More I load it because I want to optionally offer it.
XMLParser is a "Dependencies" configuration: to parse XML we need
OrderedPreservingDictionary, Bitmap...
if we do not load them we cannot get XMLParser working.
Why this difference is important: When you want to build a tool using
the XMLParser you do not want to get SIXX. pastell
when you do not need it.
Based on this analysis we see that
PetitParser project, MooseIDE project are Projects
while
PetitParser (the package), MooseCore (the package) are dependencies
configuration.
Now the problem is that we do not have a simple way to express the
dependencies at the level of a package.
Because when coding the XMLParser package you would write that it
depends on SIXX.
Christophe is working on a prototype to get package dependencies
expressed at the package level
and he will present that at ESUG but this is not ready to use.
Now we could (but this is a lot of work) add a
configuration"Dependencies" to any package. These dependencies would be
really simple. We already have that for Traverser, Merlin, RoelTyper and
many others.
This way we could have
- Project configurations
- Dependencies configurations
Now I would like to see is do we do it? Would be good to have different
names to identify these configurations clearly.
Or at least have a description that clearly say it.
Stef