topola/CONTRIBUTING.md

97 lines
3.9 KiB
Markdown

# Contributing to Topola
*Anyone* can contribute to Topola, including you.
Contributions can be of any kind: documentation, organization,
tutorials, blog posts, bug reports, issues, feature requests, feature
implementations, pull requests, helping to manage issues, etc.. Many of
these tasks do not require specialized programming knowledge, or any
programming at all.
You may contribute to Topola under any identity you want. There is no
requirement to use any legal or real name.
## Chat
We invite you to join our [Matrix
chatroom](https://matrix.to/#/%23topola:tchncs.de) or [IRC
channel](https://webchat.oftc.net/?channels=#topola) to talk with us. We
especially encourage you to do so if you are going make any large or
complicated changes, as that may require closer coordination. Both
chatrooms are bridged, so it does not matter which one you join.
## Reporting issues
If you believe that you have found a defect in Topola or its
documentation, or would like to request a feature, please report that on
our [issue tracker](https://codeberg.org/topola/topola/issues).
Under normal operation, crashes and panics are always considered
reportable bugs.
## Translation
If you know any language other than English, you can help by translating
Topola on [Weblate](https://translate.codeberg.org/engage/topola/).
![](https://translate.codeberg.org/widget/topola/topola/multi-auto.svg)
## Writing code
We welcome code from anyone regardless of skill or experience level.
We are friendly to newcomers. We will help you with your contribution if
there are any problems.
To build Topola, follow the build instructions from our [Installation
guide](INSTALL.md).
### Contribution workflow
Topola accepts contributions as pull requests. For a step-by-step guide
on how to use these, refer to Codeberg's
[documentation](https://docs.codeberg.org/collaborating/pull-requests-and-git-flow/).
We prefer for the submitted code to be formatted with
[rustfmt](https://github.com/rust-lang/rustfmt). Follow the instructions
in that link to install rustfmt and set up your editor to format code
automatically.
### Working on paid coding tasks
Topola's development is sponsored by [NLnet](https://nlnet.nl/). The
coding tasks that NLnet pays for are tracked in issues labeled
[Paid](https://codeberg.org/topola/topola/issues?q=&type=all&state=open&labels=245942&milestone=0&assignee=0&poster=0&fuzzy=false).
Each grant is tracked in a separate milestone. Anyone, including
newcomers, can seek to work on paid tasks and will receive the allocated
funds upon completion.
Before you start working on a paid task, remember to tell us that you
are claiming it and make sure we agree, so that any potential collision
with someone else's work is prevented.
#### Receiving money upon task completion
Once you have completed your task, we will contact you via email to add
you as a party to the *memorandum of understanding* (MoU) we have signed
with NLnet. This will require you to send your domicile address (i.e.
physical address, home address) to NLnet via a specified email address.
NLnet will not send your domicile address to anyone else, not even to
Topola project members, so we will not see it.
You will also have to provide your legal name. You may optionally
provide a pseudonym, which will make your legal name invisible for
Topola project members in our communication with NLnet just like your
domicile address.
After all necessary information is supplied, NLnet will amend the MoU to
add you as a party. This may take a few weeks. Afterwards, you will
receive a link to submit a *request for payment* (RfP). Once the RfP is
submitted, it will be verified by the Topola project, after which you
will receive the payment in up to three weeks. From then on, you will be
able to re-use the same link to request further payments for completing
other tasks funded from the same grant without having to amend the MoU
again.
Note that if you receive any money from NLnet, it is your responsibility
to comply with any local tax laws.