# 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.