# Contributing to [Python Accelerator Middle Layer (PyAML)]

Thank you for your interest in contributing to [PyAML]! This document outlines how you can help, whether you're fixing bugs, adding features, improving documentation, or participating in community discussions.

## Ways to Contribute

### 1. Reporting Issues
- **Bugs & Feature Requests:** Open an issue on GitHub. Use clear titles and provide as much detail as possible (steps to reproduce, expected/actual behaviour, screenshots, etc.).
- Use an issue template if it is applicable to you. Don't forget to assign an issue to a project and set the status of the issue to TODO.
- **Before Submitting:** Check existing issues to avoid duplicates.

### 2. Working on Tasks
- **Kanban Board:** We use [GitHub Projects](https://github.com/orgs/python-accelerator-middle-layer/projects) to manage tasks. Each column represents a stage in the workflow (e.g., "To Do", "In Progress", "Review", "Done").
- **Claiming a Task:** Comment and assign yourself on the issue or card to let others know you’re working on it. Move the card to "In Progress".
- **Part-time Contributors:** It’s okay to work at your own pace. Just keep the community updated on your progress.

### 3. Submitting Changes
- **Fork & Branch:** Fork the repo and create a branch for your changes.
- **Commits:** Write clear, atomic commit messages. Reference the issue number if applicable.
- **Formatting:** Ensure your code adheres to the project’s style guidelines. Run tests locally before submitting. It is recommended to use `pre-commit` hooks for this purpose.
Sometimes pre-commit hook will block you committing due to formatting issues. They may be fixed automatically or require manual intervention. If they are fixed automatically just re-stage the files and commit again.
If manual intervention is required, please follow the instructions provided by the pre-commit tool.
- **Pull Requests (PRs):**
  - Open a PR against the `main` branch.
  - Include a description of your changes and reference the relevant issue.
  - Ensure your code follows the project’s style and passes all tests.
  - A maintainer will review your PR and may suggest changes.

### 4. Documentation
- **Improving Docs:** Fix typos, clarify instructions, or add missing documentation. Submit a PR as you would for code changes.
- **Website:** Our project website is at [python-accelerator-middle-layer.github.io](https://python-accelerator-middle-layer.github.io/).

## Community & Meetingss

### Community Meetings
- **Schedule:** Once every few months.
- **Agenda:** Discuss project direction, upcoming features, and community questions.
- **How to Join:** Write an email to the steering committee of PyAML pyaml-steering-committee-contact@esrf@fr. They will add you to the email list.
- **Mattermost link**: [Mattermost](https://mattermost.hzdr.de/signup_user_complete/?id=cdcea9p8hfr3ic8jdrrydzxxpy&md=link&sbr=su)

### Developer Meetings
- **Schedule:** Bi-weekly, alternating with community meetings.
- **Focus:** Technical discussions, code reviews.
- **How to Join:** Write an email to the steering committee of PyAML pyaml-steering-committee-contact@esrf@fr. They will add you to the email list.

## Getting Help
- **Questions?** Open a discussion on GitHub or ask in our [Mattermost channel](https://mattermost.hzdr.de/signup_user_complete/?id=cdcea9p8hfr3ic8jdrrydzxxpy&md=link&sbr=su).
- **Need Guidance?** Reach out to a maintainer or attend a maintainer or community meeting.

## Recognition
- All contributions are valued and recognised. Significant contributions may be highlighted in release notes or on the project website.

---
