1.0 Roadmap Tasks
Functional Features
These components are being targeted for completion and delivery as part of a 1.0 release. The order of completion in the list below is less of a focus than final availability of each feature.
Implement a configuration entity to create and configure switchesIntegrate switches with Condition plugins a la Block visibility- #2996521: Implement a switch manager service to simplify and consolidate switch value checking
- #2998566: Create a Twig extension to check flag values
- #3009381: Permissions: Administer Switches
- #3009719: Make activationStatus override-able via config
- #3010151: Baseline Activation Condition Behavior
- #3012839: Conditional Switches may opt-in to condition plugin usage
- #2995631: API - Cache contexts and tags based on flag status
- #3011185: Allow Configuration of Default Switch Statuses
- #3010815: Switches Debug Block
- #3010434: Allow Switches to be Disabled
- #2995630: API - Block visibility conditions based on flag status
Test Coverage
Prior to a final 1.0 release, test coverage for all primary features should be in place to maintain functionality moving forward.
A listing of tickets focused on test coverage of previously completed features should be added here.
Documentation
Prior to delivery of a final 1.0 release, all primary features and example usage fo them should be adequately documented.
A listing of tickets focused on documentation of previously completed features should be added here.
1.0 Release User Stories
Switch Creation and Management
User Permissions
- As a site administrator I may grant user roles permission to administer all switches.
- As a site administrator I may grant user roles permission to update existing switches.
- As a site administrator I may grant user roles permission to create new switches.
- As a site administrator I may grant user roles permission to delete existing switches.
- As a site administrator I may grant user roles permission to configure Switches system settings.
Switch Creation and Updates
- As a site builder with appropriate permissions I may create a new
Switch. - As a site builder with permission to update existing switches I may disable an existing, enabled Switch.
- As a site builder with permission to update existing switches I may enable an existing, disabled Switch.
- As a site builder creating a new Switch I may define the
following:- Administrative label
- Machine name
- Description
- Activation conditions
- As a site builder editing an existing Switch I may not change the configured machine name.
- As a site builder editing or creating a switch I may...
- enter or update the Administrative label text.
- enter or update the description text with basic rich text support.
- select and add any Condition plugin available within the system.
- populate a Condition plugin's configuration form while adding the Condition to the Switch's activation conditions.
- edit configuration for any previously added Condition plugins.
- remove any previously added Condition plugins.
Switch Settings
- As a site administrator I may configure a default activation status to be returned when an enabled Switch is not found.
- As a site builder who has installed the Switches module, I may confirm the default activation status for missing or disabled Switches is true.
Switch Usage
Activation Status Conditions
- When checking the status of a non-existent or disabled Switch, the default activation status from Switch system settings is returned.
- When checking the status of a non-existent Switch a warning is logged.
- When checking the status of an existing Switch with no configured activation conditions the Switch is assumed to be inactive and returns false.
- When checking the status of an existing Switch with configured activation conditions all conditions are evaluated using AND logic.
Condition API Exposure
- When configuring a component leveraging Condition plugins, like Block visibility, I may configure dependency on an existing Switch.
Status Overrides
- As a developer I may override and force the activation status of a configured Switch from
settings.php. - When viewing the edit form for an overridden Switch, a notification is displayed indicating the overridden status.
Theme Layer Integration
- As a developer varying output within a Twig file, I may conveniently reference the activation status of a Switch within Twig.
Cacheability Metadata
- As a developer referencing a Switch in custom code I may fetch cacheability metadata from the Switch instance being used.
- When referencing a Switch within Twig, cacheability metadata for the referenced Switch is added to the render context automatically.
Comments
Comment #2
sluceroRevising early roadmap steps based on the pivot to use a Condition plugin-based approach for determining switch status.
Comment #3
sluceroFormatting update.
Comment #4
robpowellComment #5
robpowellComment #6
sluceroComment #7
sluceroAdding #2995631: API - Cache contexts and tags based on flag status into the roadmap.
Comment #8
sluceroLinking #2998558: Add support for conditional switch status overrides within the roadmap.
Comment #9
robpowellComment #10
sluceroAdded a range of user stories to the description to drive target functionality for a 1.0 release.
Next Steps
Comment #11
robpowellWe have a little sprint planned for the next week. We want to complete the following user stories:
User Permissions
Status Overrides
Activation Status Conditions
Theme Layer Integration
As a developer varying output within a Twig file, I may conveniently reference the activation status of a Switch within Twig.Completed #2998558: Add support for conditional switch status overridesComment #12
sluceroI'm getting started on this under #3009381: Permissions: Administer Switches.
Comment #13
robpowellStarting here #3009719: Make activationStatus override-able via config
Comment #14
sluceroI've split out the initial feature set for this dev release into #3010014: Roadmap: Initial Dev Release so we can track progress against it specifically there more cleanly.
Comment #15
sluceroComment #16
sluceroWith the tickets under #3010014: Roadmap: Initial Dev Release merged and the dev release created, the focus on next priorities can shift back to this ticket. As such, I've updated the summary to reflect a suggested list of tickets to be targeted for a 1.0 release.
I've also stubbed out a section for listing tickets focused on documentation and test coverage that should be completed as well as part of a 1.0 release.