Fri, 22 Dec 2017 00:00:00 GMT

0.8.21 Release

We are proud to release Elektra 0.8.21.

guid: 7f5de1b1-6086-47a6-9922-cac08c898ae7

author: Markus Raab

pubDate: Fri, 22 Dec 2017 09:24:02 +0100

shortDesc: FOSDEM, New Book, Maturing of Plugins

What is Elektra?

Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database. For more information, visit https://libelektra.org.

The news can be read rendered at our web server.

Highlights

In this release 8 authors created 307 commits and changed 217 files (5227 insertions, 1914 deletions). The highlights of this release are:

Fosdem Talk about Elektra was accepted

CC-licensed book about Elektra published

Maturing of plugins

Elektra with encryption

Preparation for switch to INI as default storage

Fosdem Talk about Elektra in Main Track

We are happy to announce that there will be a talk about Elektra in one of the main tracks of Fosdem 2018:

Title: Configuration Revolution

Subtitle: Why it Needed 13 Years and How it Will be Done

Day: Saturday 2018-02-03

Start time: 15:00

Duration: 50 min

Room: K.1.105 (La Fontaine)

And a second talk in the Config Management DevRoom:

Title: Breaking with conventional Configuration File Editing

Subtitle: Puppet with a Key/Value API in a User Study

Day: Sunday 2018-02-04

Start time: 12:30

Duration: 25 min

Room: UA2.114 (Baudoux)

See you in Brussels at 3 and 4 February 2018!

I will also be present in the Config Management Camp directly after Fosdem in Gent.

CC-licenced Book About Vision of Elektra Published

I am proud to release a book with the title "Context-aware Configuration" describing:

the last 13 years of Elektra (focus on last 4 years with the questionnaire survey and code analysis),

the current state of Elektra, and

the long-term goals of Elektra (context-aware configuration).

The Fosdem talk will cover some highlights from the book.

A huge thanks to everyone involved in the questionnaire survey, without you we would not have been able to collect all the information that led to the requirements for Elektra.

The LaTeX sources are available here and the compiled book can be downloaded from here.

Maturing of Plugins

The new Directory Value plugin supports storage plugins such as YAJL and YAML CPP . It adds extra leaf values for directories (keys with children) that store the data of their parents. This way plugins that normally are only able to store values in leaf keys are able to support arbitrary key sets.

The YAML CPP plugin reads and writes YAML data using yaml-cpp. The plugin supports arrays, binary data and metadata.

The Camel plugin stores data as simplified YAML flow lists containing double quoted keys and values. For proper YAML support please use the YAML CPP instead.

The mINI plugin reads and writes simple property list, separated by equal (=) signs.

The xerces plugin allows Elektra to read and write XML data. The plugin uses Xerces-C++ for this task. It supports both arrays and metadata.

The boolean plugin normalizes boolean values such as 0, 1, true and false.

The crypto plugin and fcrypt plugin are described below.

Elektra With Encryption

The plugins fcrypt and crypto are now considered stable. They are no longer tagged as experimental. While crypto encrypts individual values within configuration files, fcrypt encrypts and/or signs the whole configuration file.

For this release Peter Nirschl prepared a demo showing Elektra's cryptographic abilities:

Thanks to Peter Nirschl for this great work!

Switch to INI

We plan to switch to INI as default storage instead of Elektra's infamous internal dump format.

As preparation work we implemented the dini plugin which transparently converts all dump files to ini files on any write attempt. Furthermore, we fixed most of the INI bugs which blocked INI to be the default storage.

Due to this progress we will likely switch to INI as default starting with the next release. If you want to, you can switch now by compiling Elektra with:
-DKDB_DEFAULT_STORAGE=dini

Or simply switch for your installation with:
sudo kdb change-default-storage dini

If you are already using ini as default, changing to dini will:

add some overhead because dini always checks if a file uses the dump format, unless the dump plugin is not installed.

add support for binary values using the binary plugin

NOTE: INI (dini) was not completely ready for 0.8.21 thus we kept dump as default. dini is currently an experimental plugin.

Other New Features

We added even more functionality, which could not make it to the highlights:

kdb rm now supports -f to ignore non-existing keys

use % as profile name to disable reading from any profile

The new function elektraArrayDecName:

int elektraArrayDecName (Key * key);

decreases the index of an array element by one. It can be used to reverse the effect of elektraArrayIncName, thanks to René Schwaiger

Documentation

We improved the documentation in the following ways:

We renamed our beginner friendly issues to "good first issue" as recommended by GitHub.

In many parts of the documentation we already switched to American spelling thanks to René Schwaiger

Added more automatic spelling corrections thanks to René Schwaiger

Fixed many spelling mistakes thanks to René Schwaiger

