== 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 is stored in plaintext files, and 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 === Setting linker Meson has no environment variable to set the linker (link:https://github.com/mesonbuild/meson/issues/3597[issue]). Instead, this can be done using the cpp_link_args: [source, sh] ---- build% meson configure -Dcpp_link_args='-fuse-ld=gold' ---- === clazy You can use https://github.com/KDE/clazy[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. == 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 https://spdx.org/licenses/[the SPDX website]. == Style There is a clang-format style in .clang-format. == Format patch for email [source, sh] ---- 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: [source, sh] ---- git rebase --interactive ---- Alternatively, replay all your commits from the commit before $from on a new branch: [source, sh] ---- 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_.