<commit_before># 0.8.14 Release

- guid: 519cbfac-6db5-4594-8a38-dec4c84b134f
- author: <NAME>
- pubDate: Thu, 19 Nov 2015 17:48:14 +0100

Again we managed to release with many new features and plugins (lua, enum,
list, crypto, csvstorage, conditionals, mathcheck, filecheck, logchange)
many fixes, and especially with a polished documentation.

## Documentation Initiative

The documentation Initiative is a huge success and now the documentation
of Elektra is in a state where someone, never heard of Elektra, still
can use it only by man pages.

There are now many ways to show a man page:

- [on github](http://libelektra.org/blob/master/doc/help/kdb.md)
- [in the API docu](http://doc.libelektra.org/api/latest/html/md_doc_help_kdb.html)
- by using `kdb --help` or `kdb help <command>`
- by using `man kdb`

### Help system

Nearly all README.md are now also converted to man pages and also to Doxygen.

### Doxygen Filter

Kurt Micheli did an amazing work with a new doxygen filter.
The filter allows all Elektra Markdown pages to be also included
in the doxygen documentation. Thus all technical concepts are now
explained in Markdown pages, this filter is essential.

But even more, the filter also includes all man pages written
for the tools, giving a nice html view for them. (In addition to
the markdown rendering on github).

A big thanks to Kurt Micheli!

### Further Docu fixes

- getenv debugging docu was improved
- typo fix: Specify, thanks to Pino Toscano
- [Design decisions](http://libelektra.org/blob/master/doc/decisions)
  Definition of Bool, capabilities and
  Publish Subscribe (thanks to Daniel Bugl)
- Improve iconv docu
- usage examples for many plugins
- improve README for line plugin (thanks to <NAME>)
- add docu about dependencies for some plugins (thanks to <NAME>)
- create many new links within the documentation


## Simplicity

We shifted our [goals](http://git.libelektra.org/blob/master/doc/GOALS.md) a bit:
We want to prefer simplicity to flexibility.
Not because we do no like flexibility, but because we think we achieved enough of it.
Currently (and in future) you can use Elektra:

- as primitive key/value storage
- with specification
- with code generation
- ...

But we cut flexibility regarding:

- namespaces are only useful for configuration (not for arbitrary key/value)
- mounting and contracts functionality
- error code meanings are fixed, if a resolver detects a conflict, our defined
  error must be used
- of course ABI, API



# Qt-gui 0.0.9

<NAME> again updated his qt-gui to version 0.0.9 (beta)
with important of fixes and improvements:

- Allow QML to destroy C++ owned model
- Fixes for Qt 5.5
- Handling of merge-conflicts improved
- Avoid rewriting on merge-conflicts
- Dialog at startup
- Reduce memory footprint
- add man page

A bit thanks to <NAME>!



## Compatibility

As always, the API and API is fully forward-compatible, i.e. programs
compiled against an older 0.8 versions of Elektra will continue to work.

The behaviour of some plugins, however, changed:

- the INI plugin, the section handling was improved.
- in the NI plugin, the symbol Ni_GetVersion vanished
- in the resolver plugin files of other namespaces which are not
  mounted are not resolved anymore

### Build System

ENABLE_CXX11 does not exist anymore, it is always on.
We do not care about 199711L compilers anymore, which
makes development easier, without losing any actually
used platform.

Some programs that are only used in-source are not installed
anymore. (by <NAME>o)

Python and Lua plugins are enabled now in `-DPLUGINS=ALL`.

Python3 plugin was renamed to python.

## Lua Plugin

Manuel Mausz add a lightweight alternative to the python plugin:
[the lua plugin](http://libelektra.org/blob/master/src/plugins/lua/).
In a similar way, someone can write scripts, which are executed on every
access to the
[key database](http://libelektra.org/blob/master/doc/help/elektra-glossary).

To mount a lua based filter, you can use:

    kdb mount file.ini /lua ini lua script=/path/to/lua/lua_filter.lua

Even though it works well, it is classified as technical preview.

Thanks to <NAME> for this plugin!


## Cryptography Plugin

In this technical preview, <NAME>
[demonstrates how a plugin](http://libelektra.org/blob/master/src/plugins/crypto/)
can encrypt Elektra's values. In testcases it is already able to do so,
but for the end user an easy way for key derivation is missing.

A big thanks to <NAME>!


## Conditionals

Brings `if` inside Elektra. It lets you check if some keys have
the values they should have.

	kdb mount conditionals.dump /tmount/conditionals conditionals dump
	kdb set user/tmount/conditionals/fkey 3.0
	kdb set user/tmount/conditionals/hkey hello
	kdb setmeta user/tmount/conditionals/key check/condition "(hkey == 'hello') ? (fkey == '3.0')" # success
	kdb setmeta user/tmount/conditionals/key check/condition "(hkey == 'hello') ? (fkey == '5.0')" # fail


## INI Plugin

The INI plugin got a near rewrite. Now it handles many situations better,
has many more options and features, including:

- preserving the order
- using keys as meta-data
- many new testcases
- fix escaping

Thanks to <NAME> for this work!


## List Plugin

Currently, Elektra has some limitations on how many plugins can be
added to certain [placements](http://libelektra.org/blob/master/doc/help/elektra-plugins-ordering).
Because of the rapidly growing number of plugins, some combinations
are not possible anymore.

This plugin tackles the issue, by delegating the work to an arbitrary
number of subplugins. As a bonus, it works lazily and thus might avoid
the loading of some plugins all together.

Thanks to Thomas Waser for this plugin!



## Csvstorage Plugin

You can now mount [csv-files](http://libelektra.org/blob/master/src/plugins/csvstorage)!

To mount `test.csv` simply use:

    kdb mount test.csv /csv csvstorage

There are many options, e.g. changing the delimiter, use header
for the key names or predefine how the columns should be named.
For details [see the documentation](http://libelektra.org/blob/master/src/plugins/csvstorage).

Thanks to Thomas Waser!

## Filecheck plugin
<commit_msg>release: fix some links<commit_after># 0.8.14 Release

- guid: 519cbfac-6db5-4594-8a38-dec4c84b134f
- author: <NAME>
- pubDate: Thu, 19 Nov 2015 17:48:14 +0100

Again we managed to release with many new features and plugins (lua, enum,
list, crypto, csvstorage, conditionals, mathcheck, filecheck, logchange)
many fixes, and especially with a polished documentation.

## Documentation Initiative

The documentation Initiative is a huge success and now the documentation
of Elektra is in a state where someone, never heard of Elektra, still
can use it only by man pages.

There are now many ways to show a man page:

- [on github](http://libelektra.org/blob/master/doc/help/kdb.md)
- [in the API docu](http://doc.libelektra.org/api/latest/html/md_doc_help_kdb.html)
- by using `kdb --help` or `kdb help <command>`
- by using `man kdb`

### Help system

Nearly all README.md are now also converted to man pages and also to Doxygen.

### Doxygen Filter

<NAME> did an amazing work with a new doxygen filter.
The filter allows all Elektra Markdown pages to be also included
in the doxygen documentation. Thus all technical concepts are now
explained in Markdown pages, this filter is essential.

But even more, the filter also includes all man pages written
for the tools, giving a nice html view for them. (In addition to
the markdown rendering on github).

A big thanks to <NAME>!

### Further Docu fixes

- getenv debugging docu was improved
- typo fix: Specify, thanks to <NAME>
- [Design decisions](http://libelektra.org/blob/master/doc/decisions)
  Definition of Bool, capabilities and
  Publish Subscribe (thanks to Daniel Bugl)
- Improve iconv docu
- usage examples for many plugins
- improve README for line plugin (thanks to Ian Donnelly)
- add docu about dependencies for some plugins (thanks to Ian Donnelly)
- create many new links within the documentation


## Simplicity

We shifted our [goals](http://git.libelektra.org/blob/master/doc/GOALS.md) a bit:
We want to prefer simplicity to flexibility.
Not because we do no like flexibility, but because we think we achieved enough of it.
Currently (and in future) you can use Elektra:

- as primitive key/value storage
- with specification
- with code generation
- ...

But we cut flexibility regarding:

- namespaces are only useful for configuration (not for arbitrary key/value)
- mounting and contracts functionality
- error code meanings are fixed, if a resolver detects a conflict, our defined
  error must be used
- of course ABI, API



# Qt-gui 0.0.9

<NAME> again updated his qt-gui to version 0.0.9 (beta)
with important of fixes and improvements:

- Allow QML to destroy C++ owned model
- Fixes for Qt 5.5
- Handling of merge-conflicts improved
- Avoid rewriting on merge-conflicts
- Dialog at startup
- Reduce memory footprint
- add man page

A bit thanks to <NAME>!



## Compatibility

As always, the API and API is fully forward-compatible, i.e. programs
compiled against an older 0.8 versions of Elektra will continue to work.

The behaviour of some plugins, however, changed:

- the INI plugin, the section handling was improved.
- in the NI plugin, the symbol Ni_GetVersion vanished
- in the resolver plugin files of other namespaces which are not
  mounted are not resolved anymore

### Build System

ENABLE_CXX11 does not exist anymore, it is always on.
We do not care about 199711L compilers anymore, which
makes development easier, without losing any actually
used platform.

Some programs that are only used in-source are not installed
anymore. (by <NAME>)

Python and Lua plugins are enabled now in `-DPLUGINS=ALL`.

Python3 plugin was renamed to python.

## Lua Plugin

Manuel Mausz add a lightweight alternative to the python plugin:
[the lua plugin](http://libelektra.org/blob/master/src/plugins/lua/).
In a similar way, someone can write scripts, which are executed on every
access to the
[key database](http://libelektra.org/blob/master/doc/help/elektra-glossary.md).

To mount a lua based filter, you can use:

    kdb mount file.ini /lua ini lua script=/path/to/lua/lua_filter.lua

Even though it works well, it is classified as technical preview.

Thanks to Manuel Mausz for this plugin!


## Cryptography Plugin

In this technical preview, <NAME>
[demonstrates how a plugin](http://libelektra.org/blob/master/src/plugins/crypto/)
can encrypt Elektra's values. In testcases it is already able to do so,
but for the end user an easy way for key derivation is missing.

A big thanks to <NAME>!


## Conditionals

Brings `if` inside Elektra. It lets you check if some keys have
the values they should have.

	kdb mount conditionals.dump /tmount/conditionals conditionals dump
	kdb set user/tmount/conditionals/fkey 3.0
	kdb set user/tmount/conditionals/hkey hello
	kdb setmeta user/tmount/conditionals/key check/condition "(hkey == 'hello') ? (fkey == '3.0')" # success
	kdb setmeta user/tmount/conditionals/key check/condition "(hkey == 'hello') ? (fkey == '5.0')" # fail


## INI Plugin

The INI plugin got a near rewrite. Now it handles many situations better,
has many more options and features, including:

- preserving the order
- using keys as meta-data
- many new testcases
- fix escaping

Thanks to <NAME> for this work!


## List Plugin

Currently, Elektra has some limitations on how many plugins can be
added to certain [placements](http://libelektra.org/blob/master/doc/help/elektra-plugins-ordering.md).
Because of the rapidly growing number of plugins, some combinations
are not possible anymore.

This plugin tackles the issue, by delegating the work to an arbitrary
number of subplugins. As a bonus, it works lazily and thus might avoid
the loading of some plugins all together.

Thanks to Thomas Waser for this plugin!



## Csvstorage Plugin

You can now mount csv-files. To mount `test.csv` simply use:

    kdb mount test.csv /csv csvstorage

There are many options, e.g. changing the delimiter, use header
for the key names or predefine how the columns should be named.
For details [see the documentation](http://libelektra.org/blob/master/src/plugins/csvstorage).

Thanks to Thomas Waser!

## Filecheck plugin

{'fraction_non_alphanumeric': 0.07454427083333333, 'fraction_numerical': 0.01025390625, 'mean_word_length': 4.1161532056619485, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5949648', 'n_tokens_mistral': 3744, 'n_tokens_neox': 3525, 'n_words': 1667}