Thank you for your interest in contributing to StreamTV! This document provides guidelines and instructions for contributing.
- Use the Bug Report template
- Include platform and version information
- Provide steps to reproduce
- Include relevant logs
- Use the Feature Request template
- Explain the use case
- Describe your proposed solution
- Consider alternatives
This repository (StreamTV-source) accepts macOS contributions only. Linux port work belongs in the separate StreamTV-linux repository. See macOS tree protection and Linux repo workflow.
- Install git hooks (required):
bash scripts/install_git_hooks.sh
- Fork or branch from
main - Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes — do not modify
streamtv/,StreamTVMac/, orpackaging/macos/unless you are an owner with bedrock approval - Commit (
git commit -m 'Add amazing feature') — pre-commit enforces forbidden paths - Push and open a Pull Request against StreamTV-source
- Python 3.8 or higher
- FFmpeg
- Git
-
Clone your fork:
git clone https://github.com/your-username/StreamTV.git cd StreamTV -
Create a virtual environment:
python3 -m venv venv
-
Install dependencies:
pip install -r requirements.txt
-
Copy example config:
cp config.example.yaml config.yaml
-
Run the server:
python3 -m streamtv.main
See the Expert Guide for detailed development setup.
- Follow PEP 8 for Python code
- Use type hints where appropriate
- Add docstrings to functions and classes
- Keep functions focused and small
- Maximum line length: 100 characters
- Use shellcheck for validation
- Follow POSIX compliance where possible
- Add comments for complex logic
- Use Markdown for documentation
- Follow existing documentation style
- Update relevant docs when adding features
- Test on your target platform
- Test install scripts if modified
- Ensure existing functionality still works
- Check for linting errors
- Code runs without errors
- Install scripts work correctly
- Documentation is updated
- No breaking changes (or documented if intentional)
- Adding new features
- Changing API endpoints
- Modifying installation process
- Adding new scripts or tools
- Main docs:
docs/directory - Wiki: GitHub Wiki (use
create-wiki.shto update) - README: Update if adding major features
- API docs: Update
docs/API.mdfor API changes
- Update Documentation: Ensure all documentation is up to date
- Update CHANGELOG: Add entry for your changes
- Test Thoroughly: Test on multiple platforms if possible
- Follow Template: Use the PR template provided
- Be Responsive: Respond to review comments promptly
- Code follows style guidelines
- Self-review completed
- Comments added for complex code
- Documentation updated
- CHANGELOG.md updated
- Tests pass
- No new warnings
If updating distribution files:
- Test install scripts on target platform
- Update platform-specific documentation
- Verify all files are included in commit
- Test the distribution package
Assemble platform packages from the canonical tree:
python3 scripts/build_distributions.py macos linuxOverlays live under packaging/macos/ and packaging/linux/. Windows and container targets were removed; community ports are welcome under MIT.
Feel free to:
- Open an issue with the Question template
- Ask in discussions (if enabled)
- Review existing documentation
- Be respectful and inclusive
- Welcome newcomers
- Focus on constructive feedback
- Help others learn
Thank you for contributing to StreamTV! 🎉