Thank you for your interest in contributing to the Zstandard Flutter plugin and CLI. This document outlines how to set up your environment, follow our standards, and submit changes.
Be respectful and professional. We aim to maintain a welcoming environment for everyone.
- Fork and clone the repository.
- Set up your development environment — see Setup.
- Create a branch for your work:
git checkout -b feature/your-featureorfix/your-fix. - Make your changes following our Code Style and Testing guidelines.
- Run tests for the packages you changed: see Testing.
- Commit with clear messages (e.g. "Add compression level validation in platform interface").
- Push and open a Pull Request against the default branch.
- Bug fixes: Ensure there is an issue or discussion, then submit a fix with tests if applicable.
- New features: Open an issue first to discuss the design and scope. For new platform support, see the architecture docs.
- Documentation: Fixes and improvements to docs in
docs/and to dartdoc comments are always welcome. - Tests: Adding or fixing tests is highly valued; see Testing.
- Target branch: Open PRs against the repository’s default branch (e.g.
masterormain). - CI: Ensure all relevant CI checks pass (lint, tests, build).
- Review: Address review feedback from maintainers.
- Scope: Keep PRs focused. Split large changes into smaller, reviewable PRs when possible.
- Changelog: For user-facing changes, add an entry to
CHANGELOG.mdunder "Unreleased" or the next version.
- Building: See Building for how to build the plugin and native code per platform.
- Testing: See Testing for unit and integration test instructions.
- Releases: See Release Process for how versions are published.
- zstandard — Main Flutter plugin; applications depend only on this.
- zstandard_platform_interface — Abstract platform contract.
- zstandard_android, zstandard_ios, zstandard_macos, zstandard_linux, zstandard_windows, zstandard_web — Platform implementations.
- zstandard_cli — Standalone Dart CLI package (no Flutter).
When changing the platform interface, ensure all platform implementations are updated and tests pass.
- Open a GitHub Issue for bugs or feature requests.
- Use GitHub Discussions for questions and ideas.
Thank you for contributing.