We extended the ReadMe of the jni plugin. The ReadMe now also contains information about the Java prerequisites of the jni plugin on Debian Stretch.

Improved notes about testing thanks to Thomas Wahringer

qt-gui: give hints which package to install

The build phrases jenkins build all please and jenkins build doc please were documented thanks to René Schwaiger

Documentation for libelektra-invoke was added

Compatibility

As always, the ABI and API of kdb.h is fully compatible, i.e. programs compiled against an older 0.8 version of Elektra will continue to work (ABI) and you will be able to recompile programs without errors (API).

All unit tests of 0.8.20 run successfully with Elektra 0.8.21. There are, however, some additions and changes in rarely used interfaces:

added elektraArrayDecName and elektraArrayValidateName in libease

fixed kdbinvoke.h interface: make structure private and complete API

fixed xmlns and xsi:schemaLocation to be https://www.libelektra.org

the private header file kdbopmphm.h got nearly rewritten

Notes for Maintainer

These notes are of interest for people maintaining packages of Elektra:

We added the following files in this release:

libelektra-dini.so

libelektra-directoryvalue.so

testmod_directoryvalue

The following plugins are not marked as experimental anymore:

camel

crypto

mini

xerces

yamlcpp

The binding intercept-fs is now marked more clearly as experimental

The jni plugin is again experimental because it does not work with some Java systems. For the lua plugin there are also problems with some Lua systems.

Notes for Elektra's Developers

These notes are of interest for people developing Elektra:

From now on release notes are written as part of PRs

Elektra Initiative is spelled as two words

At some more places we switched to use the logger, thanks to René Schwaiger

Shell Recorder got many improvements, see below in Testing. Please use it.

The plugin's template now adds all placements within backends by default (must be removed accordingly).

We now warn if plugins do not have any placement.

Please prefer -log and -debug builds

The build server now understands the build phrase jenkins build all please thanks to René Schwaiger. Please use it carefully, since it puts our build server under heavy load.

Markdown Shell Recorder Syntax recommended when reporting bugs.

Elektra's Dockerfile was improved and simplified, thanks to Thomas Wahringer.

Add more Explanations how to do Fuzz Testing

Started documenting disabled tests in doc/todo/TESTING

You now can use tests/icheck.suppression to disable already checked API changes.

The (hopefully) last Sourceforge references were removed and a redirection page was added, thanks to @the-Arioch for reporting.

Testing

AFL unveiled some crashes in INI code

fix OCLint problems, thanks to René Schwaiger

fix ASAN problems, thanks to René Schwaiger

disabled non-working tests

Shell recorder

Benchmark optionally also works with OpenMP, thanks to Kurt Micheli

The Shell Recorder now uses kdb-static or kdb-full if kdb is not available (BUILD_SHARED=OFF)

Fixes

Many problems were resolved with the following fixes:

fix use of dbus_connection_unref(NULL) API thanks to Kai-Uwe Behrmann

Properly include headers for std::bind thanks to Nick Sarnie

qt-gui: assure active focus on appearance selection window thanks to Raffael Pancheri

René Schwaiger repaired the boolean plugin:

wrong metadata was used

plugin configuration was missing

documentation was missing

logging code was added

René Schwaiger repaired many problems different build agents had

kdb info -l does not open KDB anymore.

change-resolver-symlink and change-storage-symlink now correctly use @TARGET_PLUGIN_FOLDER@

date plugin will be removed on attempts to compile it with gcc 4.7, thanks to René Schwaiger

C plugin: storage/c metadata added

fix disabling documentation in CMake, thanks to Kurt Micheli

Simplify elektraArrayValidateName, thanks to René Schwaiger

Outlook

The Order Preserving Minimal Perfect Hash Map (OPMPHM) is ready to extend ksLookup. The implementation of the randomized Las Vegas hash map algorithm is in a final stage and the heuristic functions that ensure time and space optimality are backed up by benchmarks. Thanks to Kurt Micheli, the next release will include the OPMPHM!

Get It!

You can download the release from here or GitHub

The hashsums are:

name: elektra-0.8.21.tar.gz

size: 4712043

md5sum: d627a01a0249fde46e80042c848d4521

sha1: a7659a7bb1b2388d03cdf0084160de612e5c4511

sha256: 51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26

The release tarball is also available signed by me using GnuPG from here or GitHub

Already built API documentation can be found online or GitHub.

Stay tuned!

Subscribe to the RSS feed to always get the release notifications.

For any questions and comments, please contact the issue tracker on GitHub or me by email using elektra@markus-raab.org.

Permalink to this NEWS entry

For more information, see https://libelektra.org

Best regards, Markus Raab for the Elektra Initiative