aboutsummaryrefslogtreecommitdiff
path: root/doc/contributing.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/contributing.md')
-rw-r--r--doc/contributing.md37
1 files changed, 37 insertions, 0 deletions
diff --git a/doc/contributing.md b/doc/contributing.md
new file mode 100644
index 0000000..a5cd0ae
--- /dev/null
+++ b/doc/contributing.md
@@ -0,0 +1,37 @@
+## 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_.
+