Appendix: Project development

Project task

The MCml2 project solves a general configuration problem. Much more information is available in Introduction chapter of both User's documentation and Programmer's documentation.

Similar projects

The original idea of universal configuration tool is based on Eric Raymond's Linux configuration language CML2. It's the ancestral language of our CML2+ (which is CML2 with extensions). gcml2 project is another challenge, but it again solves only Linux kernel configuration problem. Comparison of MCml2 and other projects is not simple because other projects have different orientation.

Our project is written in idea of universality - no matter your computer is like and no matter the language it can compile. Also the language was extended in important dimensions (like multi-language support). The splitting of the concrete problem that we use, allow us to overpower these projects in the final deal - configuration itself. It's necessary to understand the project more precisely to be able to compare it with anything else. So if you need more accurate and truly comparison, you must read the Programmer's documentation.

Development group and project history

2001 October

The project was started as a commercial project of SuSE company - pure CML2 implementation under GPL license.

The initial stuff with initial tasks:

Petr ©váb
CML2 compiler
Jiří Vyskočil
engine implementation
Libor Dener
user interface
Julius ©troffek
engine design

Petr ©váb implemented first parser of CML2 and the other were looking for solution of the rest deals.

2001 November

The idea of Metalanguage and two-phase implementation was developed by Jiří Vyskočil. The Prolog usage and Prolog-to-C compilation by WAMCC was finally accepted by the most of the group.

2002 January

Julius ©troffek left our group and the project was canceled. Daniela Dybalová and Martin Trčka joined a new project MCml2, which was started as a new one with different requirements.

New tasks were:

Petr ©váb
CML2 compiler
engine design
Jiří Vyskočil
engine implementation
Prolog-to-C compilation
Meta-to-X compilation
Libor Dener
text-based user interface
CVS management
installation (Makefiles)
Martin Trčka
documentation
web presentation
design of graphical user interface
Daniela Dybalová
design of graphical user interface
graphical user interface

Not a great progress was made in this period, but some great ideas and basis come from this time.

2002 October

The contract with SuSE timed out and the project became a pure student software project.

New tasks and decisions were made and the project started with unexpected speed of about 20 hours per person a week. That was one reason why Daniela Dybalová decided to leave the project. It was no problem for she made no progress on her task. Some more tasks were redistributed. The final deals were:

Petr ©váb
CML2 compilation
Checks, data enrichment, optimizations
Engine design and implementation
Great deal of documentation content
Forcing design
Theoretical part
AMP and CML2+ design
Jiří Vyskočil
Prolog-to-C compilation
C code inclusion (into Prolog)
Metalanguage policy and enrichment
Meta-to-C compilation
Meta-to-Java compilation
Libor Dener
Command-line design and implementation
Metalanguage handy and necessary features
CVS management
Installation (Makefiles)
Forcing implementation
AMP design and implementation
Part of intercode engine implementation
Martin Trčka
Documentation management and part of content
Web part of project management
GUI design and implementation
Administrative jobs

In this way it was implemented to its final state.

2003 June

The project was finished successfully with all tasks done.

Misleading paths

A lot of problems were with WAMCC (Prolog to C compiler), because a lot of time was spent with connection of Prolog and C code. WAMCC was invented by Daniel Diaz (nowadays, he is main author of GNU Prolog) in 1994. We chose his Prolog to C compiler, because there were many good references to his project on reputable web pages including tests and comparisons with other similar projects. We made some tests of WAMCC too. But during time, when we have more than 70 % of implementation of prolog code we found out that WAMCC have many critical bugs which implies low stability (memory allocation bugs), big platform dependence (now only x86 PC Linux) etc. Jiri Vyskocil spent more than half of project time on finding and fixing these bugs.

Specific problems

Apart from all the Prolog stuff mentioned in above section, one more specific problem influenced the project development speed. It was the interference and dependence among all the parts that was even more significant than in case of ordinary compiler development. There were six parts of project that were developed concurrently and depend on each other.

In this environment the bug fixing and even searching the bugs were evidently not easy and sometimes needed five steps of bug passing which is quite uncommon in case of four developers.

Future of the project

It could be with Linux configuration specific changes used instead of actual 'make xconfig'.

Possibility of inclusion of any other component through AMP. This is important for autoconfigure tools, which were the initial reason for AMP.

Of course that it could be used whenever user has something to configure. It's case of offers of mobile operators, car companies and so on. The language and engine itself are totally independent on the user interface, so any web or other application can take advantage of its capabilities.

TODO

Possible upgrades: