The main aims and design principles of the OKlibrary

Articles on the OKlibrary:


The OKlibrary is a research platform on generalised satisfiability and related fields, providing

The library is open source (under GPLv3), and a strong integrated source control system yields full control over the development process.

Special services provided include:

Much emphasise is put on placing the development process in a wider context:

To summarise:

  1. The OKlibrary is an environment for attacking (allegedly) "intractable problems", with SAT in generalised form at its centre.
  2. It aims at making accessible all related worlds from mathematics, informatics and software engineering.

The subject and its platform

"Generalised satisfiability" includes the following fields:

Important is the research character, and "purely" theoretical algorithms are welcome.

Though not "core business", many other areas are important for SAT, and thus are also integrated into the library:

To avoid re-inventing many wheels, much emphasise is put on the use of external sources.

For supporting areas like statistics and numerical computation, powerful external systems are employed.

Modern C++, and generative and active libraries are of importance to overcome the split between efficiency and generality, and the library also undertakes practical research in these areas.

An integrated research environment

An open source library which supports research on such a variety of fields needs special means for collaboration:

A holistic library

The OKlibrary is a generative and active library, integrating services and activities traditionally not part of the delivered package and thus not easily usable:

A remark on terminology: "generative" and "active" are used in the field of generative programming, while "holistic" is my (OK) own extended version of it. These notions are, in general and for our library, under active development.

The organisation of participation

The basic organisation principles for development are as follows:

We should emphasise, that yet we do not have much experience with the "fractal nature" of the "network of clones" (with the OKlibrary as its original source), so a lot needs to be learned.

The public source-code repository

Technically, participation is organised as follows:

On the release process

The planning process

Central is the planning process:

  1. Every action is announced by plans (in the corresponding plans-file), so that others know what's going on and can participate. Also only in this way the typical loss due to interruptions is avoided.
  2. These plans are continuously evolved, so that before programming starts, a good "loose specification" is available.
  3. Plans must be kept up-to-date, and also the corresponding milestone-entries.
  4. So much of the planning process happens *within* the OKlibrary (not, as usual, somewhere else).
  5. The history of the OKlibrary thus contains also all ("formalised") planning activities.
  6. Mailinglists are for more informal discussions (finding out about interests, "chatting" about the plans (which is to be avoided in the plans-files)). So mailinglists are for "pre-discussion", and, potentially, "meta-discussions"; but as soon things concretise, they should move to the plans-files (only there they fully connect to the system).
  7. To summarise, the planning process
    1. is somewhat similar to "patchwork", which comes in small pieces,
    2. is always in a somewhat well-defined state,
    3. and can be interrupted and continued as needed.
    This might be especially true for core developers, while external developers might prefer a more traditional model, where only at the end the distilled work (using the "cherry-picking" method preferred for example by the Git developers) is submitted. However, after some initial period of getting used to the continuous process of the OKlibrary, also external developers are encouraged to use the "continuous model" (and not the "batch model").

The testing process

Oliver Kullmann

Last modified: Sat Oct 29 21:11:32 BST 2011