Thank you for your interest in contributing to Fast.BI! This document provides guidelines and information for contributors who want to help improve the platform.
There are many ways to contribute to Fast.BI:
- 🐛 Report bugs and issues
- 💡 Suggest new features and improvements
- 📖 Improve documentation and guides
- 🔧 Submit code changes and fixes
- 🧪 Test and validate deployments
- 🌍 Translate documentation to other languages
- 📢 Share Fast.BI with your network
# Fork on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/data-development-platform.git
cd data-development-platform
# Add the upstream remote
git remote add upstream https://github.com/fast-bi/data-development-platform.git# Install required tools
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements-dev.txt
# Install pre-commit hooks
pre-commit installgit checkout -b feature/your-feature-name
# or for bug fixes
git checkout -b fix/your-bug-description- Python 3.9+
- Docker and Docker Compose
- kubectl
- Terraform
- Terragrunt
- Helm
# Clone and setup
git clone https://github.com/fast-bi/data-development-platform.git
cd data-development-platform
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Run tests
pytest
# Run linting
flake8
black --check .
isort --check-only .
# Format code
black .
isort .# Test CLI help
python cli.py --help
# Test interactive mode (dry run)
python cli.py --dry-run
# Test with configuration file
python cli.py --config cli/deployment_configuration.yaml --dry-run- Follow PEP 8 for Python code
- Use Black for code formatting
- Use isort for import sorting
- Use flake8 for linting
Use conventional commit format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(cli): add AWS deployment support
fix(gcp): resolve billing account validation error
docs(deployment): update GCP prerequisites
test(cli): add unit tests for configuration validation
- Keep PRs focused - One feature/fix per PR
- Write clear descriptions - Explain what and why, not how
- Include tests - Add tests for new functionality
- Update documentation - Keep docs in sync with code changes
- Follow the template - Use the provided PR template
# Run all tests
pytest
# Run specific test file
pytest tests/test_cli.py
# Run with coverage
pytest --cov=cli --cov-report=html
# Run integration tests
pytest tests/integration/ --integrationtests/
├── unit/ # Unit tests
├── integration/ # Integration tests
├── fixtures/ # Test data and fixtures
└── conftest.py # Pytest configuration
- Write tests for new functionality
- Use descriptive test names
- Mock external dependencies
- Test both success and failure cases
- Aim for high test coverage
docs/
├── deployment/ # Deployment guides
├── user-guide/ # User documentation
├── api/ # API reference
├── architecture/ # System architecture
└── contributing/ # Contributor guides
- Use clear, concise language
- Include code examples
- Add screenshots for UI changes
- Keep documentation up-to-date with code
- Follow the established style guide
- Markdown for all documentation
- Mermaid for diagrams
- Code blocks with syntax highlighting
- Links to related documentation
- Check existing issues for duplicates
- Search documentation for solutions
- Test with the latest version
- Try to reproduce the issue
## Bug Description
Brief description of the issue
## Steps to Reproduce
1. Step one
2. Step two
3. Step three
## Expected Behavior
What should happen
## Actual Behavior
What actually happens
## Environment
- OS: [e.g., macOS 13.0]
- Python: [e.g., 3.9.7]
- Fast.BI Version: [e.g., 1.0.0]
- Deployment Type: [e.g., GCP, On-Premise]
## Additional Information
Logs, screenshots, or other relevant details## Feature Description
Brief description of the requested feature
## Use Case
Why is this feature needed? What problem does it solve?
## Proposed Solution
How should this feature work?
## Alternatives Considered
What other approaches were considered?
## Additional Context
Any other relevant information- Use the provided PR template
- Link related issues
- Add appropriate labels
- Request reviews from maintainers
- Address review comments promptly
- Make requested changes
- Add tests if needed
- Update documentation
- All tests must pass
- Code review approved
- Documentation updated
- No merge conflicts
- Delete your feature branch
- Update your fork
- Celebrate your contribution! 🎉
-
Research Requirements
- Study existing cloud provider implementation
- Understand provider-specific services
- Identify authentication methods
-
Create Provider Module
- Add provider to CLI configuration
- Create Terraform modules
- Implement provider-specific logic
-
Add Tests and Documentation
- Unit tests for new functionality
- Integration tests with provider
- Complete deployment guide
-
Service Integration
- Research service APIs and requirements
- Create service configuration
- Implement deployment logic
-
Documentation and Testing
- Service-specific documentation
- Configuration examples
- Integration tests
-
Create Language Files
- Add translations to
locales/directory - Update language configuration
- Test with different locales
- Add translations to
-
Documentation Translation
- Translate user-facing documentation
- Maintain translation quality
- Keep translations up-to-date
- Profile code for bottlenecks
- Optimize database queries
- Improve resource usage
- Add performance monitoring
- Horizontal scaling improvements
- Resource optimization
- Load balancing enhancements
- Caching strategies
- Vulnerability assessments
- Security best practices
- Authentication enhancements
- Access control improvements
- DO NOT create public issues for security problems
- Email security issues to: security@fast.bi
- Include detailed vulnerability information
- Allow time for security team response
- Contributors are listed in CONTRIBUTORS.md
- Significant contributions are highlighted in release notes
- Contributors may be invited to join the maintainer team
- Contributor: First successful contribution
- Regular Contributor: Multiple contributions over time
- Maintainer: Consistent contributions and community involvement
- Core Maintainer: Project leadership and major decisions
- GitHub Discussions: Ask questions and get help
- Discord: Join our community chat
- Documentation: Comprehensive guides and tutorials
- Issues: Report bugs and request features
- General Questions: Create GitHub discussions
- Security Issues: support@fast.bi
- Enterprise Support: support@fast.bi
- Project Leadership: support@fast.bi
Before submitting your contribution, ensure you have:
- Read and understood this contributing guide
- Followed the code style guidelines
- Added appropriate tests
- Updated relevant documentation
- Used conventional commit messages
- Created a focused pull request
- Linked related issues
- Requested appropriate reviews
- Choose an issue from the good first issues label
- Set up your development environment following the guide above
- Create a feature branch and start coding
- Submit your pull request and join the community!
Thank you for contributing to Fast.BI! 🚀
Your contributions help make Fast.BI better for everyone in the data community. Whether you're fixing a bug, adding a feature, or improving documentation, every contribution matters.
Questions? Don't hesitate to ask in GitHub Discussions or reach out to the maintainer team.
Happy coding! 💻✨