Projects should be well structured. Well structured projects are easier to maintain and contribute to the overall quality.
Large projects should be split up into smaller subprojects in order to keep the number of source files in each directory manageable, and each subproject should be buildable from its own directory as well as from the project's top directory.
Figure 1 shows how projects should be organized, and at least which files should be present in each directory.
AUTHORS is a text file that contains the name and email address of all the project authors. Each entry in this file should take the following form:
Author Name <author.name@author.domain>
COPYRIGHT is a text file that contains information about the date(s) and holder(s) of the project copyright. This file should begin with the following two lines:
Copyright (C) year Holder
All rights reserved.
Optionally, this file may also contain additional information about the holder(s) like address, phone number, email address, etc.
INSTALL is a text file that describes the build and installation procedure.
LICENSE is a text file that contains the licensing conditions. It should clearly state what users are allowed or not allowed to do with binaries, source files, and documentation. For free projects, use the standard licenses provided by Free Software Fondation, Inc.
NEWS is a text file that contains a list of worth mentioning changes. For each new release, add one or more items to the top of the file and specify the version they pertain to. Don't discard old items, leave them in the file after the newer ones. This way, users upgrading from any previous version can see what is new.
README is a text file that gives the name of the package and a general description of what it does. This file should also refer to where build and installation instructions can be found.
Projects should at least contain the src directory, which contains the project source files. As mentioned above, large projects should be split up into smaller subprojects, and in that case, src should contain a subdirectory for each subproject.
Additional executables necessary to build the project should be located in the bin directory, while user documentation source files should be placed in the doc directory.
Each project directory should contain a .build file, and it should be possible to start a build from any level of the project hierarchy.