smolbote is written under the C++17 standard, without any compiler-specific extensions. Source code should be kept as platform-agnostic as possible.


  • All behaviour, where possible, should be configurable.

  • Configuration is stored in plaintext files, and option names should be as self-descriptive as possible.

  • Use sane defaults. Normally, the program should "just work".



You can use clazy to check Qt semantics.

clazy is a drop-in replacement for clang. To set check levels, set the CLAZY_CHECKS environment variable to 'level0,level1', etc.


Smolbote is licensed under GPLv3 only, and explicitly does not use any self-updating "-or-later" licensing. Your code needs to be compatible with it, and have a license header in the style used by the project.

Interfaces (located in include/) should be licensed under MIT. This is to allow more license compatibility for plugins.


A full list of license identifiers can be found on the SPDX website.


There is a clang-format style in .clang-format.

Format patch for email

git format-patch $from..$to

This will give you one patch per commit. If you want to merge all of them into a single patch, you can merge the commits using rebase:

git rebase --interactive

Alternatively, replay all your commits from the commit before $from on a new branch:

git branch delivery X
git checkout delivery
git merge --squash master
git format-patch HEAD

Email patches to aqua at iserlohn dash fortress dot net.