The documentation of Metakit is lacking. The excuse used to be that MK was a moving target, but even now that the API has been fixed for quite some time, the situation has not improved much, unfortunately. The amount of documentation also depends on which language binding you use: C++, Python, or Tcl.

C++

The documentation for the C++ API is generated by Doxygen. There are also some older docs and an intro from the pre-2.3 days. There is C++ sample code in the demo/ and examples/ areas of the source code distribution.

Riccardo Cohen has written a small tutorial with some nice code examples, see his Metakit C++ tutorial on the web.

Further information can be gleaned from the 140+ small C++ snippets which form the regression test suite in the tests/ directory.

Python

The Mk4py page describes the use of MK from Python. There is Python sample code in the examples/ area of the source code distribution.

An annotated, newer version of the above has been created by Brian Kelley, with several examples, explaining new features such as hashes and ordered views.

Tcl

The Mk4tcl page describes the procedural interface from Tcl to MK. Mark Roseman has written a tutorial for Mk4tcl, which is an excellent way to get started in Tcl. There is Tcl sample code in the examples/ area of the source code distribution.

There is a newer Oomk binding (Object Oriented MK) which exposes more of MK's C++ core to Tcl, i.e. like the Python binding. It is based on Mk4too (a relatively unknown part of Metakit for Tcl which is best left alone now that Oomk exists).

The "Starkits" chapter in the 4th edition of Practical Programming in Tcl and Tk by Brent Welch includes documentation about the Mk4tcl binding.

Carsten Zerbst wrote a German article in the July 2003 edition of Linux Magazin.

Other

MK's View model - two graphic-rich pages which aim to get a high-level "mental model" across of how MK deals with views, subviews, and column-wise storage.

File format - Andreas Kupries has documented the Metakit file format. It supercedes older documentation of the pre-2.3/2.4 file format.

Memory mapped files - here is a bit of background info on MMF's used by Metakit (on platforms which support it).

Mapping views, i.e. hashed and blocked views, are described in more detail on a separate page. Design details about blocked views can be found here.

Commit modes - information about the "commit extend" and "commit aside" modes introduced in release 2.3 can be found on this page, copied from the Metakit wiki.