135 lines
5.6 KiB
Markdown
135 lines
5.6 KiB
Markdown
# Contributing
|
||
|
||
### We :heart: our Contributors!
|
||
|
||
First off, thank you for considering contributing to Generic. It's people like
|
||
you that make Generic such a great library.
|
||
|
||
### Why a Guideline?
|
||
|
||
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.
|
||
|
||
### What we are Looking For
|
||
|
||
Generic is an open source project and we love to receive contributions from our
|
||
community — you! There are many ways to contribute, from writing tutorials or
|
||
blog posts, improving the documentation, submitting bug reports and feature
|
||
requests or writing code which can be incorporated into Generic itself.
|
||
|
||
### What we are not Looking For
|
||
|
||
Please, don't use the issue tracker for support questions. Check whether the
|
||
your question can be answered on the
|
||
[Gaphor Gitter Channel](https://gitter.im/gaphor/Lobby).
|
||
|
||
# Ground Rules
|
||
### Responsibilities
|
||
|
||
* Ensure cross-platform compatibility for every change that's accepted.
|
||
Windows, Mac, Debian & Ubuntu Linux.
|
||
* Ensure that code that goes into core meets all requirements in this
|
||
[PR Review Checklist](https://gist.github.com/audreyr/4feef90445b9680475f2).
|
||
* Create issues for any major changes and enhancements that you wish to make.
|
||
* Discuss things transparently and get community feedback.
|
||
* Don't add any classes to the codebase unless absolutely needed. Err on the side of using
|
||
functions.
|
||
* Keep feature versions as small as possible, preferably one new feature per
|
||
version.
|
||
* Be welcoming to newcomers and encourage diverse new contributors from all
|
||
backgrounds. See the
|
||
[Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/).
|
||
|
||
# Your First Contribution
|
||
|
||
Unsure where to begin contributing to Generic? You can start by looking through
|
||
these `first-timers-only` and `up-for-grabs` issues:
|
||
|
||
* [First-timers-only issues](https://github.com/gaphor/generic/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Afirst-timers-only) -
|
||
issues which should only require a few lines of code, and a test or two.
|
||
* [Up-for-grabs issues](https://github.com/gaphor/generic/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aup-for-grabs) -
|
||
issues which should be a bit more involved than `first-timers-only` issues.
|
||
|
||
### Is This Your First Open Source Contribution?
|
||
|
||
Working on your first Pull Request? You can learn how from this *free* series,
|
||
[How to Contribute to an Open Source Project on
|
||
GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github).
|
||
|
||
At this point, you're ready to make your changes! Feel free to ask for help;
|
||
everyone is a beginner at first :smile_cat:
|
||
|
||
If a maintainer asks you to "rebase" your PR, they're saying that a lot of code
|
||
has changed, and that you need to update your branch so it's easier to merge.
|
||
|
||
# Getting Started
|
||
|
||
For something that is bigger than a one or two line fix:
|
||
|
||
1. Create your own fork of the code
|
||
2. Install all development dependencies using:
|
||
```
|
||
$ poetry install
|
||
$ pre-commit install
|
||
```
|
||
If you haven't used poetry before, just run `pip install poetry`, and then run the commands above, it will do the correct thing.
|
||
|
||
3. Add tests for your changes, run the tests with `pytest`.
|
||
4. Do the changes in your fork.
|
||
5. If you like the change and think the project could use it:
|
||
* Be sure you have the pre-commit hook installed above, it will ensure that
|
||
[Ruff](https://docs.astral.sh/ruff/) is automatically run on any changes for
|
||
consistent code formatting.
|
||
* [Sign](https://help.github.com/articles/signing-commits/) your commits.
|
||
* Note the Generic Code of Conduct.
|
||
* Create a pull request.
|
||
|
||
|
||
Small contributions such as fixing spelling errors, where the content is small
|
||
enough to not be considered intellectual property, can be submitted by a
|
||
contributor as a patch, without signing your commit.
|
||
|
||
As a rule of thumb, changes are obvious fixes if they do not introduce any new
|
||
functionality or creative thinking. As long as the change does not affect
|
||
functionality, some likely examples include the following:
|
||
* Spelling / grammar fixes
|
||
* Typo correction, white space and formatting changes
|
||
* Comment clean up
|
||
* Bug fixes that change default return values or error codes stored in constants
|
||
* Adding logging messages or debugging output
|
||
* Changes to ‘metadata’ files like pyproject.toml, .gitignore, build scripts, etc.
|
||
* Moving source files from one directory or package to another
|
||
|
||
# How to Report a Bug
|
||
If you find a security vulnerability, do NOT open an issue. Email dan@yeaw.me instead.
|
||
|
||
When filing an issue, make sure to answer the questions in the issue template.
|
||
|
||
1. What version are you using?
|
||
2. What operating system are you using?
|
||
3. What did you do?
|
||
4. What did you expect to see?
|
||
5. What did you see instead?
|
||
|
||
# How to Suggest a Feature or Enhancement
|
||
If you find yourself wishing for a feature that doesn't exist in Generic,
|
||
you are probably not alone. There are bound to be others out there with similar
|
||
needs. Many of the features that Generic has today have been added
|
||
because our users saw the need. Open an issue on our issues list on GitHub
|
||
which describes the feature you would like to see, why you need it, and how it
|
||
should work.
|
||
|
||
# Code review process
|
||
|
||
The core team looks at Pull Requests on a regular basis, you should expect a
|
||
response within a week. After feedback has been given we expect responses
|
||
within two weeks. After two weeks we may close the pull request if it isn't
|
||
showing any activity.
|
||
|
||
|
||
# Community
|
||
You can chat with the Generic community on gitter: https://gitter.im/Gaphor/Lobby.
|
||
|