{ "uuid": [ { "value": "8be3d8d9-4e73-49db-93a6-83349ac1af05" } ], "langcode": [ { "value": "en" } ], "type": [ { "target_id": "daily_email", "target_type": "node_type", "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" } ], "revision_timestamp": [ { "value": "2025-05-11T09:00:18+00:00" } ], "revision_uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "revision_log": [], "status": [ { "value": true } ], "uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "title": [ { "value": "Feature flags should be short-lived" } ], "created": [ { "value": "2024-03-11T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:18+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2024\/03\/11\/feature-flags-should-be-short-lived", "langcode": "en" } ], "body": [ { "value": "\n
Today, I posted a tweet<\/a> with a screenshot of some code.<\/p>\n\n When previously working on the Versa CLI tool<\/a>, I had a TODO comment saying \"What if there are multiple languages?\".<\/p>\n\n Versa is a tool for standardising commands between different languages and frameworks, but some projects, like my personal website, use multiple languages.<\/p>\n\n The website is powered by Sculpin, a static site generator written in PHP (so there is a composer.json file) and node to compile the front-end assets (so there is also a package.json file).<\/p>\n\n Depending on the language, commands like I added PHP support first, so if a composer.json file is found, the PHP command is run as the default.<\/p>\n\n What I thought was for projects with multiple languages, to prompt the user to select the language when running the command if no explicit language is set.<\/p>\n\n This led me to do a spike of using Symfony Console's Once I'd finished with the spike, rather than deleting the code, I wrapped it in an The screenshot in the tweet showed this, along with the text \"Minimum viable feature flag.\"<\/p>\n\n This is only supposed to be there for a short time until I revisit the code and implement the feature I was spiking on.<\/p>\n\n If it would be a long time before I looked at it again, I'd take a different approach.<\/p>\n\n One of the main rules of using feature flags is that they should be short-lived.<\/p>\n\n It's less than ideal to read through a codebase and see it scattered with feature flags that are no longer needed and were used to release a feature several months ago, but the flag hasn't been removed.<\/p>\n\n A feature flag is a temporary solution for separating the deployment of code from the release of a change.<\/p>\n\n Once it's been released, the flag should be removed.<\/p>\n\n ",
"format": "full_html",
"processed": "\n Today, I posted a tweet<\/a> with a screenshot of some code.<\/p>\n\nWhat Problem Am I Trying to Solve?<\/h2>\n\n
versa install<\/code> will need to execute a different command - e.g., composer install
or<\/code>npm install` (or an equivalent node package manager).<\/p>\n\n
choice<\/code> method to see what that would look like so I could add a screenshot to the GitHub issue.<\/p>\n\n
if (false)<\/code> condition so it wouldn't be executed, but I could still re-enable it in the future.<\/p>\n\n
Here's the Thing<\/h2>\n\n