Skip to content

Contribution Guidelines

James Maes edited this page Dec 28, 2025 · 6 revisions

Contribution Guidelines

QQQ welcomes contributions from the community! This guide covers the complete process for contributing code, documentation, and improvements to the QQQ framework.

Quick Links

Contribution Types

QQQ accepts various types of contributions:

  • Code Contributions: New features, bug fixes, improvements
  • Documentation: Wiki updates, code comments, examples
  • Bug Reports: Issues and problems you've encountered
  • Feature Requests: Ideas for new capabilities
  • Testing: Test improvements and coverage enhancements

Getting Started

Prerequisites

Before contributing, ensure you have:

First Steps

  1. Fork the Repository: Create your own fork of the QQQ project
  2. Clone Locally: Set up your development environment
  3. Choose an Issue: Pick something from the issue tracker or create your own
  4. Follow the Workflow: Use the contribution process outlined below

Contribution Workflow

1. Issue Creation

Start by creating or finding an issue:

Issue Types:

  • Bug Report: Something isn't working as expected
  • Feature Request: New capability you'd like to see
  • Documentation: Missing or unclear documentation
  • Enhancement: Improvement to existing functionality

Good Issue Template:

## Summary
Brief description of the issue or feature request

## Current Behavior
What currently happens (for bugs) or what's missing (for features)

## Expected Behavior
What should happen or what you'd like to see

## Steps to Reproduce
For bugs: numbered steps to reproduce the issue
For features: use case or scenario

## Environment
- QQQ Version: [e.g., 0.26.1-SNAPSHOT]
- Java Version: [e.g., 17]
- OS: [e.g., macOS 14.0]

## Additional Context
Any other information that might be helpful

2. Development Setup

Follow the complete setup process:

# Clone your fork
git clone git@github.com:YOUR_USERNAME/qqq.git
cd qqq

# Add upstream remote
git remote add upstream git@github.com:QRun-IO/qqq.git

# Install QQQ development tools
./qqq-dev-tools/install.sh

# Set up development environment
setup-environments.sh --qqq

# Verify setup
mvn clean install

3. Branch Creation

Create a feature branch following QQQ's GitFlow:

# Start from develop branch
git checkout develop
git pull upstream develop

# Create feature branch
git checkout -b feature/your-feature-name

# Or for bug fixes
git checkout -b fix/issue-description

4. Development Process

Follow QQQ's development standards:

# Make your changes
# Follow QQQ code style and patterns
# Write tests for new functionality
# Update documentation as needed

# Check code quality
mvn checkstyle:check
mvn test

# Verify full build
mvn clean install

5. Testing Requirements

Ensure your changes meet QQQ's quality standards:

# Run tests with coverage
mvn test jacoco:report

# Verify coverage thresholds
mvn verify

# Run integration tests
mvn test -pl qqq-sample-project

6. Pre-Submission Checklist

Before submitting your PR:

  • Code follows QQQ style (Checkstyle passes)
  • Tests pass (All tests green)
  • Coverage maintained (80% instruction, 95% class)
  • Documentation updated (Code comments, wiki if needed)
  • No breaking changes (Unless intentional and documented)
  • Commit messages follow conventions (See below)

7. Pull Request Submission

Submit your contribution:

# Commit your changes
git add .
git commit -m "feat(core): add new streaming action capability

- Implements StreamingAction for data stream processing
- Adds QStreamingMetaData for configuration
- Includes comprehensive test coverage
- Updates documentation with usage examples"

# Push to your fork
git push origin feature/your-feature-name

# Create PR to develop branch
# Include:
# - Clear description of changes
# - Link to related issues
# - Screenshots for UI changes
# - Test results and coverage

Code Review Process

Review Requirements

All contributions require review:

  • At least one approval from QQQ team members
  • All CI checks pass (build, tests, coverage, style)
  • No merge conflicts with target branch
  • Follows QQQ patterns and standards

Review Feedback

Be responsive to review comments:

  • Address feedback promptly and thoroughly
  • Ask questions if feedback isn't clear
  • Update PR based on review suggestions
  • Resolve all comments before merge

Review Timeline

  • Initial review: Within 2-3 business days
  • Follow-up reviews: Within 1-2 business days
  • Merge: After approval and all checks pass

Issue Management

Bug Reports

When reporting bugs:

  • Be specific about what's not working
  • Include steps to reproduce the issue
  • Provide environment details (QQQ version, Java version, OS)
  • Attach logs or error messages if available
  • Check existing issues to avoid duplicates

Feature Requests

When requesting features:

  • Explain the use case and why it's needed
  • Describe the desired behavior clearly
  • Consider alternatives and trade-offs
  • Provide examples of how it would work
  • Discuss impact on existing functionality

Documentation Contributions

Wiki Updates

Improving QQQ documentation:

  • Follow existing style and structure
  • Use clear, concise language
  • Include practical examples
  • Link to related content
  • Update outdated information

Code Comments

Improving code documentation:

  • Follow QQQ comment standards (see Code Review Standards)
  • Explain complex logic and business rules
  • Document public APIs with Javadoc
  • Keep comments current with code changes

Community Guidelines

Communication

  • Be respectful and constructive
  • Ask questions when you need help
  • Share knowledge and help others
  • Follow QQQ's code of conduct

Collaboration

  • Work together on complex features
  • Share progress and challenges
  • Help review other contributions
  • Mentor new contributors

Release Process

Contribution Integration

Your contributions become part of QQQ:

  • Feature branches merge to develop
  • Release branches merge to main
  • Version bumps follow semantic versioning
  • Release notes credit contributors

Recognition

Contributors are recognized:

  • GitHub contributors list
  • Release notes acknowledgments
  • Community recognition for significant contributions
  • Potential team membership for active contributors

Getting Involved

Ways to Contribute

  • Start small: Fix typos, improve documentation
  • Report issues: Help identify problems
  • Suggest improvements: Share ideas and feedback
  • Code contributions: Implement features and fixes
  • Community support: Help other contributors

Getting Help

  • Ask questions in issues or discussions
  • Review existing code to understand patterns
  • Study documentation and examples
  • Join community discussions and meetings

Troubleshooting

Common Issues

  • Build failures: Check Java version, Maven version, dependencies
  • Test failures: Review test output, check environment setup
  • Style violations: Run Checkstyle locally, fix formatting issues
  • Coverage failures: Add tests for uncovered code paths

Getting Unstuck

  • Search existing issues for similar problems
  • Check documentation and examples
  • Ask for help in issues or discussions
  • Start with simple changes to build confidence

See Also

Clone this wiki locally