📦 Release first ⏩ Ship faster ⚡

📌 Where do you put stuff?

There 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
  • 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.

Cliff Brake October 16, 2024 #git #organization