Skip to content

Contributing

Home > Contributing

Thank you for your interest in contributing to AppImage Updater! This guide will help you get started.

Development Setup

For detailed development setup instructions, see the Development Guide.

Code Standards

Code Quality

  • Python 3.11+ with modern type hints
  • Full type checking with mypy in strict mode
  • Code formatting with ruff (88 character line length)
  • Cyclomatic complexity kept under 10
  • High test coverage (aim for >90%)

Architecture Principles

  • Async-first design - All I/O operations use asyncio
  • Type safety - Full type annotations with Pydantic models
  • Error handling - Structured exceptions with user-friendly messages
  • Separation of concerns - Clear boundaries between layers
  • Modular design - Dedicated modules for specific functionality areas
  • Single responsibility - Each module has a focused, well-defined purpose

Testing

AppImage Updater has a comprehensive testing suite with multiple testing commands:

Basic Testing

# Run all tests (sequential)
task test

# Run tests with parallel execution (faster)
task test:parallel

# Run tests with 8 cores (balanced speed/reliability)
task test:parallel-fast

Specialized Testing

# End-to-end tests (validate core functionality)
task test:e2e

# End-to-end tests with coverage reporting
task test:e2e-coverage

# Quick smoke test (basic functionality validation)
task test:smoke

# Pattern matching functionality tests
task test:pattern-matching

# Regression tests (validate fixed issues)
task test:regression

# Run all tests including e2e
task test:all

Quality Assurance

# Run all code quality checks (includes tests)
task check

# Run all checks with parallel tests (faster)
task check:parallel

# Complete CI pipeline (all checks + build + docs)
task ci

Test Types

  • Unit tests - Test individual components in isolation
  • Integration tests - Test component interactions
  • End-to-end tests - Test complete workflows with real GitHub API
  • Regression tests - Ensure previously fixed bugs stay fixed
  • Pattern matching tests - Validate regex patterns and file matching
  • Smoke tests - Quick validation of basic functionality

Contributing Process

1. Fork and Branch

# Fork the repository on GitHub
# Clone your fork
git clone https://github.com/YOUR-USERNAME/appimage-updater.git
cd appimage-updater

# Create a feature branch
git checkout -b feature/my-new-feature

2. Make Changes

  • Write code following the established patterns
  • Add tests for new functionality
  • Update documentation as needed
  • Ensure all tests pass

3. Quality Checks

# Run all quality checks
task ci

# This runs:
# - Automatic fixing (ruff check --fix)
# - Code formatting (ruff format)
# - Type checking (mypy)
# - Linting (ruff lint)
# - Complexity analysis (radon)
# - All tests with coverage

4. Commit and Push

# Commit with descriptive message
git add .
git commit -m "feat: add new feature description"

# Push to your fork
git push origin feature/my-new-feature

5. Create Pull Request

  • Open a PR against the main branch
  • Describe what your changes do
  • Reference any related issues
  • Ensure CI checks pass

For detailed development guidelines, code organization, and technical guidance, see the Development Guide.

Getting Help

  • Issues - Open GitHub issues for bugs and feature requests
  • Discussions - Use GitHub discussions for questions
  • Code Review - Request reviews on pull requests

Thank you for contributing to AppImage Updater!