Too many namespaces? Impossible!
Names give character and energy to any idea. They add excitement and enthusiasm, and make things fun. It's a secret project!
The name can be temporary, but it is useful to name ideas. Names provide a label that can be used to tag and organize multiple related thoughts or angles on a concept. Similarly, labels help disambiguate and separate ideas.
I love monorepos. They reduce overhead for starting new projects and toying with new ideas. They also avoid extraneous navigation - i.e. fixing a bug in some other dependent repo.
Separation of Concerns is useful and important, but doesn't mean code needs (or benefits) from being in a separate repo.
When I first started working with Babashka, I wrote most of the Ralphie namespaces as a library, to make it easier to build something like Clawe. I similarly built a separate Doctor repo, for consuming clawe's features in a non-babashka clojure context.
At some point, moving between these projects wasn't worth it. Projects tend to get their own REPL, and making tweaks to the code across projects didn't make sense. Pulling things into a monorepo means there's one place to work on all of these things, and they can all use the same repo. Plus you get the best/most up-to-date lsp configs and single place to manage deps.
There's a bit of work to manage multiple projects together like this, but that work tends to be minimal and paid one time - now any number of projects and top-level namespaces can be added.
Because of clojure's approach to namespaces, moving
this code together was very simple - the
src
dirs for the projects just merge
together.
In Godot, the case for a monorepo is even more
obvious. Addons are expected to live in an
addons
directory, and creating and working with a
separate godot project for every one of these would be alot
of extra work.
At some level of stability, it could make sense to break something out into it's own repo - I'd expect that to make sense if that project was not expected to change often (you know, like hardware).
In the meantime, keeping things in a monorepo helps them grow organically - some of them might change, some might go away completely.
Monorepos and early naming encourage experimentation and fun! Try new things and see what works faster!