diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..0dc47d5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,107 @@ +# Contributing to cull-gmail + +Thank you for your interest in contributing to cull-gmail! We welcome contributions from the community and appreciate your help in making this project better. + +## Code of Conduct + +By participating in this project, you agree to maintain a respectful and inclusive environment for all contributors. + +## How to Contribute + +### Reporting Bugs + +If you find a bug, please open an issue on GitHub with: +- A clear, descriptive title +- Steps to reproduce the issue +- Expected behaviour vs actual behaviour +- Your environment (OS, Rust version, etc.) +- Any relevant error messages or logs + +### Suggesting Features + +Feature requests are welcome! Please open an issue describing: +- The problem you're trying to solve +- Your proposed solution +- Any alternative solutions you've considered + +### Pull Requests + +1. **Fork the repository** and create your branch from `main` +2. **Make your changes**, following the coding standards below +3. **Add tests** if applicable +4. **Ensure all tests pass** by running `cargo test` +5. **Update documentation** as needed +6. **Format your code** with `cargo fmt` +7. **Run the linter** with `cargo clippy` +8. **Commit your changes** with clear, descriptive commit messages +9. **Submit a pull request** with a description of your changes + +## Development Setup + +```bash +# Clone your fork +git clone https://github.com/your-username/project-name.git +cd project-name + +# Build the project +cargo build + +# Run tests +cargo test + +# Format code +cargo fmt + +# Run linter +cargo clippy +``` + +## Coding Standards + +- Follow the official [Rust Style Guide](https://doc.rust-lang.org/nightly/style-guide/) +- Use `cargo fmt` to format code +- Ensure `cargo clippy` passes without warnings +- Write clear, self-documenting code with appropriate comments +- Add documentation comments for public APIs +- Keep functions focused and reasonably sized +- Write tests for new functionality + +## Commit Messages + +- Use clear, descriptive commit messages +- Use conventional commits +- Start with a verb in the present tense (e.g., "Add", "Fix", "Update") +- Keep the first line under 50 characters +- Add a detailed description if necessary + +## Testing + +- Write unit tests for new functionality +- Ensure all existing tests pass +- Aim for meaningful test coverage +- Test edge cases and error conditions + +## Documentation + +- Update the README if your changes affect usage +- Add inline documentation for public APIs +- Include examples in doc comments where helpful + +## PRLOG and CHANGELOG + + - The Pull Request log is updated automatically by CI. + - The Changelog is generated automatically from relevant conventional commits by CI + +## License + +By contributing to cull-gmail, you agree that your contributions will be licensed under the MIT License. This means: + +- You grant permission for your contributions to be used, modified, and distributed under the terms of the MIT License +- You confirm that you have the right to submit the code under this license +- You understand that your contributions will become part of the project and available to all users under the MIT License + +## Questions? + +If you have questions about contributing, feel free to open an issue or reach out to the maintainers. + +Thank you for contributing! \ No newline at end of file