Welcome! We are excited that you are interested in contributing to our project! However, there are some things you might need to know, so please browse the following:
There are multiple ways of getting involved:
As a new contributor, you are in an excellent position to give us feedback to our project. For example, you could:
-
Fix or report a bug.
-
Suggest enhancements to code, tests and documentation.
-
Report/fix problems found during installing or developer environments.
-
Add suggestions for something else that is missing.
Be nice and respectful to each other.
We follow the Contributor Covenant Code Of Conduct.
Please check briefly if there already exists an Issue with your topic. If so, you can just add a comment to that with your information instead of creating a new Issue.
Reporting bugs is a good and easy way to contribute.
To do this, open an Issue that summarizes the bug and set the label to "bug".
You want to contribute code, documentation or 'your fantastic thing x'. Great, however, there are some practical points to check to make sure that everything runs as smoothly as possible.
-
It is always best to discuss your plans beforehand, to ensure that your contribution is in line with the project goals.
-
Check the list of open Issues. Either assign an existing issue to yourself, or create a new one that you would like to work on, and discuss your ideas and use cases.
-
Follow the project convention and style regarding test, code and documentation, commit style etc.
-
The project can decide to decline a contribution not following the general project guidelines, or deemed to not fit into the general project goal/architecture.
-
Make sure you have an understanding of the Pull Request Lifecycle
-
You agree to that in general, all contributions to this project will be released under the inbound=outbound norm, that is, contributions are submitted under the same terms as the project licenses. In a more formal way - 'Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of the projects License, without any additional terms or conditions.'
Generally speaking, you should fork this repository, make changes in your own fork, and then submit a pull-request. This workflow is common, maybe even expected if nothing else mentioned, and is called the Fork-and-Pull model
A practical example of such a workflow could be:
-
Fork the repository.
-
Create a topic branch from your fork main branch, i.e. myfeaturebranch
-
Push your changes to the topic branch (in your fork) of the repository, i.e myfeaturebranch.
-
Open a new pull request to main project.
-
Project maintainers might comment and give feedback on your Pull Request.
Note
|
Signoff and signing: Two similar terms for two different things A Signoff assures to the project that you have the right to contribute your content A Sign assures that the commit came from you |
A standard practice in the Open Source communities is the DCO - Developer Certificate of Origin. DCO a lightweight way for a project to assure that the contributor wrote and/or have the right to submit the contribution.
It is supersimple!
As part of filing a pull request you agree to the DCO - by just adding a sign off to your commit.
Technically, this is done by supplying the -s
/--signoff
flag to your Git commits:
Example:
$ git commit --signoff -m 'fix: add fix for superbug x'
You can also sign the commit with -S
/--gpg-sign
.
Besides extra trust, it also gives your commit a nice verified button in the UI on most Git platforms and further assures trust.
Older versions of Git requires that you have a GPG keypair set up, see Sign commit on GitHub with GPG key. For newer versions you can use SSH for signing Sign commit on GitHub with SSH key.
`$ git commit --signoff --gpg-sign -m "fix: add fix for the bug"`
Aim for a clear human readable commit history:
-
First - does the project have a defined commit message practice, please follow that.
-
Make sure you Sign-Off your commits.
-
In general
-
If the project does not have standard for commits, you might want to consider Conventional Commit standard.
-
Group relevant changes in commits, avoid scope creep and keep focus on the relevant issue.
-
Your commit messages should tell a human reader what will it do when the commit is applied.
-
Make your commit message/s easily human readable in a expected way:
-
A Conventional Commit example:
fix: add a null pointer check to MyMethod parameter
Would be read as 'When this fix is applied it will add a null pointer check to MyMethod parameter'
-
-
If you discover a security issue, please bring it to our attention.
Security reports are greatly appreciated.
For a guide on how to get started with Development, see the DEVELOPMENT Guide.
Happy contributing!