Common Project Layout, version 1… a rough draft #1

:: programming, software engineering

By: Maciej Barć

For CPL version 0 see here. A template project for CPL v1 can be found at https://gitlab.com/xgqt/xgqt-misc-template-cplv1.

To solve the repository layout problem we propose this hierarchy:

  • separate the code from text/prose by clear distinction on top-level — thus the code dir
  • for code we create this structure:
    • authoring — authoring scripts for developers
    • copyright — copyright documents for the code
    • integration — integration scripts, ie CI/CD scripts or Groovy sources for Jenkins
    • source — versioned application/library sources, each major version is assigned a v<MAJOR> directory; this allows us to keep and maintain multiple versions, it is very reminiscent to having multiple package versions in a Ports (FreeBSD/Gentoo) repository
      • for the v<MAJOR> dirs we separate each bag of sources or scripts into its own directory, for example:
        • 3rd-party
        • admin
        • build-support
        • run
        • <APPNAME>-app
        • <APPNAME>-lib