|
1 | | -# Contributing |
| 1 | +# OSEA Contributors Guide |
2 | 2 |
|
3 | | -:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: |
| 3 | +Welcome to the Open Source and Energy Access (OSEA) contributors' guide. |
| 4 | +We appreciate your consideration of contributing to this repository and celebrate all the contributors who add value to the community. |
| 5 | +This document guides you through smooth paths to a meaningful contribution to the project. Following the guide implies respecting the maintainers and developers who manage and develop the projects. |
| 6 | +In return, they will reciprocate by addressing your issue, assessing and helping you finalise your pull requests until they are merged. OSEA prioritizes and values its commitment to creating a safe and inclusive community where everyone can contribute and thrive. |
| 7 | +It is therefore essential to ensure that everyone adheres to our [Code of Conduct](./CODE_OF_CONDUCT.md). |
4 | 8 |
|
5 | | -This project adheres to the [code of conduct](CODE_OF_CONDUCT.md). |
6 | | -By participating, you are expected to uphold this code. |
| 9 | +## Getting Started |
7 | 10 |
|
8 | | -The following is a set of guidelines for contributing to this project. |
9 | | -These are just guidelines, not rules, use your best judgment and feel free to |
10 | | -propose changes to this document in a pull request. |
| 11 | +Review the existing issues and the discussion thread to ensure your issue has not been previously addressed. |
| 12 | +We have provided resources to reduce time wastage and increase productivity. |
| 13 | +Most documentation is currently written in Markdown, making it easy to add, modify, and delete content as necessary. |
11 | 14 |
|
12 | 15 | ## Issues |
13 | 16 |
|
14 | | -Issues are created [here](https://github.com/EnAccess/OpenPAYGO-python/issues/new/choose). |
| 17 | +Issues are created [here](https://github.com/EnAccess/OpenPAYGO-python/issues/new/choose) |
15 | 18 |
|
16 | | -### How to Contribute in Issues |
| 19 | +### How to Contribute to Issues |
17 | 20 |
|
18 | | -For any issue, there are fundamentally three ways an individual can |
19 | | -contribute: |
| 21 | +For any issue, there are fundamentally three ways an individual can contribute: |
20 | 22 |
|
21 | | -1. By opening the issue for discussion: If you believe that you have found |
22 | | - a new bug in this project, you should report it by creating a new issue in |
23 | | - the [issue tracker](https://github.com/EnAccess/OpenPAYGO-python/issues). |
24 | | -2. By helping to triage the issue: You can do this either by providing |
25 | | - assistive details (a reproducible test case that demonstrates a bug) or by |
26 | | - providing suggestions to address the issue. |
27 | | -3. By helping to resolve the issue: This can be done by demonstrating |
28 | | - that the issue is not a bug or is fixed; but more often, by opening |
29 | | - a pull request that changes the source in a concrete and reviewable manner. |
| 23 | +- **By opening the issue for discussion:** If you believe that you have found a new bug in this project, you should report it by creating a new issue in the [issue tracker](https://github.com/EnAccess/OpenPAYGO-python/issues). |
| 24 | +- **By helping to triage the issue:** You can do this either by providing assistive details (a reproducible test case that demonstrates a bug) or by providing suggestions to address the issue. |
| 25 | +- **By helping to resolve the issue:** This can be done by demonstrating that the issue is not a bug or is fixed, but more often, by opening a pull request that changes the source in a concrete and reviewable manner. |
30 | 26 |
|
31 | | -### Submitting a Bug Report |
| 27 | +## Submitting a Bug Report |
32 | 28 |
|
33 | 29 | To submit a bug report: |
34 | 30 |
|
35 | | -When opening a new issue in the [issue tracker](https://github.com/EnAccess/OpenPAYGO-python/issues/new/choose), users will be presented with a template that should be filled in. |
| 31 | +- When opening a new issue in the [issue tracker](https://github.com/EnAccess/OpenPAYGO-python/issues/new/choose), users will be presented with a template that should be filled in. |
| 32 | +- If you believe that you have found a bug in this project, please fill out the template to the best of your ability. |
| 33 | +- The two most important pieces of information needed to evaluate the report are a description of the bug and a simple test case to recreate it. It is easier to fix a bug if it can be reproduced. |
| 34 | +- See [How to create a Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve). |
36 | 35 |
|
37 | | -If you believe that you have found a bug in this project, please fill out the template |
38 | | -to the best of your ability. |
| 36 | +## Triaging a Bug Report |
39 | 37 |
|
40 | | -The two most important pieces of information needed to evaluate the report are |
41 | | -a description of the bug and a simple test case to recreate it. It is easier to fix |
42 | | -a bug if it can be reproduced. |
| 38 | +It's common for open issues to involve discussion. Some contributors may have differing opinions, including whether the behavior is a bug or a feature. |
| 39 | +This discussion is part of the process and should be kept focused, helpful, and professional. |
43 | 40 |
|
44 | | -See [How to create a Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve). |
| 41 | +Terse responses that provide neither additional context nor supporting detail are not helpful or professional. |
| 42 | +To many, such responses are annoying and unfriendly. |
45 | 43 |
|
46 | | -### Triaging a Bug Report |
| 44 | +Contributors are encouraged to collaborate on solving issues and help one another make progress. |
| 45 | +If you encounter an issue that you feel is invalid or that contains incorrect information, explain why you feel that way with additional supporting context, and be willing to be convinced that you may be wrong. |
| 46 | +By doing so, we can often reach the correct outcome faster. |
47 | 47 |
|
48 | | -It's common for open issues to involve discussion. Some contributors may |
49 | | -have differing opinions, including whether the behavior is a bug or feature. |
50 | | -This discussion is part of the process and should be kept focused, helpful, |
51 | | -and professional. |
| 48 | +## Resolving a Bug Report |
52 | 49 |
|
53 | | -Terse responses that provide neither additional context nor supporting detail |
54 | | -are not helpful or professional. To many, such responses are annoying and |
55 | | -unfriendly. |
| 50 | +Most issues are resolved by opening a pull request. |
| 51 | +The process for opening and reviewing a pull request is similar to that of opening and triaging issues, but carries with it a necessary review and approval workflow that ensures that the proposed changes meet the minimal quality and functional guidelines of this project. |
56 | 52 |
|
57 | | -Contributors are encouraged to solve issues collaboratively and help one |
58 | | -another make progress. If you encounter an issue that you feel is invalid, or |
59 | | -which contains incorrect information, explain _why_ you feel that way with |
60 | | -additional supporting context, and be willing to be convinced that you may |
61 | | -be wrong. By doing so, we can often reach the correct outcome faster. |
| 53 | +## Languages |
62 | 54 |
|
63 | | -### Resolving a Bug Report |
64 | | - |
65 | | -Most issues are resolved by opening a pull request. The process for opening and |
66 | | -reviewing a pull request is similar to that of opening and triaging issues, but |
67 | | -carries with it a necessary review and approval workflow that ensures that the |
68 | | -proposed changes meet the minimal quality and functional guidelines of this project. |
69 | | - |
70 | | -### Languages |
71 | | - |
72 | | -We accept issues in _any_ language. |
73 | | -When an issue is posted in a language besides English, it is acceptable and encouraged to post an English-translated copy as a reply. |
| 55 | +We accept issues in **any** language. When an issue is posted in a language besides English, it is acceptable and encouraged to post an English-translated copy as a reply. |
74 | 56 | Anyone may post the translated reply. |
75 | 57 | In most cases, a quick pass through translation software is sufficient. |
76 | | -Having the original text _as well as_ the translation can help mitigate translation errors. |
| 58 | +Having the original text as well as the translation can help mitigate translation errors. |
77 | 59 |
|
78 | 60 | Responses to posted issues may or may not be in the original language. |
79 | 61 |
|
| 62 | +## Setting up your Environment |
| 63 | + |
| 64 | +⚠️ **Heads up!** If you'd like to work on issues, please ensure you fork the repository, create a new branch, and work on this branch to avoid pushing your changes directly to the master/main branch. |
| 65 | + |
| 66 | +Follow the steps outlined in the repo's ReadMe file for local development. |
| 67 | + |
| 68 | +Create a new branch by typing this command: |
| 69 | + |
| 70 | +```bash |
| 71 | +git switch -c <branch-name> |
| 72 | +``` |
| 73 | + |
| 74 | +Change the branch name to whatever you want. For example: |
| 75 | + |
| 76 | +```bash |
| 77 | +git switch -c update-fixture |
| 78 | +``` |
| 79 | + |
80 | 80 | ## Pull Requests |
81 | 81 |
|
82 | | -Pull Requests are the way concrete changes are made to the code, documentation, |
83 | | -dependencies, and tools contained in this project's repository. |
| 82 | +Pull Requests are the way concrete changes are made to the code, documentation, dependencies, and tools contained in this project's repository. |
| 83 | + |
| 84 | +Prior to creating a Pull Request, it is recommended to familiarize yourself with how a project can be developed and tested locally. |
| 85 | + |
| 86 | +This is usually documented in either a `DEVELOPMENT.md` file or the `docs` folder of the project. |
| 87 | + |
| 88 | +### Creating a Pull Request |
| 89 | + |
| 90 | +To create a pull request, please ensure that an existing issue exists and that you have been assigned to it, unless your change is minor, such as fixing a typo. |
| 91 | +This allows the maintainer to provide guidance and prioritize tasks; otherwise, you may risk spending time on something that doesn't get accepted for various reasons. |
| 92 | + |
| 93 | +We acknowledge everyone's contributions and strive for transparent communication. |
| 94 | +We highly recommend clear communication before undertaking any work. |
| 95 | +Upon issue assignment, two options are available to you: |
| 96 | + |
| 97 | +1. Use the GitHub interface to fork the repo, make an edit right here in the GitHub client, and then submit a pull request (no code or terminals or IDE required). |
| 98 | + [This guide](https://guides.github.com/activities/hello-world/) shows just how to do that for a small personal repo. You would simply replace creating a new repository by navigating to this one and forking it instead. |
| 99 | + This is a great idea if you simply plan to add to or edit one of the Markdown files we use for documentation in this project. |
| 100 | + |
| 101 | +2. Fork the repo, create a local copy of that fork, and work on your changes that way. |
| 102 | + This is also the only option if the project expands to include an associated application. |
| 103 | + For that, [we recommend this guide](https://www.dataschool.io/how-to-contribute-on-github). |
| 104 | + |
| 105 | +## Conventional Commits |
| 106 | + |
| 107 | +When creating a Pull Request, it is best practice to use **Conventional Commits** to describe the purpose of your changes: |
| 108 | + |
| 109 | +- `chore:` Miscellaneous commits, e.g., modifying a file. |
| 110 | +- `feat:` Commits that add or remove a feature. |
| 111 | +- `docs:` Commits that affect documentation only. |
| 112 | +- `fix:` Commits that fix a bug of a preceding feature commit. |
| 113 | +- `refactor:` Commits that rewrite/restructure your code. |
| 114 | +- `revert:` Creates a new commit that undoes the changes. |
| 115 | + |
| 116 | +## Waiting for Review |
| 117 | + |
| 118 | +Waiting plays a pivotal role in your contributor journey. |
| 119 | +Please be patient if the maintainers do not review your pull request immediately after submission. |
| 120 | +It might take time for one to be in the right condition to review all submitted pull requests. |
| 121 | +We would rather not rush a response after someone has taken the time and effort to submit it. |
| 122 | +If it has been over one week and you haven't received any acknowledgement, you can post a comment on your PR as a reminder. |
| 123 | + |
| 124 | +The purpose of reviews is to create the best experience we can for our contributors. |
| 125 | +Please be aware of the following: |
84 | 126 |
|
85 | | -Prior to creating a Pull Requests it is recommended to familiarize yourself with how a project can be developed and tested locally. |
| 127 | +1. Reviews are always respectful, acknowledging that everyone did the best possible job with the knowledge they had at the time. |
| 128 | +2. Reviews discuss content, not the person who created it. |
| 129 | +3. Reviews are constructive and start a conversation around feedback. Embrace the feedback! |
86 | 130 |
|
87 | | -This is usually documented in either `DEVELOPMENT.md` file or the `docs` folder of the project. |
| 131 | +If the pull request looks good, a maintainer will typically provide feedback and merge the request immediately. |
| 132 | +Otherwise, they will let you know what questions they have or what needs to change before your work can be accepted. |
| 133 | +Once it is, you'll see your changes on the master branch, and your open-source contribution will be complete! |
88 | 134 |
|
89 | | -## Style Guides |
| 135 | +### Style Guides |
90 | 136 |
|
91 | | -Coding style is enforced via automations on Pull Requests. |
92 | | -See the correspondong [Github Actions](.github/workflows/) for information about which standards adheres to in different parts of the project's codebase. |
| 137 | +Coding style is enforced through automated checks on Pull Requests. |
| 138 | +[See the corresponding GitHub Actions](.github/workflows/) for information about which standards are adhered to in different parts of the project's codebase. |
93 | 139 |
|
94 | | -## Further information |
| 140 | +### Further Information |
95 | 141 |
|
96 | | -Join the [Open Source in Energy Access (OSEA)](https://discord.osea-community.org/) community Discord server to connect with like-minded people. |
| 142 | +Join the [**Open Source in Energy Access (OSEA)**](https://discord.osea-community.org/) community Discord server to connect with like-minded people. |
0 commit comments