Live data from Hacker News

Bullet Train: Open-source feature flagging

bullet-train.io

31–37 of 37 posts

Re: Bullet Train: Open-source feature flagging

#32
post #10

I couldn't work out what this does. A library for mapping booleans to and from strings?

Is a service for feature flags, where feature flags are a software pattern in a way. If you want to learn more about it, have a look into this: https://martinfowler.com/articles/feature-toggles.html In a nutshell, it allows developers to deploy new features but hide them based on a flag. Once it is ready to be released (example: product gave an ok, big announcement happened etc), then this feature just needs to be en…

I'm always curious about Feature Flags - I'd love to use them.

But they only seem to work if the interface doesn't change. From the example you gave:

    function reticulateSplines(){
      if( featureIsEnabled("use-new-SR-algorithm") ){
        return enhancedSplineReticulation();
      }else{
        return oldFashionedSplineReticulation();
      }
    }
All well and good as long as the enhancedSplineReticulation returns the exact same structure that the old one did. If it doesn't, then a bunch of code that handles the new reticulated splines also needs to be behind a flag (because the structure changed). And that could mean a chunk of UI needs to be duplicated behind a flag because it changed, and so on.

How do you use feature flags when the features aren't just trivial changes to methodology, but affect multiple parts of the system?

Re: Bullet Train: Open-source feature flagging

#33
post #10

I couldn't work out what this does. A library for mapping booleans to and from strings?

feature flagging allows you to separate code deployment from feature releases. It’s a change in dev methodology/mentally and usually goes hand-in-hand with “trunk-based development” (trunk/master is always stable and you should avoid long lived branches).

a good feature flag service should also allow you to do % rollout to try to de-risk the release of a new feature, some times even auto-closing the feature if some specific metric passes a certain threshold (e.g. dau dropped 10%, number of errors increased x%, etc)

Re: Bullet Train: Open-source feature flagging

#34

Earlier quoted context omitted.

Is a service for feature flags, where feature flags are a software pattern in a way. If you want to learn more about it, have a look into this: https://martinfowler.com/articles/feature-toggles.html In a nutshell, it allows developers to deploy new features but hide them based on a flag. Once it is ready to be released (example: product gave an ok, big announcement happened etc), then this feature just needs to be en…

I'm always curious about Feature Flags - I'd love to use them. But they only seem to work if the interface doesn't change. From the example you gave: function reticulateSplines(){ if( featureIsEnabled("use-new-SR-algorithm") ){ return enhancedSplineReticulation(); }else{ return oldFashionedSplineReticulation(); } } All well and good as long as the enhancedSplineReticulation returns the exact same structure that the o…

Check the flags in multiple parts of the system, or duplicate some logic and have two completely self-contained components, one with the new pieces and one untouched.

Re: Bullet Train: Open-source feature flagging

#36

Earlier quoted context omitted.

I'm always curious about Feature Flags - I'd love to use them. But they only seem to work if the interface doesn't change. From the example you gave: function reticulateSplines(){ if( featureIsEnabled("use-new-SR-algorithm") ){ return enhancedSplineReticulation(); }else{ return oldFashionedSplineReticulation(); } } All well and good as long as the enhancedSplineReticulation returns the exact same structure that the o…

Check the flags in multiple parts of the system, or duplicate some logic and have two completely self-contained components, one with the new pieces and one untouched.

Yeah, I suppose so.

But how do you deal with multiple feature flags implemented on the same piece of the system?

How do you create discrete components when you have three or more features intersecting on that component?

And presumably there's a proliferation of test cases, too (because you'd need to test that everything works with all combinations of features A,B,C,D implemented)?

How much of this gets cleaned up afterwards? When the feature is fully rolled out, how do you resist the pressure to move on to another feature and leave the flags implemented rather than clean it all up and remove the old code?

Re: Bullet Train: Open-source feature flagging

#37

If you are interested in this space and don't want to purchase a commercial product, check out Flagr [0] which you can deploy and run yourself. It has clients for Go, Python, Ruby and JavaScript. I have only used the basic flagging, but it also supports A/B testing as well. No affiliation, just a happy customer. 0 - https://checkr.github.io/flagr

I'm curious, how do you setup your deployment and the scale of Flagr? The only thing I could found is this [0]

[0] - https://github.com/checkr/flagr/issues/139#issuecomment-4028...

Post reply on HN