I write this because you wanted to know what others are doing. That's what I'm doing. I would not argue that this is "best practice."
1) When the years pass, I realized that I remember my libraries through projects. Because projects were urgent tasks, not libraries.
2) We no longer program in the same language. The trend towards cloud servers and applications has to be addressed with multiple platforms in multiple languages.
3) I saw that every time I create an application, if it gets better, the platform codes begin to reflect the coding language and functional similarity (as far as possible) to the structural similarity.
4) When you look back at a project, it should be ready for re-work, or any compilation should be possible without redefining directory structures, etc. So, if you use the code of a specific platform, you must do this in accordance with the platform coding requirements, for example, it is almost absurd to force Android code to be stored in a different directory structure and then overshadow.
So how do I do this:
The main entry point is always project . Under this, I am sharing on platforms. Underneath this, I am sharing on platform tools and frameworks.
ie:
TheGreatWebProject |------->Server | |------>Php | | |------>aScaryPhpFrameWork | | |------>myPhpLibraries | | |-----------> myPhpLib1 | | |-----------> myPhpLib2 | |------>DotNet | |------>aScaryDotNetFrameWork | |------>myDotNetLibraries | |-----------> DotNetOutputs | |-----------> myDotNetLib | |-----------> myDotNetSources | | |------->Client | |------>Html | | | |------>Css | | | |------>JavaScript | | |-----------> aScaryJsLibrary | | |-----------> myJsLib1 | | |-----------> myJsLib2 | | | |------>ActionScript3 | |-----------> aScaryAs3Library | |-----------> swfOutputs | |-----------> myClient1.fla | |-----------> myClient2.fla | |-----------> myAs3AppSrc(in package | management file structure) | | |------->Extras |------>Locales |------>Documents |------>Images |------>Audio |------>Video |------>Other
For each subsection, the subcategories will reflect the implementation dependency, ide, and platform. Therefore there is no great cure that fits all ...
Now, finally, I have a catalog: projects, and under it I have catalogs of years, and in each year I have projects that I did this year ...
Hope this helps.