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.