Idea #24351

Revise the project directory structure

Added by Marco Mambelli 12 months ago. Updated 2 months ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


The project directory structure should be revised to ease the python packages formation and exports and to make the structure more standard:
  • All python sources should be under "glideinwms"
  • Avoid the "build" name (sometimes build or BUILD are used for automatic build directory
  • Other possible folders: doc/docs/apidoc, test/tests (all different unit tests), pkg (packaging and release building scripts)

Some directories used by automatic build systems (keep in mind that Macs are not case sensitive):
dist, build

Some standard directories:
  • res - for language files (resources)
  • Go language uses: /cmd, /internal, /pkg and /vendor
  • should name be singular or plural?
  • should all unit tests be together or separate close to the different language sources (e.g. python ones under glideinwms)?
  • should the sources go under a src dir?
  • should there be a bin and lib directory?
  • should there be tools?
  • should it be build or pkg, make, setup, produce, install, prepare, project, plan, svc/service, auto(mation)?
    • contains both release/packaging scripts and CI scripts

Some links about Python projects:

Multi language projects:!topic/golang-nuts/LXQQlbqN604!topic/golang-nuts/6orXabMNivE

Some notes:
  • These seem standard LICENSE, (instead of TAGS.txt),
  • leaves these directories in a project dir: build, dist, ${project_name}.egg-info
  • singular names seem better than plural: test, doc
  • Dart uses also benchmark and groups aux files under tool
  • Go has a very specific recommendation: build, build/package, build/ci, deployments (or deploy)
    Packaging and Continuous Integration.

Put your cloud (AMI), container (Docker), OS (deb, rpm, pkg) package configurations and scripts in the /build/package directory.

Put your CI (travis, circle, drone) configurations and scripts in the /build/ci directory. Note that some of the CI tools (e.g., Travis CI) are very picky about the location of their config files. Try putting the config files in the /build/ci directory linking them to the location where the CI tools expect them (when possible).

Related issues

Related to GlideinWMS - Feature #20227: Migrate to Python3New06/27/2018


#1 Updated by Marco Mambelli 11 months ago

  • Description updated (diff)

#2 Updated by Marco Mambelli 11 months ago

Also available in: Atom PDF