diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..88744e7e9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,103 @@ +# Contributing to ProxySQL + +Thank you for your interest in contributing to ProxySQL! We welcome contributions from the community. + +## Code of Conduct + +We expect all contributors to be respectful and constructive. Please help us maintain a welcoming environment for everyone. + +## Before You Start + +Discuss major changes: For significant features or architectural changes, please open an issue first to discuss. + +Check existing issues: Someone might already be working on something similar. + +Reference issues: When fixing bugs or implementing requested features, mention the issue number in your PR. + +## Development Setup + +ProxySQL provides Docker build images for development. The required packages for building are listed in the Dockerfiles at: https://github.com/ProxySQL/docker-images/tree/main/build-images + +For example, to see packages needed for Ubuntu 24.04, check: https://github.com/ProxySQL/docker-images/blob/main/build-images/build-ubuntu24/Dockerfile + +## Making Changes + +- Fork the repository +- Create a feature branch: `git checkout -b feature/your-feature-name` +- Make your changes +- Ensure your code builds successfully +- Submit a Pull Request + +## Coding Standards + +Follow the existing code style and patterns in the codebase + +Use clear, descriptive names for variables and functions + +Add comments for complex logic + +Keep functions focused and maintainable + +### For C++ Code: + +- Use C++11/14 features appropriately +- Follow RAII principles for resource management +- Consider performance implications (ProxySQL is performance-critical) + +## Testing + +All PRs will go through our automated testing suite. While the full testing framework isn't publicly available, we encourage you to test your changes as thoroughly as possible. + +## Commit Messages + +Recommendations (not strict requirements): + +- Use descriptive messages that explain what changed and why +- Reference issue numbers when applicable (`#123`) +- Keep the first line under 72 characters + +**Example:** `Fix memory leak in connection pooling (#456)` + +## Pull Request Guidelines + +- Use a clear title and description +- Explain what was changed and why +- Note any breaking changes or performance impacts +- Update documentation if functionality changes + +## Reporting Bugs + +Please include in bug reports: + +- ProxySQL version +- Steps to reproduce +- Expected vs actual behavior +- Relevant configuration details +- Logs (with sensitive data redacted) + +## Feature Requests + +For new features, please: + +- Describe the feature/problem clearly +- Explain the use case +- Consider performance implications +- Note any backward compatibility concerns + +## Questions and Support + +- **Mailing list**: Join the ProxySQL mailing list for discussions +- **GitHub issues**: Use GitHub issues for questions, bugs, and feature requests +- **Search existing issues** before creating new ones + +## Recognition + +Contributors will be credited in the release notes for their contributions. + +## License + +By contributing to ProxySQL, you agree that your contributions will be licensed under the project's GPLv3 license. + +--- + +Thank you for helping make ProxySQL better! \ No newline at end of file