I am about to re-structure a lot of classes into juce modules, and am wondering how to do it right, especially since I’m about to share some of them to the public.
So what are your thoughts on…
Namespacing
I like how JUCE uses and respects namespaces, but when coding it doesn’t requireh the verbosity of fully qualified names or the problems from “using” directives.
When developing a juce module, should we just pick our own top-level namespace or put everything in a sub-namespace within juce::?
Personally I’d find it very convenient if I could just select a 3rd party module in the IntroJucer (with code in a different namespace), but have the option to automatically add “using namespace juce::somemodule” to the generated header files. Then you wouldn’t need to worry about namespaces until you run into a name clash. Any opinions on this, or how it could be done?
Module files
Is there a tool for creating the “amalgamated” module headers and .cpp files? I assume there is, because of the “START_AUTOINCLUDE” strings, but couldn’t find anything within the juce source tree. I’d like to stick to the same structure, but don’t want to maintain those manually.
git best practices
Currently I am putting my modules into a local clone of the juce repository, pull changes from jules’ repo and then push the merged tree to my private remote repo. Is this the best way to do it? It’s convenient for personal use to have my modules and the “official” ones in a single place, but…
How do I easilly merge other modules (like dRowAudio http://www.rawmaterialsoftware.com/viewtopic.php?f=6&t=8366&hilit=dRowAudio) into the right place within that repository, so they get picked up by the IntroJucer? I guess there is a smart git command to do so, but I have not yet figured out how to do it.
Also: When I want to publish my modules, I’d like to push only my module subdirectories into a public git repository (since no one will be interested in my whole juce clone). Anyone knows how this can be done best? Do I need a special repository/submodule setup from the beginning, or can I just work with my clone of juce for now and worry about “exporting” the subdirectories to another repository later?