# Development
Notes for developers. If you want to get involved, please do!
We welcome all kinds of contributions, for example:
- docs fixes/clarifications
- bug reports
- bug fixes
- feature requests
- pull requests
- tutorials
## Workflows
We don't mind whether you use a branching or forking workflow.
However, please only push to your own branches,
pushing to other people's branches is often a recipe for disaster,
is never required in our experience
so is best avoided.
Try and keep your merge requests as small as possible
(focus on one thing if you can).
This makes life much easier for reviewers
which allows contributions to be accepted at a faster rate.
## Installation
---8<--- "README.md:getting-started-dev"
## Language
We use British English for our development.
We do this for consistency with the broader work context of our lead developers.
## Versioning
This package follows the version format
described in [PEP440](https://peps.python.org/pep-0440/)
and [Semantic Versioning](https://semver.org/)
to describe how the version should change
depending on the updates to the code base.
Our commit messages are written using written
to follow the
[conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) standard which makes it easy to find the
commits that matter when traversing through the commit history.
to automatically generate the changelog and release documentation.
///
## Releasing
Releasing is semi-automated via a CI job. The CI job requires the type of version bump that will be performed to be
manually specified. See the poetry docs for the [list of available bump rules](https://python-poetry.org/docs/cli/#version).
### Standard process
The steps required are the following:
1. Bump the version: manually trigger the "bump" stage from the latest commit
in main (pipelines are [here](https://github.com/lewisjared/rscm/actions/workflows/bump.yaml)).
A valid "bump_rule" (see https://python-poetry.org/docs/cli/#version)
will need to be specified via the "BUMP_RULE" CI
variable (see https://docs.gitlab.com/ee/ci/variables/). This will then
trigger a release, including publication to PyPI.
1. This will create a draft release with the release notes partially completed
in the [releases](https://github.com/lewisjared/rscm/releases) page.
This draft release can be edited to include any additional information before
being published.
1. That's it, release done, make noise on social media of choice, do whatever
else
1. Enjoy the newly available version