Thank you for your interest in contributing to Constraint Theory Research! This document provides guidelines and instructions for contributing.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Style Guidelines
- Mathematical Contributions
This project and everyone participating in it is governed by our commitment to maintaining a welcoming and inclusive environment. By participating, you are expected to uphold this standard.
- Use the GitHub issue tracker to report bugs
- Include a clear title and description
- Provide steps to reproduce the issue
- Include relevant logs or screenshots
- Open an issue with the label "enhancement"
- Clearly describe the enhancement and its motivation
- Explain how it would benefit the project
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Documentation improvements are always welcome:
- Fix typos or clarify existing documentation
- Add new examples or tutorials
- Improve mathematical explanations
- Rust 1.70+ (for constraint-theory-core)
- Python 3.8+ (for constraint-theory-python)
- Git
# Clone the repository
git clone https://github.com/SuperInstance/constraint-theory-research.git
cd constraint-theory-research
# For Rust development
cd ../constraint-theory-core
cargo build
cargo test
# For Python development
cd ../constraint-theory-python
pip install -e .
pytest- Update Documentation: Ensure any new functionality is documented
- Add Tests: All new features should include appropriate tests
- Follow Style Guidelines: See below for style requirements
- Link Issues: Reference any related issues in your PR description
- Wait for Review: Maintainers will review your PR promptly
- Code compiles without errors
- All tests pass
- New features have corresponding tests
- Documentation is updated
- Commit messages are clear and descriptive
Rust:
- Follow standard Rust formatting (
cargo fmt) - Use
clippyfor linting (cargo clippy) - Document public APIs with doc comments
Python:
- Follow PEP 8 style guidelines
- Use type hints for function signatures
- Document functions with docstrings
When contributing mathematical content:
- Use standard LaTeX notation in Markdown files
- Provide both formal definitions and intuitive explanations
- Include examples where appropriate
- Reference relevant literature
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters
- Reference issues and pull requests liberally
When contributing formal proofs:
- State the theorem clearly
- Provide a complete proof
- Reference any lemmas used
- Include a brief explanation of significance
For new algorithms:
- Describe the algorithm mathematically
- Provide pseudocode
- Analyze time and space complexity
- Include benchmark comparisons if applicable
When adding citations:
- Use BibTeX format for bibliographic entries
- Ensure DOIs are included where available
- Follow arXiv citation standards for preprints
Feel free to open an issue with the "question" label, or reach out to the maintainers directly.
Thank you for contributing to Constraint Theory Research!