Getting Started
Before you begin:- Set up your development environment - Follow the setup guide
- Understand the architecture - Review the architecture overview
- Build the project - Ensure you can build successfully
- Run the tests - Familiarize yourself with the testing approach
Ways to Contribute
There are many ways to contribute to Kafka:Report Bugs
Found a bug? Report it on GitHub Issues with details and reproduction steps
Suggest Features
Have an idea? Open a feature request to discuss it with the community
Improve Documentation
Help others by improving or adding documentation
Write Code
Fix bugs, add features, or improve existing functionality
Write Tests
Increase test coverage for better code quality
Review PRs
Help review pull requests from other contributors
Code Contribution Process
Find or Create an Issue
Before writing code:
- Check if an issue exists for what you want to work on
- If not, create a new issue describing the bug or feature
- Comment on the issue to let others know you’re working on it
- Wait for feedback from maintainers if it’s a significant change
Fork and Clone
- Fork the Kafka repository on GitHub
- Clone your fork locally:
- Add the upstream repository:
- Clone Sarahang dependency:
Create a Branch
Create a new branch for your work:Use descriptive branch names:
feature/add-bookmark-syncfix/audio-playback-crashdocs/update-setup-guidetest/add-search-tests
Make Your Changes
Write your code following the project conventions:
- Follow the existing code style
- Use meaningful variable and function names
- Add comments for complex logic
- Keep commits focused and atomic
- Write/update tests for your changes
Commit Your Changes
Write clear, descriptive commit messages:
Reference the issue number in your commit message using
Fixes #123 or Closes #123.Push and Create Pull Request
- Push your branch to your fork:
- Go to GitHub and create a Pull Request
- Fill out the PR template with:
- Description of changes
- Issue number (Fixes #123)
- Screenshots/videos (for UI changes)
- Testing done
Coding Standards
Kotlin Style Guide
Kafka follows the official Kotlin coding conventions.Naming Conventions
Naming Conventions
File Organization
File Organization
Composable Functions
Composable Functions
Coroutines and Flow
Coroutines and Flow
Code Formatting
Kafka uses Spotless with ktlint for automatic code formatting:- 4 spaces for indentation (no tabs)
- Trailing whitespace removed
- Files end with newline
- Maximum line length: 120 characters (recommended)
Architecture Guidelines
Kafka follows MVVM architecture with clean architecture principles:Refer to the Architecture Overview for detailed information about the project structure.
Dependency Injection
Kafka uses kotlin-inject for dependency injection:Pull Request Guidelines
PR Description Template
PR Best Practices
Keep PRs Focused
Keep PRs Focused
- One PR should address one issue or feature
- Avoid mixing unrelated changes
- Split large changes into multiple PRs
Write Clear Descriptions
Write Clear Descriptions
- Explain what and why, not just how
- Reference related issues
- Include screenshots for UI changes
- Describe testing performed
Keep It Small
Keep It Small
- Aim for < 400 lines changed when possible
- Easier to review and less likely to have bugs
- Faster to merge
Update Documentation
Update Documentation
- Update README if needed
- Add/update code comments
- Update API documentation
Reporting Issues
Bug Reports
When reporting bugs, include:Feature Requests
When requesting features, include:Code Review Process
For Contributors
- Be patient - maintainers review PRs in their spare time
- Respond to feedback constructively
- Don’t take criticism personally
- Ask questions if feedback is unclear
For Reviewers
- Be respectful and constructive
- Explain the reasoning behind suggestions
- Approve PRs that improve the codebase
- Request changes for issues that need fixing
Community Guidelines
- Be respectful - Treat everyone with respect and kindness
- Be collaborative - Work together to improve the project
- Be patient - Understand that contributors have different skill levels
- Be constructive - Provide helpful feedback and suggestions
- Give credit - Acknowledge the work of others
Recognition
All contributors will be:- Listed in the GitHub contributors page
- Mentioned in release notes (for significant contributions)
- Part of the Kafka community
Getting Help
If you need help:- Check the documentation - Most questions are answered here
- Search existing issues - Your question might already be answered
- Ask in discussions - Use GitHub Discussions for questions
- Create an issue - If you found a bug or have a specific question
License
By contributing to Kafka, you agree that your contributions will be licensed under the same license as the project.Resources
GitHub Repository
View the source code
Issue Tracker
Report bugs and request features
Architecture Guide
Understand the codebase structure
Kotlin Docs
Learn Kotlin programming