|
1 | | -## How to contribute to IRI |
| 1 | +# Contribute to IRI |
2 | 2 |
|
3 | | -#### **How should a Pull Request look like**? |
4 | | -Before creating a PR make sure you have read the entire contributing guideline. Ensure the PR description clearly describes the problem and solution by following the template. It is best to discuss your changes in an issue before creating the PR. A PR should address a **specific concern**. If it addresses more than one concern it **should be split**. Small PRs get merged in faster. Very large PRs are difficult to review and test. This makes them less likely to be merged. |
| 3 | +This document describes how to contribute to IRI. |
5 | 4 |
|
6 | | -#### **Did you find a bug?** |
| 5 | +We encourage everyone with knowledge of IOTA technology to contribute. |
7 | 6 |
|
8 | | -* **Do not open a GitHub issue if the bug is a security vulnerability |
9 | | - in IRI **, and instead, please contact us via [[email protected]](mailto:[email protected]). |
| 7 | +Thanks! :heart: |
10 | 8 |
|
11 | | -* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/iotaledger/iri/issues). You can also look up related issues by a label. For example, if your issue is database-related, filter based on the `C-DB` label and look for related issues. If it's API related, use `C-API` and so on. `C` stands for component. Make sure you skim through the labels to find your category. |
| 9 | +## Do you have a question? |
12 | 10 |
|
13 | | -* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/iotaledger/iri/issues/new). Be sure to include a **title and clear description**, and as much relevant information as possible. Make sure you follow our new issue template. The first part of the issue template is dedicated to reporting bugs, delete the second part. Steps to reproduce are particularly important. Add any relevant log output and screenshots. The easier it will be to reproduce your issue, the more likely it's getting fixed. |
| 11 | +If you have a general or technical question, you can use one of the following resources instead of submitting an issue: |
14 | 12 |
|
15 | | -#### **Did you write a patch that fixes a bug?** |
| 13 | +- [**Developer documentation:**](https://docs.iota.org/) For official information about developing with IOTA technology |
| 14 | +- [**Discord:**](https://discord.iota.org/) For real-time chats with the developers and community members |
| 15 | +- [**IOTA cafe:**](https://iota.cafe/) For technical discussions with the Research and Development Department at the IOTA Foundation |
| 16 | +- [**StackExchange:**](https://iota.stackexchange.com/) For technical and troubleshooting questions |
16 | 17 |
|
17 | | -* [New issues](https://github.com/iotaledger/iri/issues/new) should be used for reporting issues. If you already wrote a patch for an issue that you or someone else reported, make sure you link it to the open issue. You can do this by mentioning the issue number in the comment or description on the PR, for example `#123` to link issue "123". |
| 18 | +## Ways to contribute |
18 | 19 |
|
19 | | -#### **Do you intend to add a new feature or change an existing one?** |
| 20 | +To contribute to IRI on GitHub, you can: |
20 | 21 |
|
21 | | -* Suggest your change as a [new issues](https://github.com/iotaledger/iri/issues/new). Use the second part of the issue template, dedicated to new feature requests and delete the first part. If you plan on implementing the change yourself, start writing the code and submit a PR. Note that the fact that the feature is "code ready" doesn't mean it will get merged. It is advisable to gather feedback for the change first. You are encouraged to start and drive a discussion on [Discord](https://discord.iota.org/). The IRI team also monitors the repo and will provide feedback where relevant. |
| 22 | +- Report a bug |
| 23 | +- Suggest a new feature |
| 24 | +- Build a new feature |
| 25 | +- Contribute to the documentation |
22 | 26 |
|
23 | | -#### **Want to write a regression test for your feature? Or to any other feature that needs a test?** |
| 27 | +## Report a bug |
24 | 28 |
|
25 | | -* Please refer to our current [regression tests](https://github.com/iotaledger/iri/tree/dev/python-regression). |
| 29 | +This section guides you through reporting a bug. Following these guidelines helps maintainers and the community understand the bug, reproduce the behavior, and find related bugs. |
26 | 30 |
|
| 31 | +### Before reporting a bug |
27 | 32 |
|
28 | | -#### **Do you have questions about the functioning of IRI nodes, the network or anything IOTA related?** |
| 33 | +Please check the following list: |
29 | 34 |
|
30 | | -* Use our [Discord](https://discordapp.com/invite/fNGZXvh) to join the discussion and ask questions. |
| 35 | +- **Do not open a GitHub issue for [security vulnerabilities](SECURITY.MD)**, instead, please contact us at [[email protected]](mailto:[email protected]). |
31 | 36 |
|
32 | | -#### **Do you want to contribute to the IRI documentation?** |
| 37 | +- **Ensure the bug was not already reported** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iri/issues). If the bug has already been reported **and the issue is still open**, add a comment to the existing issue instead of opening a new one. You can also find related issues by their [label](https://github.com/iotaledger/iri/labels?page=1&sort=name-asc). For example, if your issue is database related, filter issues based on the `C-DB` label to look for related ones. `C` stands for component. |
33 | 38 |
|
34 | | -The IOTA documentation is based in the [docs](https://github.com/iotaledger/docs) repo. You are welcome to contribute. Make sure you follow the instructions on adding new docs. |
| 39 | +**Note:** If you find a **Closed** issue that seems similar to what you're experiencing, open a new issue and include a link to the original issue in the body of your new one. |
35 | 40 |
|
36 | | -Thanks! :heart: :heart: :heart: |
| 41 | +### Submitting A Bug Report |
37 | 42 |
|
38 | | -The contribution guidelines are inspired by the Ruby on Rails contribution guidelines. |
| 43 | +To report a bug, [open a new issue](https://github.com/iotaledger/iri/issues/new), and be sure to include as many details as possible, using the template. |
39 | 44 |
|
40 | | -IRI Team |
| 45 | +**Note:** Minor changes such as fixing a typo can but do not need an open issue. |
| 46 | + |
| 47 | +If you also want to fix the bug, submit a [pull request](#pull-requests) and reference the issue. |
| 48 | + |
| 49 | +## Suggest a new feature |
| 50 | + |
| 51 | +This section guides you through suggesting a new feature. Following these guidelines helps maintainers and the community collaborate to find the best possible way forward with your suggestion. |
| 52 | + |
| 53 | +### Before suggesting a new feature |
| 54 | + |
| 55 | +**Ensure the feature has not already been suggested** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iri/issues). |
| 56 | + |
| 57 | +### Suggesting a new feature |
| 58 | + |
| 59 | +To suggest a new feature, talk to the IOTA community and IOTA Foundation members in the #iri-discussion channel on [Discord](https://discord.iota.org/). |
| 60 | + |
| 61 | +If the IRI team approves your feature, the team will create an issue for it. |
| 62 | + |
| 63 | +## Build a new feature |
| 64 | + |
| 65 | +This section guides you through building a new feature. Following these guidelines helps give your feature the best chance of being approved and merged. |
| 66 | + |
| 67 | +### Before building a new feature |
| 68 | + |
| 69 | +Make sure to discuss the feature in the #iri-discussion channel on [Discord](https://discord.iota.org/). |
| 70 | + |
| 71 | +Otherwise, your feature may not be approved at all. |
| 72 | + |
| 73 | +### Building a new feature |
| 74 | + |
| 75 | +To build a new feature, check out a new branch based on the `dev` branch, and be sure to consider the following: |
| 76 | + |
| 77 | +- If the feature has a public facing API, make sure to document it, using Javadoc code comments |
| 78 | + |
| 79 | +- Where necessary, please write regression tests for your feature. Refer to our current [regression tests](https://github.com/iotaledger/iri/tree/dev/python-regression) for guidance. |
| 80 | + |
| 81 | +## Contribute to the IRI documentation |
| 82 | + |
| 83 | +The IRI documentation is hosted on https://docs.iota.org, which is built from content in the [documentation](https://github.com/iotaledger/documentation) repository. |
| 84 | + |
| 85 | +Please see the [guidelines](https://github.com/iotaledger/documentation/CONTRIBUTING.md) on the documentation repository for information on how to contribute to the documentation. |
| 86 | + |
| 87 | +## Pull requests |
| 88 | + |
| 89 | +This section guides you through submitting a pull request (PR). Following these guidelines helps give your PR the best chance of being approved and merged. |
| 90 | + |
| 91 | +### Before submitting a pull request |
| 92 | + |
| 93 | +When creating a pull request, please follow these steps to have your contribution considered by the maintainers: |
| 94 | + |
| 95 | +- A pull request should have exactly one concern (for example one feature or one bug). If a PR address more than one concern, it should be split into two or more PRs. |
| 96 | + |
| 97 | +- A pull request can be merged only if it references an open issue |
| 98 | + |
| 99 | + **Note:** Minor changes such as fixing a typo can but do not need an open issue. |
| 100 | + |
| 101 | +- All code should be well tested and follow the [code styleguide](STYLEGUIDE.md) |
| 102 | + |
| 103 | +### Submitting a pull request |
| 104 | + |
| 105 | +The following is a typical workflow for submitting a new pull request: |
| 106 | + |
| 107 | +1. Fork this repository |
| 108 | +2. Create a new branch based on your fork |
| 109 | +3. Commit changes and push them to your fork |
| 110 | +4. Create a pull request against the `dev` branch |
| 111 | + |
| 112 | +If all [status checks](https://help.github.com/articles/about-status-checks/) pass, and the maintainer approves the PR, it will be merged. |
| 113 | + |
| 114 | +**Note:** Reviewers may ask you to complete additional work, tests, or other changes before your pull request can be approved and merged. |
| 115 | + |
| 116 | +## Code of Conduct |
| 117 | + |
| 118 | +This project and everyone participating in it is governed by the [IOTA Code of Conduct](CODE_OF_CONDUCT.md). |
0 commit comments