## Guidelines smolbote is written under the C++17 standard, without any compiler-specific extensions. Source code should be kept as platform-agnostic as possible. ## General * All behaviour, where possible, should be configurable. * Configuration option names should be as self-descriptive as possible. * Use sane defaults: normally the program should "just work". ## Qt * Check pointers with `Q_CHECK_PTR`. * Use the Qt5 signal/slot syntax (&Class::method) over the old string-based syntax (SIGNAL/SLOT). This enables compile-time connect checks. * Prefer QVector over QList: http://lists.qt-project.org/pipermail/development/2017-March/029040.html * Use [clazy](https://github.com/KDE/clazy) to check Qt semantics. ## Licensing 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. ### SPDX-License-Identifier A full list of license identifiers can be found on [the SPDX website](https://spdx.org/licenses/). ## Style There is a clang-format style in .clang-format. ## How to format patch for email ``` git format-patch $from-commit..$to-commit ``` Email patches to _aqua at iserlohn dash fortress dot net_.