Where do you put stuff?
Cliff Brake October 16, 2024 #git #organizationThere are a lot of ways to organize product development information.
You could do something like:
- productA
- firmware
- hardware
- yocto-build
- docs
- manufacturing
- productB
- firmware
- hardware
- yocto-build
- docs
- manufacturing
The above is nice in that it keeps all the stuff for each product together, but discourages re-use between projects.
If you want to build a platform, then it may make more sense to do something like this:
- Firmware
- Boards
- productA
- productB
- Apps
- Common
- Boards
- Hardware
- Part Libs
- productA
- productB
- Yocto
- ...
- Manufacturing
- Common testing framework
- Product
- productA
- productB
- Doc
- (general technology information)
- (general processes, etc)
Each type of code/design files live in a common location if possible. The
Product
location is only for information that is truly unique to a specific
product (documentation, top-level BOMs, etc) that does not fit anywhere else. In
many cases, each of the top level categories are a separate repo. The Product
repo may pull the other repos in as submodules, so you can version everything
together.
If you want to build a platform, it helps to be intentional about this. Reuse and cross-product learning won't just happen.