Being a professional that lives with the constant pain of dependency management hell I envy the Google engineers and their mono-repo. Last year we decided to remove the drivers folder from the libuavcan repo for the v2 version of this library. I regret that decision as it seems we may be heading towards a world where we have six or more of these repos.
One reason I’m bringing this up now is that I’d like to start an implementation “area” (read: I’d rather not make this another repo) called “libuavcan commons” that would provide some common, platform-specific implementations for auxiliary functions like logging and performance tracing. These would be optional implementations that could be ignored by default or compiled in when enabling a given introspection feature of the new library (or the user could chose to implement the feature themselves, of course). I guess this paragraph constitutes a proposal in its own right but before I can provide concrete examples I need to know where to submit the PR. So this post exists.
I have two proposals:
Undo the decision to break out the driver repos and return them to libuavcan. We would then deprecate everything except for the libuavcan repo.
Combine the drivers into one additional repo that we call “libuavcan_commons” which would contain actual implementations like drivers et-al. Libuavcan would then remain a header-only repo (with tests).
As stated in my opening I rather like (1) but would push for (2) as a compromise rather than (3) which is living with 5+ libuavcan repositories in github with no upper-bound.