topola/CONTRIBUTING.md

106 lines
4.4 KiB
Markdown

<!--
SPDX-FileCopyrightText: 2024 Topola contributors
SPDX-License-Identifier: MIT
-->
# 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, and so on. 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 often requires 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)
## Issue labeling
You can help us assign [labels](https://codeberg.org/topola/topola/labels) to
the issues reported on our issue tracker. If you would like to do that, ask us
on our chat to add you to the
[Labelers](https://codeberg.org/org/topola/teams/labelers) group which has the
necessary permissions.
## 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/). If there are
any paid tasks available, they 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 (your permanent 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 all Topola project
members 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 it is your responsibility to comply with any local tax laws for any
money you receive from NLnet. You may find some more information in NLnet's
[FAQ](https://nlnet.nl/entrust/faq/).