Last update: November 7, 2004

Ideas behind Kurmi

This is a dynamic document. I mean, it shows concepts previous to the project start, suggestions taken from several sources, and it will grow beside Kurmi.


Kurmi goals are: Kurmi is a project thought of three stages:
  1. The "core": compressed file system functions, OS dependent functions, Lua scripting, and pluggable user interface support.
    At this stage, the user has to make the install image with no more than a text editor, a zipper, and a few shell commands.
  2. The command line builder: the user describes your installation sceneries, platform pecularities, components dependency, and scripts to be called during the installation process.
  3. The visual builder: visual environment to do the same things as at stage 2.

Stage 1 - The "core"

Alpha versions of the following components are availables: The user interface component is optional.
There is an alpha version of a GUI for Windows based on Common Controls.
The GUI for Linux, BSD and Solaris is based on Athena widgets set (XawPlus modifications by Roland Krause [iii]).
There is also a prototype of "text mode" UI based on curses.
User defined wizard pages will be supported.

Stage 2 - The command line builder

This utility provides a help to keep the things easy for complex multi-platform and multi-language installations.
Defining platforms, components and behaviours in a project file, the builder will generate the installation image by demand.
Let me show an example:
Win = {
    bin_dir = 'Bin/Win',
    kurmi = 'wkurmi.exe',
    ui_lib = 'kurmi_cc32',
    source_path = 'source/win',
    product_name = 'Audio/Video Editor for Windows',
    out_file = 'kurmistp.exe',
    inst_dir = [[c:\Program Files\JohnDoeSoft\AVEditor]]
    aux_files = { 'left_logo.bmp', 'top_logo.bmp'},
    callbacks_file = 'callbacks.lua'
Linux = {
    bin_dir = 'Bin/Linux',
    kurmi = 'kurmi',
    ui_lib = 'kurmi_xawp',
    source_path = 'source/linux',
    product_name = 'Audio/Video Editor - Linux Edition',
    out_file = 'kurmistp',
    inst_dir = '/opt/JohnDoeSoft/AVEditor'
    aux_files = { 'left_logo.xpm', 'top_logo.xpm'},
    callbacks_file = 'callbacks.lua'
Components = {
    name = 'core',
    text = 'Core',
    source = 'Dist/Core/',
    selected = true,
    readonly = true
    name = 'pi',
    text = 'Plugins',
      name = 'audio',
      text = 'Audio',
      source = 'Dist/Plugins/Audio/',
The syntax of the project file is not finished (yet). It will try to be flexible enough to allow diverse builders.
Then, as user option, the builder can use alternative "generators": the standard one, a MSI generator, a rpm generator, etc.[iv]

Stage 3 - The visual builder

By now, I only can say that it will be wxLua based and very cool...


  1. Thanks to Martin Spernou and Ignacio Castaño by their comments about modularity.
  2. Thanks to Adam Moss about the suggestion to keep the external dependencies low.
  3. XawPlus home page:
  4. Thanks to David Burgess.

© 2004 Daniel Quintela