Thank you for considering contributing to our Numerical Optimization repository! This document outlines the process and guidelines for contributing.
You can contribute in several ways:
- Implementing new optimization algorithms
- Improving existing implementations
- Adding examples and use cases
- Enhancing documentation
- Fixing bugs
- Adding tests
- Suggesting improvements
-
Fork the Repository
# Clone your fork git clone https://github.com/your-username/repository-name.git cd repository-name # Add upstream remote git remote add upstream https://github.com/original-owner/repository-name.git
-
Create a Branch
# Create and switch to a new branch git checkout -b feature/your-feature-name
- Follow PEP 8 style guide for Python code
- Use meaningful variable and function names
- Add docstrings to functions and classes
- Include type hints where appropriate
Each contribution should include:
- Clear docstrings explaining functionality
- Mathematical background (if applicable)
- Usage examples
- References to relevant papers/resources
- Write clean, readable code
- Include necessary tests
- Provide performance benchmarks (if applicable)
- Add example usage in docstrings
- Add unit tests for new functionality
- Ensure all tests pass before submitting
- Include test cases with edge conditions
-
Commit Your Changes
git add . git commit -m "Brief description of changes"
-
Update Your Fork
git fetch upstream git rebase upstream/main
-
Push Changes
git push origin feature/your-feature-name
-
Create Pull Request
- Go to the repository on GitHub
- Click "New Pull Request"
- Select your branch
- Fill in the PR template
Your PR should include:
- Clear description of changes
- Reference to any related issues
- List of new dependencies (if any)
- Updates to documentation
- Test results
- Maintainers will review your PR
- Address any requested changes
- Once approved, your PR will be merged
- Keep PRs focused and reasonably sized
- Write clear commit messages
- Update documentation as needed
- Test thoroughly before submitting
- Be responsive to feedback
If you have questions, feel free to:
- Open an issue
- Ask in the discussions section
- Contact the maintainers
Thank you for contributing to making numerical optimization more accessible to everyone! 🚀