pm_method
id: pm_method
Top 3 Simple Approaches to Manage Features with Feature Flags for Planning and Repository Integration
id: pm_method
1. Feature Flag Configuration Files
Description
- Maintain a centralized YAML, JSON, or TOML configuration file in your repository to define feature flags and their descriptions.
- Use this file for planning, documentation, and integration with your application.
Structure Example
- Create a file like
feature-flags.yamlin your repository:
features:
new_dashboard:
description: 'Enables the new user dashboard with enhanced analytics.'
status: 'planned' # statuses: planned, in-progress, released, deprecated
rollout: '50%' # optional: for percentage rollouts
owners: ['@team-lead', '@developer1']
daily_arcanum:
description: 'Introduces a daily Tarot card feature for user guidance.'
status: 'in-progress'
rollout: '100%'
owners: ['@designer']
tarot_school:
description: 'Adds an educational section for learning Tarot card meanings.'
status: 'planned'
rollout: '0%'
owners: ['@developer2']
Workflow
- Planning:
- Define feature details (e.g., description, status, rollout, owners) directly in the configuration file.
- Update statuses as the feature progresses through development stages.
- Integration:
- Application services (e.g., your
FeatureFlagsService) can load this file to manage flag states.
- Application services (e.g., your
- Documentation:
- Use the file as a source of truth for teams to understand current and planned features.
Pros
info
- Easy to implement and integrate into existing repositories.
- All features and their flags are version-controlled with your code.
- Lightweight and human-readable.
Cons
caution
- Requires manual updates and coordination to keep the file accurate.
id: pm_method
2. GitHub Issues and Labels
Description
- Use GitHub Issues to represent individual features and labels to track their states.
- Feature flag details and descriptions are documented directly in the issue body.
Workflow
-
Feature Issues:
-
Create an issue for each feature and describe its purpose, requirements, and status.
-
Example issue structure:
-
Title:
[Feature] New Dashboard -
Description:
### Feature: New Dashboard
**Description:** Enables the new user dashboard with enhanced analytics.
**Status:** Planned
**Owners:** @team-lead, @developer1
-
-
-
Labels:
- Use labels to track the feature's status (e.g.,
planned,in-progress,released,deprecated). - Example labels:
FeaturePlannedIn ProgressReleased
- Use labels to track the feature's status (e.g.,
-
Milestones:
- Group related features into milestones for specific releases or timeframes.
Integration
- Use a GitHub Action or API script to sync issue labels with your feature flag system in the codebase.
Pros
info
- Directly integrates with GitHub’s project management tools.
- Enables collaboration and comments on individual features.
- Provides visibility across teams.
Cons
caution
- May become cluttered if not maintained well.
- Requires periodic synchronization between issues and code.
id: pm_method
3. GitHub Project Boards
Description
- Use GitHub Projects to visually track features and their progress through stages like "Planned," "In Progress," and "Released."
- Combine with linked issues for detailed descriptions and feature flag management.
Workflow
- Set Up a Project Board:
- Create columns for statuses like "Planned," "In Progress," and "Released."
- Add Features:
- Create cards for each feature in the project board.
- Link cards to GitHub Issues for detailed descriptions and tracking.
- Track Progress:
- Move cards across columns as features progress through development stages.
- Use Metadata:
- Add metadata to cards, such as rollout percentage, feature owners, or release targets.
- Example card description:
**Feature:** Daily Arcanum
**Description:** Introduces a daily Tarot card feature for user guidance.
**Status:** In Progress
**Rollout:** 50%
**Owners:** @developer2
Integration
- Use GitHub Automation to move cards between columns based on linked pull request statuses or issue updates.
- Optionally, sync project data with feature flags in code using GitHub Actions.
Pros
info
- Provides a visual, Kanban-style workflow for managing features.
- Easy collaboration and tracking of feature progress.
- Centralized location for planning and tracking.
Cons
caution
- Requires manual updates unless automated.
- May need additional GitHub integrations for detailed tracking.
id: pm_method
Which Approach to Choose?
| Approach | Best For | Key Benefit |
|---|---|---|
| Feature Flag Config Files | Teams wanting everything in-code and version-controlled | Lightweight, single source of truth |
| GitHub Issues + Labels | Teams already using GitHub for collaboration | Easy tracking and documentation with collaboration tools |
| GitHub Project Boards | Teams needing a visual workflow for feature planning | Visual organization with seamless GitHub integration |
id: pm_method
Recommendations
- Start Simple:
- Use Feature Flag Config Files if you’re in an early stage of development.
- Collaborative Planning:
- Add GitHub Issues as features grow and require more collaboration or documentation.
- Scale with Visual Management:
- Transition to GitHub Project Boards when managing multiple features and teams.
Each approach can complement others, allowing you to scale and adapt as your project grows. Let me know if you’d like examples or help implementing any of these!