Contributing to FADVI
We welcome contributions to FADVI! This guide will help you get started.
Getting Started
Development Setup
Fork the repository on GitHub
Clone your fork locally:
git clone https://github.com/liuwd15/fadvi.git
cd fadvi
Create a development environment:
conda create -n fadvi-dev python=3.11
conda activate fadvi-dev
pip install -e ".[dev]"
Install pre-commit hooks:
pre-commit install
Types of Contributions
Bug Reports
When reporting bugs, please include:
Your operating system and Python version
Steps to reproduce the bug
Expected vs actual behavior
Error messages or stack traces
Minimal code example
Feature Requests
For new features, please:
Check if it already exists in the issues
Explain the use case and motivation
Provide examples of how it would be used
Consider implementation complexity
Code Contributions
Bug fixes
New features
Performance improvements
Documentation improvements
Test coverage improvements
Development Workflow
Create a branch for your feature/fix:
git checkout -b feature/new-awesome-feature
Make changes and write tests
Run tests to ensure everything works:
pytest test/ -v
Check code quality:
black src/
flake8 src/
Commit changes with descriptive messages:
git commit -m "Add new awesome feature"
Push and create a pull request
Code Standards
Style Guide
Follow PEP 8 style guidelines
Use Black for code formatting
Use type hints where appropriate
Write docstrings for all public functions
Documentation
Use Google-style docstrings
Include examples in docstrings
Update documentation for new features
Keep README.md up to date
Testing
Write tests for new features
Maintain test coverage above 80%
Use pytest for testing
Include integration tests for major features
Pull Request Process
Update documentation if needed
Add tests for new functionality
Ensure all tests pass locally
Update changelog with your changes
Submit pull request with clear description
Pull Request Template
Please include in your PR description:
What: Brief description of changes
Why: Motivation for the changes
How: Implementation approach
Testing: How you tested the changes
Breaking changes: Any breaking changes
Related issues: Link to related issues
Code Review Process
All pull requests require review
Reviewers will check:
Code quality and style
Test coverage
Documentation
Performance impact
Breaking changes
Address reviewer feedback promptly
Be respectful and constructive
Release Process
FADVI follows semantic versioning (SemVer):
Major (X.0.0): Breaking changes
Minor (0.X.0): New features, backwards compatible
Patch (0.0.X): Bug fixes, backwards compatible
Community Guidelines
Be respectful and inclusive
Help newcomers get started
Follow the code of conduct
Share knowledge and best practices
Getting Help
Documentation: Check the docs first
GitHub Issues: Search existing issues
Discussions: Use GitHub Discussions for questions
Email: Contact maintainers directly for sensitive issues
Recognition
All contributors will be:
Listed in the CONTRIBUTORS.md file
Mentioned in release notes
Added to the documentation credits
Thank you for contributing to FADVI! 🎉