Togle is a time tracking app that makes it easy to track your work. It’s simple to use and works across devices–on the web, desktop, mobile or even on your watch! It’s a tool that makes your work easier and helps you get paid for every billable minute.
Toggle is a word that means “switch or alternate.” It also refers to a switch that has two positions, on and off, like the keys of your keyboard. In computer technology, a toggle refers to an on-off command that switches between programs.
Feature Toggles in Your Codebase Are Inventory
Having a lot of feature flags in your codebase can be a drag on a development team, especially when it comes to testing. Teams savvy enough to take the time to keep their feature flags manageable will often create a system of checks and balances that make it difficult for a new feature flag to become unneeded.
Savvy teams also have a process for removing feature flags that are no longer needed, or put expiration dates on them. In addition, they will have a mechanism for ensuring that toggles that are still live in a release after their expiration date won’t cause any surprises in a future test or production release.
One of the most common ways to manage toggle configuration is by hardcoding it into static files, or by using an approach that re-configures a specific feature flag on a per-release basis. The downside to these approaches is that they can be incredibly fiddly and difficult to manage at scale.
A more scalable alternative is to move toggle configuration out of static files and into a centralized store. Usually this will be a data store within the application itself or an existing DB which supports a set of APIs to allow users to view, edit and re-configure their feature flags.
The ability to dynamically re-configure a feature flag at runtime is a great tool for automated testing but it can be quite a pain if you have a large number of service instances which need to be re-configured on a regular basis. It can require restarting the process being tested or re-deploying artifacts into a testing environment, which in turn reduces the cycle time of your tests and makes it harder for CI/CD to ensure that your features are properly validated.
Many organizations are moving to a more dynamic approach for managing toggle configuration. These approaches range from simple to extremely sophisticated but they all have a few important things in common.
They all rely on some form of overriding capability, usually via an endpoint that allows for dynamic in-memory re-configuration at runtime. This capability is particularly useful for Experiment Toggles and other scenarios where it can be very fiddly to exercise both paths of a toggle.
While the above approaches have their pros and cons they all have one thing in common: they allow for toggles to live side-by-side in source control, which makes it easy for a team to verify that the state of a toggle is exactly how it was configured in a previous release. This ability to view a toggle configuration in the same place as it was configured on a previous release is also very helpful for teams who need to perform maintenance on a live toggle configuration or re-deploy it to a new production environment.