"Stephen R. van den Berg" srb@cuci.nl wrote:
Then I thought about what these things are about, and decided that the (in my mind) logical group I'm thinking about all has to do with *hardware* I/O.
Maybe Peripherals, Interfaces, or Bus, then? Although I still believe the distinction between that and Protocols could potentially get blurred.
So I'm currently implementing USB and OneWire, but I could imagine that other stuff that belongs in this category would be things like: I2C, SPI, 1-Wire, USB, JTAG, MIDI, PC keyboard, UART
Technically precise names like these are perfectly good by themselves - the risk of an accidental name conflict with something else is minimal. Adding any hierarchical structure in such cases doesn't help. It can only make it more difficult to find the module since one would have to figure out how the implementor has thought, which in the case of Pike with its rather weak central control means it probably isn't even coherent, since different module writers have had different ideas.
Wikipedia is a good example of a very large flat namespace. Considering its size I think it shows well how relatively seldom name conflicts occur in practice, and how easy it is to find the right definition for a specific term. It would definitely be a whole lot more difficult if they had tried to impose some kind of hierarchical classification system. In particular if there could only be a single hierarchy, as would be the case with pmod directories.
So that just leaves the problem that the top level list could grow long. I think that's non-issue in practice, considering the tiny amount of development in Pike, but if it would become a problem it could be handled with some search tools.