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.
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.
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 implemented first parser of CML2 and the other were looking for solution of the rest deals.
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.
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:
Not a great progress was made in this period, but some great ideas and basis come from this time.
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:
In this way it was implemented to its final state.
The project was finished successfully with all tasks done.
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.
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.
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.