Skip to content

DesignUI

MatthewHambley edited this page Jul 8, 2019 · 1 revision

Our plan is to develop the core systems of dependency analysis and DAG traversal first. With those in hand we can be more certain that the project will work the way we think it will. Then we plan to consider the detail of how the user will interact with the tool.

A Multi-Interface Approach

From the requirements and our own thoughts in passing on the issue we suspect there will be three approaches of escalating complexity:

  • An implicit "zero configuration" option for simple cases.
  • A configuration file for intermediate processes.
  • A Python API for complicated build processes.

Zero Configuration Mode

The tool is pointed at a directory and it figures out as much as it can. This will work for building executables as the Fortran program or C/C++ main can be easily located. Support for libraries will be very crude as there is no way to determine what should be in the library and what shouldn't. Therefore if there are no executables everything will be slammed in a library.

Configuration File

This should be enough for most users. It will allow simple control over the build process. For instance libraries may be specified using logic such as "everything in this directory".

Python API

Ultimate control, ultimate danger, ultimate fear.

The user implements they build system as a Python script making use of Fab as a library of components.

Research Slush Pile

As noted we are not ready to really get down to the nitty gritty so here are collected a number of resources which may prove illuminating when we are:

Clone this wiki locally