Reducing the complexity of software configuration John Plaice William W. Wadge epartement d’Informatique Dept of Computer Science Universit´ e Laval University of Victoria Qu´ ebec, Qu´ ebec P.O. Box 3055, Victoria, B.C. Canada G1K 7P4 Canada V8W 3P6 e-mail: plaice@ist.ulaval.ca e-mail: wwadge@csr.uvic.ca Abstract Marmoset is a simple unix-based tool for creating and maintaining large systems built from reusable “modules”. Marmoset provides unix commands for creating and editing modules, and for configuring modules so that they produce object code, libraries, or executables, as the case may be, from the component modules. A Marmoset module is implemented as a unix directory containing a number of files, some of which are supplied by the user, and others of which are generated automatically. For a given language, a user will supply a number of component files, including an “import” list of other modules which are required for this module to be configurable. The generated files might contain, among other things, external declarations and compiled code. The Marmoset link command automatically identifies all those modules imported directly or indirectly by the root module, and ensures (by reconfiguring if necessary) that all the output files are up to date. Should a particular version of a module be looked for, then the most relevant versions of the imported modules will be sought, and the most relevant versions of component files will be used. Marmoset significantly reduces the cost of software configuration, and thereby increases software reliability. Marmoset est un outil unix simple pour la cr´ eation et la gestion de grands syst` emes construits avec des moduleseutilisables. Marmoset fournit des commandes unix pour la cr´ eation et l’´ edition de modules. et aussi pour configurer des modules afin qu’ils puissent g´ en´ erer du code object, des biblioth` eques ou des ex´ ecutables, selon le case, des modules composants. Un module Marmoset est r´ ealis´ e comme un directory unix contenant un nombre de fi- chiers, certains fournis par l’utilisateur et d’autres g´ en´ er´ es automatiquement. Pour un langage donn´ e, un utilisateur fournira un certain nombre de fichiers composants, incluant une liste d’importationd’autres modules qui sont requis afin que ce module soit configurable. Les fichiers g´ en´ er´ es pourraient contenir, entre autres, des d´ eclarations externes et du code compil´ e. La commande de configuration Marmoset identifie automatiquement toutes les modules qui sont import´ es directement ou indirectement par le module racine, et s’assure, en reconfi- gurant si n´ ecessaire, que tout est ` a jour. Si une version particulaire d’un module est recherch´ e, alors les versions les plus appropri´ ees des modules import´ es sont recherch´ ees, et les versions les plus appropri´ ees des fichiers composants sont utilis´ ees. Marmoseteduit de mani` ere significative le cout de la configuration de logiciels, et donc augmente la fiabilit´ e des logiciels. * Presented to the 1st African Conference on Research in Computer Science, October 14–20, 1992, Yaound´ e, Cameroon. 1