# Contributing Guidelines

Thank you for considering contributing to our open-source project! We appreciate your interest and support. To ensure a smooth collaboration, please review and adhere to the following guidelines.

## Table of Contents

- [Contributing Guidelines](#contributing-guidelines)
	- [Table of Contents](#table-of-contents)
	- [Getting Started](#getting-started)
		- [Prerequisites](#prerequisites)
		- [Fork the Repository](#fork-the-repository)
		- [Clone the Repository](#clone-the-repository)
	- [Making Contributions](#making-contributions)
		- [Branches](#branches)
		- [Coding Standards](#coding-standards)
		- [Commit Messages](#commit-messages)
		- [Testing](#testing)
	- [Submitting Changes](#submitting-changes)
		- [Pull Requests](#pull-requests)
		- [Issues](#issues)
	- [Community and Communication](#community-and-communication)
	- [Code of Conduct](#code-of-conduct)

## Getting Started

### Prerequisites

Before you start contributing, please make sure you have the following:

- [Git](https://git-scm.com/) installed
- [A GitHub account](https://github.com/)
- A text editor or integrated development environment (IDE) of your choice
- Knowledge of the programming language(s) used in this project

### Fork the Repository

Fork our repository by clicking the "Fork" button on the top right of the repository page. This will create a copy of the project in your GitHub account.

### Clone the Repository

After forking the repository, clone it to your local machine using the following command, replacing `[your-username]` with your GitHub username:

```bash
git clone https://github.com/gbowne1/[repository-name].git
```

## Making Contributions

### Branches

Create a new branch for your work. It's important to keep your changes isolated from the `main` or `master` branch to prevent conflicts. Name your branch descriptively, such as `feature/your-feature-name` or `bugfix/issue-number`.

```bash
git checkout -b feature/your-feature-name
```

### Coding Standards

Please follow the coding standards and style guide of the project. If there are no established standards, maintain consistency with the existing codebase.

A few notes about this project's coding standards.

We use the C11 and/or C17 standard in this project.

Use whatever editor or IDE you prefer.  We have toolchain recommendations including versions in the main README.md file.

### Commit Messages

Write clear, concise, and meaningful commit messages. A good commit message should:

- Begin with a verb in the imperative mood (e.g., "Add", "Fix" "Update", etc. ).
- Be concise and focused on a single change.
- Keep your changes limited to the issue.
- Reference related issues or pull requests, if applicable.
- Do not be afraid to post any issues you encounter

Example: "Fix #123: Add validation for user email input"

### Testing

Make sure your changes do not break existing functionality. Write tests for new features and update existing tests as needed.

## Submitting Changes

### Pull Requests

When your contribution is ready, open a pull request (PR) from your branch to the main repository's branch (e.g., `main` or `master`). Be sure to:

- Give the PR a descriptive title.
- Provide a clear and detailed description of your changes.
- Do NOT screenshot code, rather copy and paste into code blocks in Markdown.
- Reference related issues, if any.
- Be prepared to respond to feedback and make necessary adjustments.

### Issues

If you find a bug, have a suggestion, or want to work on an issue, please check the project's issue tracker. If the issue doesn't exist yet, feel free to open a new one to discuss the problem or feature request.

## Community and Communication

Join our community on [GitHub Discussions](https://github.com/gbowne1/ClassicOS/discussions) or [our Discord](https://discord.gg/QusyDYeh) or [our Slack server/channel](https://join.slack.com/t/connectcoders/shared_invite/zt-23ajnvegn-0nUuIlxhSDU8tQrPBL~riQ)to connect with other contributors and maintainers. This is the place to seek help, discuss ideas, and stay updated on project developments.

## Code of Conduct

Please adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) to ensure a welcoming and inclusive environment for all contributors.

Thank you for your interest in contributing to our project! Your contributions make a significant impact on the success and growth of the project.
