Skip to content

Replace roadmap-data.json with GitHub issue voting system #65

@devill

Description

@devill

Problem

Currently, we maintain feature voting in roadmap-data.json which creates duplication and synchronization issues:

  1. Duplicate tracking: Both roadmap-data.json and GitHub issues track the same features
  2. Sync challenges: Votes in JSON don't reflect GitHub issue priorities or discussions
  3. Limited collaboration: JSON voting is isolated from GitHub's collaborative features
  4. Maintenance overhead: Two systems need to be kept in sync manually

Current State Analysis

The roadmap-data.json contains 23 features with vote scores, but many already have corresponding GitHub issues:

Proposed Solution

Replace the JSON-based voting system with GitHub-native features:

1. GitHub Reactions for Voting

Use GitHub's reaction system for lightweight voting:

  • 👍 = Vote for this feature
  • ❤️ = High priority/critical need
  • 🚀 = Want to implement this
  • 👎 = Not needed/low priority

2. Issue Sorting by Engagement

Create tooling to list issues by engagement metrics:

# List issues by vote count (reactions)
refakts roadmap:list --sort-by votes

# List issues by recent activity  
refakts roadmap:list --sort-by activity

# List issues by implementation readiness
refakts roadmap:list --sort-by ready

3. Migration Strategy

  1. Create GitHub issues for roadmap features that don't have them yet
  2. Link existing votes by adding reactions equivalent to JSON scores
  3. Update roadmap commands to read from GitHub API instead of JSON
  4. Archive roadmap-data.json once migration is complete

Implementation Approach

Enhanced Roadmap Commands

// New GitHub-based roadmap system
class GitHubRoadmapService {
  async listFeaturesByVotes(): Promise<FeatureIssue[]> {
    // Fetch issues with 'enhancement' label
    // Sort by reaction count (👍 + ❤️ + 🚀)
    // Include issue metadata and discussion activity
  }
  
  async voteForFeature(issueNumber: number, voteType: ReactionType): Promise<void> {
    // Add reaction to GitHub issue
    // Update local cache if needed
  }
}

New Command Interface

# List features by vote count
refakts roadmap:status --sort votes

# Vote for a feature
refakts roadmap:vote 42  # Adds 👍 reaction to issue #42

# View feature details with voting history
refakts roadmap:view 42  # Shows issue details + reaction summary

Benefits

Better Integration

  • Native GitHub features: Reactions, comments, labels, milestones
  • Unified discussion: Feature voting happens alongside technical discussion
  • Better visibility: GitHub notifications and activity feeds
  • Searchable: GitHub's powerful search and filtering

Improved Collaboration

  • Public voting: Community can participate in feature prioritization
  • Context-rich: Votes can include comments explaining why
  • Implementation tracking: Issues can track progress from idea to completion
  • Cross-referencing: Easy linking between related features and bugs

Simplified Maintenance

  • Single source of truth: GitHub issues only
  • Automatic sync: No manual JSON updates needed
  • Rich metadata: Labels, assignees, milestones, project boards
  • API access: Programmatic access via GitHub API

Migration Plan

Phase 1: Create Missing Issues

Create GitHub issues for roadmap features that don't have them:

  • extract-delegate-class (score: 0)
  • extract-field (score: 0)
  • extract-type-alias (score: 1)
  • extract-interface (score: 1)
  • extract-superclass (score: 0)
  • And others without githubIssue field

Phase 2: Transfer Votes

Convert JSON scores to GitHub reactions:

  • Score 9 (extract-method) → Multiple 👍 + ❤️ reactions
  • Score 6 (find-usages) → Multiple 👍 reactions (but mark as ✅ implemented)
  • Score 4 (auto-import-organizer) → Several 👍 reactions
  • etc.

Phase 3: Update Tooling

  • Modify roadmap:status to read from GitHub API
  • Update roadmap:vote to add GitHub reactions
  • Add new sorting and filtering options
  • Update documentation and help text

Phase 4: Archive JSON

  • Remove roadmap-data.json
  • Update post-commit hooks if they reference it
  • Clean up related scripts and utilities

Acceptance Criteria

  • GitHub issues exist for all roadmap features
  • Vote counts are preserved as GitHub reactions
  • refakts roadmap:status displays GitHub-based data
  • refakts roadmap:vote <issue-number> adds reactions
  • Issues can be sorted by vote count, activity, readiness
  • Migration script to transfer existing votes
  • Documentation updated to reflect new workflow
  • roadmap-data.json removed after successful migration

Priority

Medium - Improves feature tracking and eliminates duplication, but doesn't block current development workflows.

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    DiscussionIssues where community input is encouraged to help refine the ideaHouse KeepingTasks for development flow and codebase organization

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions