About Project Organization

This is a rough guide to how projects in Cat's Eye Technologies' Project Space are laid out. It is both descriptive, surveying how projects currently are laid out, and prescriptive, specifying how projects should be laid out. It is currently a work in progress and should not be considered complete yet.

Certain subdirectories of the root directory of a project have standard meanings:

  • bin -- where executables shoud be kept. Projects should not ship with native executables, but this is where they will be written when built. Java .class files should be kept here, in a directory tree matching the package names (and projects may ship with pre-compiled .class files for convenience.) In the case of executable scripts, they should be kept in src, though they may be copied to bin upon build.
  • disk -- where disk images should be kept.
  • ebin -- where compiled Erlang modules (.beam files) executables shoud be kept. Erlang projects may ship with pre-compiled .beam files for convenience.) .app files may be contained here as well, but these are generally deprecated at this point.
  • eg -- where examples should be kept, particularly example programs in projects which implement programming languages.
  • doc -- where documentation should be kept. Exceptions include README and other files which may appear in the root directory. Images may be included in doc if they are part of the documentation.
  • priv -- where data files for Erlang applications are kept.
  • script -- where scripts are kept, although this is generally deprecated; executable scripts should be kept in src.
  • src -- where source code is kept.

Certain files in the root project directory have standard meanings as well:

  • README or README.txt -- A short text document summarizing what the project's about, and such.
  • Makefile -- description forthcoming.
  • make.sh -- description forthcoming.
  • test.sh -- A script which runs tests for the project. The tests can test anything they like, but should produce output which conforms to Portent format, which we haven't exactly defined yet, so don't worry about it.