Stimme dedlfix zu. Meiner Meinung nach sollte die Einteilung zuerst die Funktionalität für den Nutzer sein, dann erst die Funktionalität für das Framework.
Also beispielsweise für eine Schachanwendung:
Core [1]
database
res
bin
conf
Engine
res
bin
conf
Tablebases
...
PGN
...
Polyglot
...
Ich verwende <Name> für Ordner die die Nutzerfunktionalität beschreiben und <name> für technisch-strukturelle Ordner (siehe dedlfix´s Post). Das ist natürlich eine persönliche Präferenz (aber beispielsweise Python macht es ähnlich). Ein smartes Framework könnte aus dieser Namenskonvention dann z.B. ableiten, wo es suchen muß.
Nach 'Core' packe ich während der Entwicklung alles hin für das ich noch keinen passenden Namensraum gefunden habe. Man kann auch 'Misc' nehmen oder den Ordner ganz weglassen und dessen Kindordner direkt ins Rootverzeichnis packen.
Gruß, Nils