Contributing
Contributing to Urx
Urx is an open-source project made with ❤️, and we welcome contributions from the community!
How to Contribute
Reporting Issues
Found a bug or have a feature request?
- Search existing issues to avoid duplicates
- Create a new issue with a clear title and description
- Provide details:
- Urx version (
urx --version) - Operating system
- Command used
- Expected vs actual behavior
- Steps to reproduce
- Urx version (
Contributing Code
Prerequisites
- Rust (latest stable version)
- Git
- Familiarity with the Rust ecosystem
Development Setup
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/urx.git cd urx -
Build the project:
cargo build -
Run tests:
cargo test -
Create a feature branch:
git checkout -b feature/your-feature-name
Making Changes
- Write clean code following Rust best practices
- Add tests for new functionality
- Update documentation if needed
- Run formatting:
cargo fmt - Run linting:
cargo clippy -- --deny warnings
Submitting Changes
-
Commit your changes:
git add . git commit -m "Add feature: description" -
Push to your fork:
git push origin feature/your-feature-name -
Create a Pull Request on GitHub:
- Clear title and description
- Reference related issues
- Describe changes made
- Include any breaking changes
Contributing Documentation
Documentation improvements are always welcome!
- Fix typos or unclear explanations
- Add examples and use cases
- Improve existing guides
- Translate documentation (future)
Documentation is in docs/content/ directory using Markdown format.
Code of Conduct
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
Development Guidelines
Code Style
- Follow Rust standard formatting (use
cargo fmt) - Write clear, self-documenting code
- Add comments for complex logic
- Keep functions focused and small
Testing
- Add unit tests for new functions
- Add integration tests for features
- Ensure all tests pass before submitting
- Aim for high test coverage
Commit Messages
- Use clear, descriptive commit messages
- Start with a verb (Add, Fix, Update, Remove)
- Reference issue numbers when applicable
- Keep the first line under 72 characters
Pull Request Guidelines
- One feature/fix per pull request
- Keep changes focused and atomic
- Update CHANGELOG.md for significant changes
- Ensure CI passes before requesting review
- Be responsive to feedback
Project Structure
urx/
├── src/ # Source code
│ ├── cli/ # CLI argument parsing
│ ├── providers/ # URL data providers
│ ├── filters/ # URL filtering logic
│ ├── testers/ # HTTP testing
│ └── network/ # Network configuration
├── docs/ # Documentation (Zola site)
├── example/ # Example configurations
└── tests/ # Integration tests
Need Help?
- Read the full CONTRIBUTING.md guide
- Join GitHub Discussions
- Check the documentation
- Ask questions in issues
Recognition
All contributors are recognized in the project!
License
By contributing to Urx, you agree that your contributions will be licensed under the project's MIT License.
Thank you for contributing to Urx! Your support helps make the project better for everyone. 🚀