torchforge / CONTRIBUTING.md
meetanilp's picture
Initial release: TorchForge v1.0.0
f206b57 verified
# Contributing to TorchForge
Thank you for your interest in contributing to TorchForge! This document provides guidelines and instructions for contributing.
## Code of Conduct
We are committed to providing a welcoming and inclusive environment. Please be respectful and professional in all interactions.
## How to Contribute
### Reporting Bugs
Before creating a bug report:
1. Check the [existing issues](https://github.com/anilprasad/torchforge/issues)
2. Verify you're using the latest version
3. Collect relevant information (Python version, PyTorch version, OS, etc.)
Create a bug report with:
- Clear, descriptive title
- Steps to reproduce
- Expected behavior
- Actual behavior
- Code sample (if applicable)
- Error messages and stack traces
### Suggesting Features
We welcome feature suggestions! Please:
1. Check existing feature requests
2. Describe the problem your feature would solve
3. Explain your proposed solution
4. Consider alternative approaches
### Pull Requests
#### Setup Development Environment
```bash
# Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/torchforge.git
cd torchforge
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
```
#### Development Workflow
1. **Create a branch**
```bash
git checkout -b feature/your-feature-name
```
2. **Make your changes**
- Write clear, documented code
- Follow existing code style
- Add tests for new functionality
- Update documentation as needed
3. **Run tests**
```bash
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=torchforge --cov-report=html
# Run specific test
pytest tests/test_core.py::TestForgeModel::test_model_creation
```
4. **Format code**
```bash
# Format with black
black torchforge/ tests/
# Sort imports
isort torchforge/ tests/
# Check style
flake8 torchforge/
# Type check
mypy torchforge/
```
5. **Commit changes**
```bash
git add .
git commit -m "feat: add new feature description"
```
Follow [Conventional Commits](https://www.conventionalcommits.org/):
- `feat:` New feature
- `fix:` Bug fix
- `docs:` Documentation changes
- `test:` Adding or updating tests
- `refactor:` Code refactoring
- `perf:` Performance improvements
- `chore:` Build process or auxiliary tool changes
6. **Push and create PR**
```bash
git push origin feature/your-feature-name
```
Then create a Pull Request on GitHub with:
- Clear description of changes
- Link to related issues
- Screenshots (if UI changes)
- Test results
#### Code Style Guidelines
**Python Style**
- Follow PEP 8
- Use type hints
- Maximum line length: 100 characters
- Use docstrings for all public functions/classes
**Documentation Style**
```python
def function_name(param1: str, param2: int) -> bool:
"""
Short description of function.
Longer description with more details about what the function
does and when to use it.
Args:
param1: Description of param1
param2: Description of param2
Returns:
Description of return value
Raises:
ValueError: When param1 is invalid
Example:
>>> result = function_name("test", 42)
>>> print(result)
True
"""
pass
```
**Testing Guidelines**
- Write tests for all new features
- Aim for >80% code coverage
- Use descriptive test names
- Include edge cases and error conditions
```python
def test_feature_name_with_valid_input():
"""Test that feature works with valid input."""
# Arrange
model = create_test_model()
# Act
result = model.some_method()
# Assert
assert result.status == "success"
```
#### Documentation
When adding new features:
1. Update relevant documentation files
2. Add docstrings to all public APIs
3. Include code examples
4. Update CHANGELOG.md
### Areas for Contribution
We especially welcome contributions in:
**Core Features**
- Additional compliance frameworks (EU AI Act, ISO 42001)
- Advanced monitoring capabilities
- Performance optimizations
- Cloud provider integrations
**Documentation**
- Tutorial improvements
- Example notebooks
- API documentation
- Translation to other languages
**Testing**
- Test coverage improvements
- Performance benchmarks
- Integration tests
**Infrastructure**
- CI/CD improvements
- Docker optimizations
- Kubernetes best practices
## Community
- **GitHub Discussions**: Ask questions, share ideas
- **GitHub Issues**: Bug reports and feature requests
- **LinkedIn**: Follow [@anilsprasad](https://www.linkedin.com/in/anilsprasad/) for updates
## Recognition
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Recognized in the annual contributor report
Thank you for contributing to TorchForge! 🚀