# Contributing to ABaCo

[ABaCo][abaco-repo] is an open source project, and we welcome contributions of all 
kinds via GitHub issues and pull requests: correct or improve our [documentation][abaco-docs], report or fix bugs, propose changes, and implement new features. Please follow 
these guidelines to make sure that your contribution is easily integrated into the project.

## 1. Contributor Agreement

By contributing, you agree that we may redistribute your work under [our
license](LICENSE.md). In exchange, we will address your issues and/or assess
your change proposal as promptly as we can, and help you become a member of our
community.

## 2. What to Contribute

The easiest way to get started is by reporting an issue that needs to be fixed, 
such as a bug in the code, unclear explanations, conceptual errors, or other details. 
You can also  contribute by proposing new features or modules, improving existing 
functionality, or suggesting other ideas that might be useful. If you’re looking for 
inspiration, please check the [list of open issues][issues] in this repository.

Feedback from beginners is especially valuable, as experienced users may overlook how 
challenging certain aspects of the software can be for newcomers. Therefore, we encourage 
you to share any suggestions or observations you have about this project.

## 3. How to Contribute

Here are the ways you can submit your suggestions and contribute to the project:

### 1. Reporting Issues or Suggesting Improvements

If you have a  [GitHub][github] account (or are willing to [open one][github-join]) but are unfamiliar with Git, you can report bugs or suggest improvements by [creating an issue][new-issue]. This GitHub feature allows for discussion threads on reported issues and proposed enhancements.

### 2. Submitting Changes via Pull Requests

If you are comfortable using Git and would like to add or modify a functionality, you can submit a **pull request (PR)**. Instructions on how to contribute this way are provided in the next section.

> [!NOTE]
> The documentation for [Git][git-docs] and [GitHub][github-docs] are easy to follow, and you can learn the basics using their official guides.

## 3. Creating a Pull Request

If you choose to contribute via GitHub, you may want to look at [How to Contribute to an Open Source Project on GitHub][how-contribute]. In brief, we use [GitHub flow][github-flow] to manage changes:

1. Create a new branch in your desktop copy of this repository for each significant change.
2. Commit the change in that branch.
3. Push that branch to your fork of this repository on GitHub.
4. Submit a pull request from that branch to the [upstream repository][abaco-repo].
5. If you receive feedback, make changes on your desktop and push to your branch on GitHub: the 
   pull request will update automatically.

## 5. Credits

This contribution guide was modified under the [Creative Commons Attribution 4.0 International License][ccby] from the [Software Carpentry guides][soft-cp-guides].

[abaco-repo]: https://github.com/Multiomics-Analytics-Group/abaco
[abaco-docs]: https://mona-abaco.readthedocs.io/
[issues]: https://github.com/Multiomics-Analytics-Group/abaco/issues
[new-issue]: https://github.com/Multiomics-Analytics-Group/abaco/issues/new
[github]: https://github.com
[github-join]: https://github.com/join
[git-docs]: https://git-scm.com/doc
[github-docs]: https://guides.github.com/
[how-contribute]: https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github
[github-flow]: https://guides.github.com/introduction/flow/
[soft-cp-guides]: https://software-carpentry.org/lessons/
[ccby]: https://creativecommons.org/licenses/by/4.0/
