From: Trans Date: 2007-04-27T21:00:10+09:00 Subject: Re: DHH vs. WHY style On Apr 26, 8:00 pm, Clifford Heath 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.