|
| 1 | +## Contributing |
| 2 | +You are here to help the Python Multicast Project? Awesome, feel welcome and read the following sections in order to know what and how to work on something. If you get stuck at any point you can create a ticket on GitHub. |
| 3 | + |
| 4 | +Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests. |
| 5 | + |
| 6 | + |
| 7 | +When reporting an issue, please list the version of Python Multicast Library you are using and any relevant information about your software environment (python version, OS type and version, etc). Also avoid vague language like "it doesn't work." Please describe as specifically as you can what behavior you are actually seeing (eg: an error message? a nil return value?). |
| 8 | + |
| 9 | + |
| 10 | +For all contributions, please respect the following guidelines: |
| 11 | + |
| 12 | +Each pull request should implement ONE feature or bugfix. If you want to add or fix more than one thing, submit more than one pull request. |
| 13 | +- Do not commit changes to files that are irrelevant to your feature or bugfix (eg: .gitignore). |
| 14 | +- Do not add new external dependencies unless ABSOLUTELY necessary (these could cause Load Errors on certain systems). |
| 15 | +- Add new tests for new code if able (otherwise add descriptive pseudo-tests as issues). |
| 16 | +- Be willing to accept criticism and work on improving your code; care must be taken not to introduce bugs or vulnerabilities. |
| 17 | + |
| 18 | +#### Known Issues and Possible Improvements |
| 19 | + |
| 20 | +For Details on current issues: |
| 21 | +- see [Issues](https://github.com/reactive-firewall/python-repo/issues) |
| 22 | + |
| 23 | +## Triaging tickets |
| 24 | +Here is a brief explanation on how I triage incoming tickets to get a better sense of what needs to be done on what end. |
| 25 | + |
| 26 | +>>Note |
| 27 | +>> |
| 28 | +>>You will need Triage permission on the project in order to do this. You can ask one of the members of the Team to give you access. (Please join the beta first.) |
| 29 | +
|
| 30 | +## Initial triage |
| 31 | +When sitting down to do some triaging work, start with the list of untriaged tickets. Consider all tickets that do not have a label as untriaged. The first step is to categorize the ticket into one of the following categories and either close the ticket or assign an appropriate lable. The reported issue |
| 32 | + |
| 33 | + * is not valid |
| 34 | +If you think the ticket is invalid comment why you think it is invalid, then close the ticket. Tickets might be invalid if they were already fixed in the past or it was decided that the proposed feature will not be implemented because it does not conform with the overall goal of Pocket-PiAI Project. Also if you happen to know that the problem was already reported, label the ticket with Status: duplicate, reference the other ticket that is already addressing the problem and close the duplicate. |
| 35 | + |
| 36 | +Examples: |
| 37 | + |
| 38 | +This is an issue. (A good starting point for first person to discover) |
| 39 | + |
| 40 | + |
| 41 | + * does not provide enough information |
| 42 | +Add the label question if the reported issue does not contain enough information to decide if it is valid or not and ask on the ticket for the required information to go forward. I will re-triage all tickets that have the label question assigned. If the original reporter left new information we can try to re-categorize the ticket. If the reporter did not come back to provide more required information after a long enough time, we will close the ticket (this should be roughly about two weeks). |
| 43 | + |
| 44 | +Examples: |
| 45 | + |
| 46 | +My builds stopped working. Please help! Ask for a link to the build log and for which project is affected. |
| 47 | + |
| 48 | + |
| 49 | + * is a valid enhancement proposal |
| 50 | +If the ticket contains an enhancement proposal that aligns with the goals of this repo, then add the label Enhancement. If the proposal seems valid but requires further discussion between core contributors because there might be different possibilities on how to implement the enhancement, then also add the label question. |
| 51 | + |
| 52 | +Examples: |
| 53 | + |
| 54 | +Improve documentation Examples in contribute docs. |
| 55 | +Provide better integration with security feature XYZ |
| 56 | +Refactor module X for better readability (see #48) |
| 57 | +Achieve world domination (also needs the label question) |
| 58 | + |
| 59 | + |
| 60 | + * is a valid problem within the code base: |
| 61 | +If it’s a valid bug, then add the label Bug. Try to reference related issues if you come across any. |
| 62 | + |
| 63 | +Examples: |
| 64 | + |
| 65 | +Example Library fails to transmit the leter 'x' or 'y' (logs attached) |
| 66 | + |
| 67 | + |
| 68 | + * is a question and needs answering: |
| 69 | +If the ticket contains a question about the code, then move question to FAQ on wiki and add task to answer question on wiki to the issue (or close if already answered). |
| 70 | + |
| 71 | +Examples: |
| 72 | + |
| 73 | +My message was seen by two hosts. Why? |
| 74 | +Why are my builds failing? |
| 75 | + |
| 76 | + |
| 77 | +Helpful links for triaging |
| 78 | +Here is a list of links for contributors that look for work: |
| 79 | + |
| 80 | +Untriaged tickets: Go and triage them! |
| 81 | + |
| 82 | + |
| 83 | +# Reviewing: |
| 84 | + |
| 85 | +This is the checklist that I try to go through for every single pull request that I get. If you're wondering why it takes so long for me to accept pull requests, this is why. |
| 86 | + |
| 87 | +## General |
| 88 | + |
| 89 | +- [ ] Is this change useful to me, or something that I think will benefit others greatly? |
| 90 | +- [ ] Check for overlap with other PRs. |
| 91 | +- [ ] Think carefully about the long-term implications of the change. How will it affect existing projects that are dependent on this? How will it affect my projects? If this is complicated, do I really want to maintain it forever? Is there any way it could be implemented as a separate package, for better modularity and flexibility? |
| 92 | + |
| 93 | +## Check the Code |
| 94 | + |
| 95 | +- [ ] If it does too much, ask for it to be broken up into smaller PRs. |
| 96 | +- [ ] Does it pass `make test-style` (flake8, etc.)? |
| 97 | +- [ ] Is it consistent? |
| 98 | +- [ ] Review the changes carefully, line by line. Make sure you understand every single part of every line. Learn whatever you do not know yet. |
| 99 | +- [ ] Take the time to get things right. PRs almost always require additional improvements to meet the bar for quality. Be very strict about quality. This usually takes several commits on top of the original PR. |
| 100 | + |
| 101 | +## Check the Tests |
| 102 | + |
| 103 | +- [ ] Does it have tests? If not: |
| 104 | + |
| 105 | + - [ ] Comment on the PR "Can you please add tests for this code to `tests/test_blah.py`", or... |
| 106 | + - [ ] Write the tests yourself. |
| 107 | + |
| 108 | +- [ ] Do the tests pass for all of the following? If not, write a note in the PR, or fix them yourself. |
| 109 | + |
| 110 | + - [ ] Python 3.8 - Mac |
| 111 | + - [ ] Python 3.8 - Linux (OPTIONAL) |
| 112 | + - [ ] Python 3.9 - Linux |
| 113 | + - [ ] Python 3.9 (or Newer) - Mac |
| 114 | + - [ ] Python 3.10 - Linux |
| 115 | + - [ ] Python 3.11 - Linux |
| 116 | + - [ ] Python 3.12 - Linux |
| 117 | + - [ ] Python any - Windows (OPTIONAL) |
| 118 | + |
| 119 | +## Check the Docs |
| 120 | + |
| 121 | +- [ ] Does it have docs? If not: |
| 122 | + |
| 123 | + - [ ] Comment on the PR "Can you please add docs for this feature to the wiki", or... |
| 124 | + - [ ] Write the docs yourself. |
| 125 | + |
| 126 | +- [ ] If any new functions/classes are added, do they contain docstrings? |
| 127 | + |
| 128 | +## Credit the Authors |
| 129 | + |
| 130 | +- [ ] Add name and URL to `README.md` for security fixes. |
| 131 | +- [ ] Thank them for their hard work. |
| 132 | + |
| 133 | +## Check the copyright year: |
| 134 | + |
| 135 | +- [ ] reads: |
| 136 | + |
| 137 | +> Copyright (c) 2017-2024, Author |
| 138 | +
|
| 139 | + |
| 140 | +## Close Issues |
| 141 | + |
| 142 | +- [ ] Merge the PR branch. This will close the PR's issue. |
| 143 | +- [ ] Close any duplicate or related issues that can now be closed. Write thoughtful comments explaining how the issues were resolved. |
| 144 | + |
| 145 | +## Release (optional) |
| 146 | + |
| 147 | +- [ ] Decide whether the changes in master make sense as a major, minor, or patch release. |
| 148 | +- [ ] Look at the clock. If you're tired, release later when you have time to deal with release problems. |
| 149 | +- [ ] Then follow all the steps in [EXAMPLE Release Checklist](https://github.com/reactive-firewall/python-repo/issues/) FIXME! |
0 commit comments