# Contributing to our projects

We welcome you to contribute to our projects, whether reporting a bug, suggesting an improvement, or submitting fixes, improvements, or new code. To ensure a smooth collaboration process please follow these guidelines.

## Found a bug?

### Search for existing issues

Before creating a new issue, please search existing [issues](https://github.com/communityox/ox_lib/issues) to see if it has already been reported.

### Add details to existing issues

If you have found an **active** issue which matches your own, please provide any additional details or context that might help us to resolve it.

### Create a new issue

If there is no **open** issue addresing your bug, please create a new issue - you can also reference a **closed** issue if you are certain they are related. Make sure to:

- Use the bug report template when creating an issue.
- Include a descriptive title and a clear and detailed description of the problem.
- Provide simple steps to reproduce the bug.
- Include all relevant code samples.
- Provide any additional information that could help diagnose the problem.

## Patched a bug?

- Submit a new pull request that includes **only the changes related to the fix**.
- Clearly explain the problem being addressed and how your solution fixes it.
- Reference any open issues or pull requests that your changes will resolve.

## Suggesting improvements or new features

Not all suggested improvements or features will be accepted.

Changes may be declined if they do not align with our design philosophy, are incomplete, not well-planned, or introduce unnecessary complexity or breaking changes to the codebase.

### Open an issue

Open a new issue to discuss your suggestion, and wait for feedback from the community and maintainers.

### Submit a draft

If you have started working on your idea, feel free to submit a **draft pull request** to gather initial feedback.

### Cosmetic changes

Pull requests that do not contribute meaningful improvements to the project's stability or functionality, such as changes to formatting or unused variables, will not be accepted.

## How to submit a pull request

- Fork the repository and, optionally, create a new branch for your changes.
- If applicable, include example code to demonstrate your changes.
- Ensure your code's style is consistent with the project, e.g. uses the same indentation and string quotations.
- If you have modified or introduced new APIs, open a pull request to our [documentation](https://github.com/communityox/docs). We will not accept undocumented code.

## Contributor License Agreement

This Contributor License Agreement ("Agreement") is entered into between the contributor ("Contributor") and Overextended ("Owner") for the purpose of contributing to this repository (the "Project").

By submitting any code, documentation, or other materials (collectively, the "Contribution") to this project, the Contributor agrees to the following terms:

1. **License Grant**  
    Subject to the Contributor retaining all ownership rights in their Contribution, the Contributor hereby grants the Owner a perpetual, irrevocable, worldwide, non-exclusive license to:

   - Use, reproduce, modify, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the Contribution,
   - Incorporate the Contribution into the Project or any derivative works thereof, **under the terms of the Project's License**.

2. **Representation and Warranties**  
   The Contributor represents and warrants that:
   - The Contribution is original and is the Contributor's own work.
   - The Contribution does not violate any third-party rights, including copyright, patent, trademark, or trade secret rights.
   - The Contributor has full power and authority to enter into this Agreement and grant the rights herein.

By submitting a Contribution to the Project, the Contributor acknowledges that they have read, understood, and agree to be bound by the terms of this Agreement.
