4.2. Concentrate your efforts, localize your work

There are many examples of how ComPact avails itself of this principle. One of the more striking is the fact that you are usually concerned with one software package at a time. You define its exports to other packages, implement its functionality, and write local test procedures and programs. During the development of a package, you will pass some more or less consistent states and record them as reproducible development versions. At certain points you will want to make your efforts available to all fellow programmers, so you release the package. Released packages may be imported in binary form by other members of the project (i.e. by the packages they write), which may reduce compilation time significantly. Once the package has been released to others, the need to fix some bugs and implement missing functionality may arise. ComPact enables you to do this on a release branch of the package.

You will have noticed the following principles:



Another important example lies in the focus of your attention during your work. Working on a package, you should be concerned with its structure and implementation, and the recognition of the underlying problems. You should not be distracted by the details of how you invoke the C++ compiler to produce relocatable code with debugging information or how to instruct the linker to find the system libraries. Therefore, the build system of ComPact distinguishes between a front end tailored towards a programmer working on a software package, and a back end that defines the specifics of the tools the programmer needs to use. The back end is configured and maintained by system specialists, who can avail themselves of the rich facilities it provides and its complexity. In contrast, the front end consists of an easy-to-use purely declarative package description language and the build and version control actions of the ComPact Package Manager program.