crkl/CONTRIBUTING.md
ilia c351858749 Update project configuration files and enhance documentation
- 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.
2025-10-18 14:32:33 -04:00

202 lines
5.4 KiB
Markdown

# 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
1. **Clone the repository:**
```bash
git clone https://github.com/yourusername/crkl.git
cd crkl
```
2. **Open in Android Studio:**
- Open Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned directory
3. **Review project documentation:**
- Read `README.md` for project overview
- Review `ARCHITECTURE.md` for technical details
- Check `.notes/` directory for current project context
- Review `CURSOR_SUPPORT.md` if using Cursor editor
4. **Build the project:**
```bash
./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 branch
- `develop` - integration branch for features
- `feature/*` - feature development branches
- `bugfix/*` - bug fix branches
- `hotfix/*` - urgent production fixes
### 3. Making Changes
1. **Create a feature branch:**
```bash
git checkout -b feature/your-feature-name
```
2. **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
3. **Write tests:**
- Add unit tests for new functionality
- Ensure existing tests pass
- Aim for good test coverage
4. **Document your changes:**
- Update relevant documentation in `.notes/`
- Add code comments for complex logic
- Reference ticket IDs in TODOs
- Update `ARCHITECTURE.md` for architectural changes
### 4. Submitting Changes
1. **Commit your changes:**
```bash
git add .
git commit -m "Brief description of changes (refs #issue-number)"
```
2. **Push to your fork:**
```bash
git push origin feature/your-feature-name
```
3. **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](https://kotlinlang.org/docs/coding-conventions.html)
- 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
1. **Automated Checks:**
- Code builds successfully
- Tests pass
- Linting passes
- No new warnings
2. **Code Review:**
- At least one maintainer approval required
- Address review feedback
- Maintain respectful communication
3. **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!