AILint/CONTRIBUTING.md
evosoft-ie 1106eabcd7
Create CONTRIBUTING.md for project guidelines
Added a comprehensive CONTRIBUTING.md file to guide contributors on how to participate in the AILint project, including setup instructions, contribution guidelines, and development standards.
2025-12-28 10:35:36 +00:00

482 lines
13 KiB
Markdown

# Contributing to AILint
Thanks for your interest in building the infrastructure for AI-transparent development! This guide will help you contribute effectively.
## Quick Start
```bash
# Fork and clone
git clone https://github.com/evosoftie/AILint
cd AILint
# Install dependencies
npm install # for VS Code extension
pip install -r requirements.txt # for analysis engine
# Run tests
npm test
pytest
# Create a branch
git checkout -b feature/your-feature-name
```
## Ways to Contribute
### 🔍 Detection Algorithms
Help improve our ability to identify AI-generated code patterns.
**What we need:**
- New heuristics for specific AI tools (Copilot, Claude, ChatGPT, etc.)
- Language-specific patterns (Python, C#, JavaScript, etc.)
- Adversarial testing (how to evade detection, so we can defend against it)
**How to contribute:**
1. Document the pattern you've observed
2. Implement detection logic in `/detection-engine/heuristics/`
3. Provide test cases (both true positives and false positives)
4. Measure precision/recall on test dataset
**Example:**
```python
# detection-engine/heuristics/copilot_comment_style.py
def detect_copilot_comment_pattern(code: str) -> float:
"""
Copilot tends to generate comments with specific patterns:
- Over-documentation of obvious code
- Consistent triple-slash /// style in C#
- "Helper function to..." phrasing
Returns: confidence score 0.0-1.0
"""
score = 0.0
# Check for over-documentation
if comment_to_code_ratio(code) > 0.4:
score += 0.3
# Check for characteristic phrases
if re.search(r'Helper function to|Utility method for', code):
score += 0.2
# ... more checks
return min(score, 1.0)
```
### 🔧 IDE Integration
Expand support beyond VS Code.
**Platforms we need:**
- Visual Studio (priority - Microsoft stack focus)
- JetBrains IDEs (IntelliJ, PyCharm, Rider)
- Vim/Neovim plugins
- Emacs integration
**Requirements:**
- Hook into editor events (typing, paste, file save)
- Local processing only (no code sent to servers)
- Non-blocking (can't slow down development)
- Configurable (let teams set their own thresholds)
### 📊 Visualization & Reporting
Make provenance data actionable.
**What we need:**
- Dashboard showing AI influence trends over time
- Heatmaps of codebase by AI likelihood
- Compliance report templates (SOC2, ISO 27001)
- Integration with code review tools
### 📐 Standards & Formats
Help define the metadata standards.
**Open questions:**
- What metadata format for Git notes/attributes?
- How to encode markers in different file types?
- Interoperability with other provenance tools?
- API design for external integrations?
### 📚 Documentation
Clear docs are critical for adoption.
**Needed:**
- Setup guides for different environments
- Calibration guides (tuning false positive rates)
- Architecture decision records (ADRs)
- Case studies from early adopters
## Development Guidelines
### Code Style
**Python:**
- Follow PEP 8
- Type hints required
- Docstrings for all public functions
- Black formatter (run `black .`)
**TypeScript/JavaScript:**
- ESLint + Prettier
- Strict mode enabled
- JSDoc comments for public APIs
**C#:**
- Follow Microsoft coding conventions
- XML documentation comments
- StyleCop analyzer enabled
### Privacy Requirements
**Every PR must consider:**
1. **What data moves off-machine?** (Answer should be: nothing, or only anonymized metadata)
2. **Could this be used for surveillance?** (Design to prevent misuse)
3. **Can users opt out?** (For personal projects, yes)
4. **Is data retention clear?** (Document what's stored where)
If your change violates any of these, it won't be merged.
### Testing Standards
**Required tests:**
- Unit tests for all detection logic
- Integration tests for IDE plugins
- Performance tests (can't slow commits by >100ms)
- Adversarial tests (evasion resistance)
**Test data requirements:**
- Known human code (pre-2020 commits)
- Known AI code (synthetic from various models)
- Realistic hybrid code (human + AI)
**Coverage:**
- Core detection: >90%
- IDE integrations: >70%
- Utilities: >80%
### Commit Guidelines
**Format:**
```
type(scope): brief description
Longer explanation of what and why, not how.
Reference issues: Fixes #123
AI-Assistance: [None | Copilot-autocomplete | Claude-refactor | etc.]
```
**Types:**
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation only
- `perf`: Performance improvement
- `test`: Adding tests
- `refactor`: Code change that neither fixes nor adds features
**AI-Assistance tag:**
We practice what we preach! Declare AI help in your commits:
- `None` - written entirely by you
- `Copilot-autocomplete` - used autocomplete suggestions
- `Claude-refactor` - AI helped restructure code
- `ChatGPT-debug` - AI helped find/fix bugs
- `Mixed` - combination of the above
This helps us dogfood our own tools and provides real-world test data.
## Architecture Overview
```
AILint/
├── detection-engine/ # Core analysis logic
│ ├── heuristics/ # Individual detection methods
│ ├── models/ # ML models (future)
│ ├── analysis.py # Orchestration
│ └── confidence.py # Scoring system
├── markers/ # Embedded marker implementation
│ ├── unicode_steg.py # Zero-width character encoding
│ ├── comment_inject.py # Comment-based markers
│ └── metadata_format.py # Standard format definition
├── integrations/ # IDE/platform plugins
│ ├── vscode/ # VS Code extension
│ ├── visualstudio/ # Visual Studio extension
│ ├── git-hooks/ # Pre-commit hooks
│ ├── azure-devops/ # Azure DevOps plugin
│ └── github-action/ # GitHub Action
├── reporting/ # Dashboard & analytics
│ ├── dashboard/ # Web UI
│ ├── cli/ # Command-line reports
│ └── templates/ # Compliance templates
├── tests/ # Test suite
│ ├── fixtures/ # Test data
│ ├── unit/
│ ├── integration/
│ └── adversarial/
└── docs/ # Documentation
├── architecture/ # ADRs and design docs
├── guides/ # User guides
└── api/ # API documentation
```
## Review Process
1. **Automated checks** (must pass):
- Tests pass
- Linting clean
- Coverage maintained
- Performance benchmarks acceptable
2. **Human review** (two approvals required):
- Code quality
- Privacy implications
- Documentation complete
- Tests adequate
3. **Maintainer review**:
- Architectural fit
- Standards alignment
- Roadmap coherence
## Detection Heuristics - How to Add
This is the most common contribution, so here's the detailed process:
### 1. Document the Pattern
Create `/docs/heuristics/YOUR_HEURISTIC.md`:
```markdown
# Heuristic: [Name]
## Pattern Description
What AI behavior are we detecting?
## Why It Works
Why does AI generate this pattern?
## False Positive Risk
What legitimate human code looks similar?
## Evasion Resistance
How easy is it to deliberately avoid this pattern?
## Test Cases
Link to test data demonstrating pattern.
```
### 2. Implement Detection
In `/detection-engine/heuristics/your_heuristic.py`:
```python
from detection_engine.base import Heuristic
class YourHeuristic(Heuristic):
"""
Brief description.
False positive rate: ~X% (based on testing)
Evasion difficulty: [Low|Medium|High]
"""
def analyze(self, code: str, metadata: dict) -> float:
"""
Analyze code and return confidence score.
Args:
code: Source code to analyze
metadata: Context (language, file type, etc.)
Returns:
Confidence score 0.0-1.0
"""
# Your logic here
pass
def explain(self, code: str) -> str:
"""
Explain why this scored high.
Returns human-readable explanation for debugging.
"""
pass
```
### 3. Add Tests
In `/tests/heuristics/test_your_heuristic.py`:
```python
import pytest
from detection_engine.heuristics.your_heuristic import YourHeuristic
class TestYourHeuristic:
def test_detects_ai_pattern(self):
"""Should score high on known AI code."""
heuristic = YourHeuristic()
code = load_fixture('ai_generated/example1.py')
score = heuristic.analyze(code, {'language': 'python'})
assert score > 0.7
def test_human_code_low_score(self):
"""Should score low on human code."""
heuristic = YourHeuristic()
code = load_fixture('human_written/example1.py')
score = heuristic.analyze(code, {'language': 'python'})
assert score < 0.3
def test_edge_cases(self):
"""Handle edge cases gracefully."""
heuristic = YourHeuristic()
# Empty file
assert heuristic.analyze('', {}) == 0.0
# Minified code
# Obfuscated code
# etc.
```
### 4. Benchmark Performance
```bash
python -m detection_engine.benchmark your_heuristic
# Should complete in <10ms for typical files
# Should handle files up to 10k lines
```
### 5. Submit PR
Title: `feat(heuristic): Add [pattern name] detection`
Include in description:
- What pattern this detects
- Measured false positive rate
- Test coverage
- Performance benchmarks
## Community
### Communication Channels
- **GitHub Issues**: Bug reports, feature requests
- **GitHub Discussions**: Questions, ideas, showcase
- **Discord** (coming soon): Real-time chat
- **Monthly calls** (coming soon): Community sync
### Code of Conduct
We're building infrastructure for transparency and trust. Our community must model these values:
- **Assume good faith**: People may disagree on approaches
- **Be respectful**: Attack ideas, not people
- **Privacy matters**: Never share others' code without permission
- **Collaborate openly**: Solutions over credit
Full Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
### Recognition
Contributors are recognized in:
- README.md credits
- Release notes
- Annual report (coming 2025)
Significant contributions may earn:
- Commit access
- Maintainer role
- Representation at conferences
## Legal
### Licensing
- All code: MIT License
- All documentation: CC BY 4.0
By submitting a PR, you agree to license your contribution under these terms.
### Patents
You confirm you have the right to contribute the code and are not violating any patents or other IP rights.
### Privacy of Test Data
If contributing test data:
- Must be your own code, or
- Must have explicit permission, or
- Must be public domain / open source
Never contribute proprietary code as test fixtures.
## Getting Help
**Stuck?** Here's how to get unblocked:
1. **Check docs**: `/docs` folder and GitHub wiki
2. **Search issues**: Someone may have asked already
3. **Ask in Discussions**: For design questions
4. **Open an issue**: For bugs or feature requests
5. **Tag maintainers**: If urgent (but respect their time)
**Mentorship**: New to open source or AI detection? Open an issue labeled `good-first-issue` or `mentorship-wanted` and we'll help you get started.
## Roadmap Input
We maintain the roadmap in [ROADMAP.md](ROADMAP.md).
Want to influence priorities? Open an issue labeled `roadmap-input` explaining:
- What capability you need
- Why it matters
- Rough implementation approach
Community needs shape what we build.
---
## Thank You
Every contribution - code, docs, testing, ideas - moves us closer to an AI-transparent future.
You're not just building a tool. You're laying the pipes while we build the motorways.
**Let's build the Bronze Age together.**
---
*Questions about contributing? Open an issue labeled `contributing-question` and we'll update this doc.*
```
---
# VS Code Extension Architecture
Now the technical design for the first implementation:
## Extension Structure
```
vscode-extension/
├── src/
│ ├── extension.ts # Entry point
│ ├── monitors/
│ │ ├── typingMonitor.ts # Track typing patterns
│ │ ├── pasteMonitor.ts # Detect paste events
│ │ └── fileMonitor.ts # Watch file changes
│ ├── analysis/
│ │ ├── analyzer.ts # Orchestrate detection
│ │ ├── localEngine.ts # Interface to detection engine
│ │ └── cache.ts # Performance optimization
│ ├── git/
│ │ ├── gitIntegration.ts # Git commands
│ │ ├── metadata.ts # Format metadata
│ │ └── hooks.ts # Pre-commit integration
│ ├── ui/
│ │ ├── statusBar.ts # Show AI likelihood in status
│ │ ├── decorations.ts # Highlight suspicious code
│ │ ├── webview.ts # Dashboard panel
│ │ └── notifications.ts # User feedback
│ └── config/
│ └── settings.ts # User preferences
├── detection-engine/ # Python analysis (bundled)
│ └── [Core detection logic]
├── package.json
├── tsconfig.json
└── README.md