On Apr 26, 8:00 pm, Clifford Heath <no.s... / please.net> wrote:
> Joel VanderWerf wrote:
> > What about putting your colorful names inside of generic namespaces?
> >   aop/tapestry
> >   cli/comrade
> >   file/fileside
> >   text/annote  (?)
>
> +1. In fact I have a whole taxonomy of infrastructure
> terms I've used, and being able to locate a "body of
> work" is much easier if such a taxonomy is used.

I like the taxonomy too, but this naming scheme for requires is not
really ideal. These colorful names represent a repository or part of a
repository. In general, a package could just as well have lib files
that fall under variant categories, and I don't think it's a good idea
to spread them out over a number of subdirectories. So it's better as:

   tapestry/aop/..
   comrade/cli/...
   fileside/file/...
   annote/meta/...  (?)

The initial names are simply namespaces that separate these libs from
other repositories/packages. If the libs were part of the standard
library, then the initial namespace could be removed. In fact it would
not be unreasonable to use a domain name for this. For example:

  require 'facets.rubyforge.org/aop/...'

That's really the community friendly way of doing things. Although,
since Rubyforge is by far the most common source of all libs ruby, it
is also reasonable to omit the host name (.rubyforge.org). Indeed,
registering a project with Rubyforge gives one the right to use that
toplevel require space. Unfortunately there's a bit of an unspoken
schism in the community (which I mentioned in an older post) as to
whether it is actually the first use of a gem name that gives one a
right to a toplevel namespace instead. None of this is enforced of
course, but it's basically the unspoken standard. And it clarifies the
difficulty of what I am attempting b/c it means 1) I have to figure
out how to organize and name the redistributable subsections of this
large repository and 2) figure out how that should effect the require
namespaces. Since there is no general consensus on this I am left
figuring out what to call and how to tie together the repository name,
the package names and taxonomy to achieve this.


BTW, I'm really impressed with the responses thus far; lots of great
insights from all of you. Thanks guys!

T.