Thank you for your interest in contributing to the official Java implementation of TOON!
This project uses Gradle for dependency management and build automation.
# Clone the repository
git clone https://github.com/toon-format/toon-java.git
cd toon-java
# Build the project
./gradlew build
# Run tests
./gradlew test
# Run tests with coverage report
./gradlew test jacocoTestReport
# View coverage report
open build/jacocoHtml/index.html- Fork the repository and create a feature branch
- Make your changes following the coding standards below
- Add tests for any new functionality
- Ensure all tests pass and coverage remains high
- Submit a pull request with a clear description
- Open a discussion topic about the new features explaining the advantages or the motivation for this new feature.
- After approval create an Issue linked to the discussion topic.
- Follow the development workflow to implement the new feature.
- Open an issue reporting the bug with detailed reproduction steps.
This project targets Java 17 and above.
- Follow standard Java coding conventions
- Use meaningful variable and method names
- Keep methods focused and concise
- Add JavaDoc comments for public APIs
- Format code consistently (use IDE auto-formatting)
- All new features must include JUnit tests
- Maintain test coverage at 85%+ line coverage
- Tests should cover edge cases and spec compliance
- Run the full test suite:
./gradlew test # Run with coverage verification ./gradlew jacocoTestCoverageVerification
Common Gradle tasks you'll use:
# Run all tests
./gradlew test
# Generate coverage report
./gradlew jacocoTestReport
# Verify coverage meets minimum thresholds
./gradlew jacocoTestCoverageVerification
# Build the project (includes tests and checks)
./gradlew build
# Clean build artifacts
./gradlew cleanAll implementations must comply with the TOON specification.
Before submitting changes that affect encoding/decoding behavior:
- Verify against the official SPEC.md
- Add tests for the specific spec sections you're implementing
- Document any spec version requirements
- Title: Use a clear, descriptive title
- Description: Explain what changes you made and why
- Tests: Include tests for your changes
- Documentation: Update README or documentation if needed
- Commits: Use clear commit messages (Conventional Commits preferred)
Your pull request will use our standard template which guides you through the required information.
- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and general discussion
- Pull Requests: For code reviews and implementation discussion
- Discord channel: For direct interaction with project members
This is a collaborative project. Current maintainers:
- Felipe Cesar Stanzani Fonseca – @felipestanzani
- Jens Papenhagen – @jenspapenhagen
- Aaro Koinsaari – @koinsaari
- Johann Schopplich – @johannschopplich
All maintainers have equal and consensual decision-making power. For major architectural decisions, please open a discussion issue first.
By contributing, you agree that your contributions will be licensed under the MIT License.