- Updated `.gitignore` and `.cursorignore` to exclude additional build artifacts and temporary files. - Enhanced `.cursorrules` with comprehensive AI guidelines and best practices. - Improved `.notes/directory_structure.md` to reflect the current project structure and module organization. - Updated `ARCHITECTURE.md` to include new insights on the system's modular design and privacy-first approach. - Refined `README.md` for clarity on project setup and usage instructions. - Added new entries in `.notes/meeting_notes.md` to document recent progress and decisions. - Ensured all changes align with the project's privacy and security standards.
5.4 KiB
5.4 KiB
Contribution Guide
Thank you for your interest in contributing to Crkl! This document provides guidelines and information for contributors.
Getting Started
Prerequisites
- Android Studio (latest stable version)
- JDK 11 or higher
- Git
- Basic knowledge of Kotlin and Android development
- Familiarity with Jetpack Compose
Development Setup
-
Clone the repository:
git clone https://github.com/yourusername/crkl.git cd crkl -
Open in Android Studio:
- Open Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned directory
-
Review project documentation:
- Read
README.mdfor project overview - Review
ARCHITECTURE.mdfor technical details - Check
.notes/directory for current project context - Review
CURSOR_SUPPORT.mdif using Cursor editor
- Read
-
Build the project:
./gradlew build
Contribution Workflow
1. Issue Tracking
- Use OpenProject for issue/ticket tracking and milestone definitions
- Check existing issues before creating new ones
- Reference issue numbers in commits and pull requests
2. Branching Strategy
main- stable release branchdevelop- integration branch for featuresfeature/*- feature development branchesbugfix/*- bug fix brancheshotfix/*- urgent production fixes
3. Making Changes
-
Create a feature branch:
git checkout -b feature/your-feature-name -
Follow coding conventions:
- Use Kotlin for all Android code
- Follow Kotlin coding conventions
- Use Jetpack Compose for UI components
- Ensure all ML operations are asynchronous
- Never add network calls or cloud service dependencies
- Document module purpose in file headers
-
Write tests:
- Add unit tests for new functionality
- Ensure existing tests pass
- Aim for good test coverage
-
Document your changes:
- Update relevant documentation in
.notes/ - Add code comments for complex logic
- Reference ticket IDs in TODOs
- Update
ARCHITECTURE.mdfor architectural changes
- Update relevant documentation in
4. Submitting Changes
-
Commit your changes:
git add . git commit -m "Brief description of changes (refs #issue-number)" -
Push to your fork:
git push origin feature/your-feature-name -
Create a Pull Request:
- Provide clear description of changes
- Reference related issues
- Ensure CI checks pass
- Request review from maintainers
Code Style and Standards
Kotlin Style Guide
- Follow Kotlin Coding Conventions
- Use meaningful variable and function names
- Keep functions small and focused
- Prefer immutability where possible
Module Organization
Refer to .notes/directory_structure.md for module organization:
/src/accessibility/- Accessibility overlay and services/src/gesture/- Gesture tracking, region extraction/src/model/- STT/LLM wrappers, inference runners/src/vision/- Content classification and ML components/src/agent/- Dialogue state management/src/ui/- Jetpack Compose overlays and feedback UIs/src/privacy/- Data/cache handling, controls
Documentation Standards
- Document public APIs with KDoc comments
- Include usage examples for complex functions
- Update README and ARCHITECTURE docs for significant changes
- Keep
.notes/directory current for AI/contributor context
Testing Guidelines
- Write unit tests for business logic
- Write integration tests for module interactions
- Test on multiple Android versions and device types
- Test accessibility features thoroughly
- Document test coverage in
TESTING.md(to be created)
Privacy and Security Requirements
Critical: All contributions must adhere to privacy-first principles:
- ✅ DO: Use local-only processing
- ✅ DO: Keep all data on device
- ✅ DO: Use offline ML models
- ❌ DON'T: Add network calls for AI features
- ❌ DON'T: Send data to external services
- ❌ DON'T: Include cloud service dependencies
Review Process
-
Automated Checks:
- Code builds successfully
- Tests pass
- Linting passes
- No new warnings
-
Code Review:
- At least one maintainer approval required
- Address review feedback
- Maintain respectful communication
-
Merge:
- Squash commits if needed
- Ensure clean commit history
- Update changelog
Communication
- Issues: Use GitHub Issues or OpenProject for bug reports and feature requests
- Discussions: Use GitHub Discussions for questions and ideas
- Pull Requests: Use PR comments for code-specific discussions
Milestones and Roadmap
Milestone 1: Proof of Concept (POC)
- Accessibility overlay service with region selection
- Region processor for gesture-to-area conversion
- Integration of local speech-to-text
- Integration of open-source LLM module
- Basic Compose overlay UI
Milestone 2: Minimum Viable Product (MVP)
- POC modules integrated
- Persistent dialogue management
- Voice command routing
- Core session memory and privacy controls
- Initial bug triage and test coverage
Milestone 3: Full Feature Release
- Advanced content classification
- Plugin/module system
- Export/import settings
- Issue triage and contributor merge pass
Recognition
Contributors will be recognized in:
- CONTRIBUTORS.md file
- Release notes
- Project documentation
Thank you for contributing to Crkl!