Thank you for your interest in contributing to the VETTING framework! This document provides guidelines for contributing to this project.
This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please be respectful and professional in all interactions.
- Python 3.8 or higher
- Git
- GitHub account
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/vetting-python.git cd vetting-python -
Set up development environment:
make dev-install
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Write your code following the existing style
-
Add tests for new functionality
-
Run quality checks:
make format # Format code make lint # Check linting make type-check # Check types make test # Run tests
-
Commit your changes:
git add . git commit -m "Add: brief description of your changes"
Use clear, descriptive commit messages:
Add: new feature or functionalityFix: bug fixesUpdate: changes to existing featuresDocs: documentation changesTest: adding or updating tests
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- Clear title and description
- Reference any related issues
- Include screenshots if UI changes
- Add tests for new features
-
Code Review Process:
- All PRs require review from maintainers
- Address any feedback promptly
- Ensure all checks pass
# Run all tests
make test
# Run with coverage
make test-cov
# Run specific test file
pytest tests/test_specific.py- Add tests for all new functionality
- Follow existing test patterns
- Use descriptive test names
- Include edge cases and error conditions
- Add docstrings to all public functions and classes
- Use Google-style docstrings
- Include type hints for all parameters and return values
- Update README.md if adding new features
- Add examples for new functionality
- Update CHANGELOG.md for significant changes
- Follow PEP 8
- Use Black for formatting (
make format) - Use isort for import sorting
- Maximum line length: 100 characters
- Use type hints for all functions
- Import types from
typingmodule when needed - Run
make type-checkto verify types
Please avoid:
- Breaking changes without discussion
- Changes to core architecture without approval
- Adding large dependencies without justification
- Changing version numbers (handled by maintainers)
- Modifying release workflows
Include:
- Python version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Error messages/stack traces
Include:
- Clear description of the feature
- Use case and motivation
- Possible implementation approach
- Consider if it fits the project scope
Note: Only maintainers can create releases.
- Version updates are handled by maintainers
- Releases are created through GitHub releases
- PyPI publishing is automated via GitHub Actions
Do not report security issues publicly. Instead:
- Email: hli3@ufl.edu
- Include detailed description
- Provide steps to reproduce if possible
- Never commit API keys or secrets
- Use environment variables for sensitive data
- Follow secure coding practices
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General questions and discussions
- Email: hli3@ufl.edu for security issues or urgent matters
- Check existing issues and discussions
- Read the documentation
- Try the examples in the repository
We welcome contributions in:
- Core Framework: Improvements to the dual-LLM architecture
- Provider Support: New LLM provider integrations
- Educational Features: Enhanced tutoring capabilities
- Documentation: Examples, guides, and API docs
- Testing: Unit tests, integration tests, examples
- Performance: Optimization and efficiency improvements
PRs are evaluated on:
- Code Quality: Clean, readable, well-documented code
- Testing: Adequate test coverage for new features
- Documentation: Clear documentation and examples
- Compatibility: Maintains backward compatibility
- Performance: No significant performance regressions
- Security: Follows security best practices
Contributors will be:
- Listed in CHANGELOG.md for significant contributions
- Mentioned in release notes
- Added to a contributors section (future)
Thank you for contributing to the VETTING framework! Your contributions help make AI interactions safer and more effective for education and beyond.
Questions? Feel free to open a discussion or reach out to the maintainers!