Decision records

Implementation language: Python

The project will be implemented in Python 3.

Advantages

  • The “core team” is familiar and productive with it.
  • Libraries are available with bindings for all major UI toolkits.
  • It is easy to experiment with (dynamic typing, REPL, expressive syntax).

Disadvantages

It is possible that it might not be fast enough for the intended use case.

Potential mitigations:

  • Use a library that binds to a C/C++ toolkit (e.g. Qt, GTK, ncurses).
  • Rewrite performance-sensitive parts in a faster language (e.g. C++, Vala, Haskell).

Python version compatibility

The software will be compatible with Python 3.10 and up.

The version of Python provided by current Linux distributions is as follows:

OS Python version
Ubuntu 22.04 3.10
Debian stable 3.11
Fedora 38 3.11
Alpine 3.18 3.11

Since Ubuntu 22.04 is supported until 2027, and Python 3.10 is supported by the upstream project until 2026-10, v3.10 is expected to be in use for the next three years at least.

There also aren’t any new features in v3.11 that we want to take advantage of for this project.