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.