Versioning

  • 2 min read

Since version 2.45 xkeyboard-config switched to a versioning scheme to enable parallel installation of multiple versions, in a directoty tree independent of X11 files.

Introduction

Until version 2.44 our installed files were not versioned, so only one version of xkeyboard-config could be installed at a time.

We plan to introduce breaking changes to the rules and keymap file formats to fix long-standing issues. To ensure backward compatibility, in version 2.45 we are switching to versioned install directories and files, in order to enable multiple versions of xkeyboard-config to be installed in parallel.

Version scheme

Since we do not expect the formats to evolve frequently, the version scheme is simple:

  • The file format version uses a single number and increments by 1.
  • The major version of the xkeyboard-config project denotes the file format version of both rules and keymap files.
  • The version scheme starts at the current major version: 2.
  • The version defines a range of XKB compilers that it is compatible with.
  • Everytime we introduce a breaking change in the file formats, we bump the major version of xkeyboard-config and define the corresponding supported XKB compilers range.

Policy

TODO: This a work in progress!

What denotes the dataset formats?

A xkeyboard-config format is defined by the range of Xorg xkbcomp and libxkbcommon versions that can compile it.

So whenever we start to use a feature that does not compile with an older xkbcommon, we have to bump the format version.

When do we introduce a new format?

Shiny new syntax will not justify a format bump, only features that actually:

  • improve xkeyboard-config maintenance
  • improve end-users use cases
  • fix bugs or strong limitations
How long do we support a format?
  • v1: Until we drop support for X11 (not planned yet)

Supported XKB compilers

XKB compiler xkeyboard-config format version
2

X11 xkbcomp

all versions

libxkbcommon

all versions, using XKB_KEYMAP_FORMAT_TEXT_V1