ReleaseToggles

Stable Version 1.0.0 (O11)
Also available for 10
Published on 3 Nov (3 weeks ago) by 
Created on 22 September 2018
Details
This application provides an implementation of release toggles in OutSystems. Release toggles are meant to hide/reveal features of an application in runtime. Bringing unfinished or not-yet-accepted features into production is no longer a problem.
Read More

This application provides an implementation of release toggles in OutSystems. The inspiration for this solution came from a blog post by Pete Hodgson on Martin Fowler's website. Read it if you want to delve into all the different ways into which toggles are being used in software in general. 

The problem it tries to solve... 

The sprint is done, the product owner has accepted everything. The changes go for user acceptance but only part of the functionality gets approved. You want to bring what is approved into production but the other functionality should not be made available. What to do? 

Release toggles to the rescue :) 

If each functionality is guarded by a release toggle we can reveal or hide functionality in runtime. Therefore, all changes can go into production and only some of the release toggles are turned on. 

How it works... 

The release toggles are defined in an Excel file, the releasetoggles.xlsx resource. If you need to add, update or delete release toggles you have to download this file, do the necessary changes, upload it with the same name and publish the module. All changes to the file will be taken over and put in the database. 

For each release toggle, you create a public action that states whether the release toggle is on or off. This application comes with a couple of examples. Just copy-paste those and do the necessary changes. These actions are the ones you use in your application to make sure that you can hide/reveal part of the functionality. 

By having a single public action for each release toggle, it becomes easy to delete a release toggle. All you need to do is to delete the action from this application and fix all the modules that got broken by removing the if-constructs with a call to this action. Alongside, remove all the code that was on the false branch of the if-construct. 

Suggestions... 

Delete a release toggle as soon as the functionality it guards is in production. Try to keep the number of release toggles as small as possible. After all, release toggle checks increase the complexity of your code. 

Side notes... 

- By default, release toggles are turned off. This means that when you add a release toggle, it is turned off until you turn it on. In addition, when you bring this module to another environment, all release toggles will be off unless they were already present in that environment and turned on.

 - If a release toggle is deleted from the releasetoggles.xlsx file, it will be deleted from the database upon deployment of this module. There is no undo possible

. - More often than not, release notes are implemented using site properties. This has some disadvantages. As they are commonly spread throughout multiple modules, it is difficult to have an overview of all release toggles in use. In addition, sometimes the same release toggle is represented by site properties in multiple modules. Turning it on means having to go through all of these modules and change the site property value accordingly. Keeping all of these in synch is quite a challenge. Sometimes the a release toggle is on or off depending on multiple factors. This is not possible to do while using site properties.

What’s new (1.0.0)
  • Migrated component to O11
  • Removed dependency to Silk UI
  • Moved demo module into a demo application
Reviews (0)
Category
Libraries, Components, Samples & How-tos
Support Options
This component is not supported by OutSystems. You may use the discussion forums to leave suggestions or obtain best-effort support from the community, including from Pedro Rodrigues who created this component.
Dependencies
See all 1 dependencies
Requirements
Platform:
11.0.542.0
Database:
All
Stack:
.NET
Component Consumers
No consumers yet.
Weekly Downloads