I find it curious that whenever I design an application and begin to
organize the class/module namespaces, I get something like:

  module FooMusic

    class Instruments::WindInstruments::Trumpet < WindInstrument

    class Instruments::WindInstruments::Clarinet < WindInstrument

    class Instruments::StringInstruments::Violin < StringInstrument

Which seems very nice for explicitness, But then, of course, I think
it's way too wordy. So I'll scale it back to something, that doesn't
read as nice, but is nonetheless more concise.

  module FooMusic

    class Instruments::Winds::Trumpet < WindInstrument

    class Instruments::Winds::Clarinet < WindInstrument

    class Instruments::Strings::Violin < StringInstrument

But then I start to think, what does all this hierarchy matter? Is
anyone ever going to 'include Instruments'? I call YAGNI on myself.
Save some bytes and typing and end up with:

  module FooMusic

    class Trumpet < WindInstrument

    class Clarinet < WindInstrument

    class Violin < StringInstrument

And honestly I'm pretty happy with that, except.... Have classes other
than instruments in the app, say Musician and Orchestra, then I run
into two sore spots:

1) If file names reflect module/class, then file organization gets
messy. Eg.

  foomusic/clarinet
  foomusic/musician
  foomusic/orchestra
  foomusic/trumpet
  foomusic/violin

So I tend to want to organize the actual files according to category
(as in the earlier module organization):

  foomusic/instruments/wind/trumpet
  foomusic/instruments/wind/clarinet
  foomusic/instruments/string/violin
  foomusic/players/musician
  foomusic/players/orchestra

That's okay, I can live without that general correspondence between
namespace and file name. But...

2) The RDocs aren't sorted by subclass, so organization is messy there
too. And I feel much worse about this one because documentation is so
important. However, I keep telling myself "don't code to the docs".
Not sorting by subclass is a lack of RDocs, and not something I should
compensate for in my library design.

What are other people experiences with all this? Do you find it better
use highly categorized namespaces and to stick with namespace/filename
mapping? Or have you too found alternates organizations you prefer?

Thanks,
T.