aboutsummaryrefslogtreecommitdiff
path: root/doc/contributing.md
blob: a5cd0ae541d040bcf46c64d4f12011676645c237 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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_.