One must also make sure that the feature flags are ephemeral. We have 310 different configuration options in our application at the time of writing this. Many of them are flags to enable or disable certain features. This makes sense because not every customer wants it alike.
I would have used a more temporal system for flags if we were to implement them during A/B testing or similar. Every configuration option that has every existed must be kept around for legacy reasons.
This was a hard-learned lesson for me. I have “temporary” feature flags that have been in production for nearly a decade now. Any feature flag system I’d be integrating today needs some kind of expiry date and notification process.
Yeah, I think you have to have a process in place to integrate feature flagged stuff into your product after a while so you don’t have to deal with them a decade later. That’s, of course, can be done if you have SaaS or single-install-source solution. If you have a situation like Enpo above with different, customized, installations for each client you are pretty much toast.
That is … mind boggling. How on earth do you even attempt to test any amount of the 796945721845778842475919139075620414921136393375300542318387282866272704053390430589730860455603066078739412704697191536795836240056697896249671921625859110264739008206646881054299114131923686294626708836563443497056478753259286321601841784170972278535996798204378021886389407248684599038298054366260840551142981370313185123638250325060383962886770938435048882386658766596481560405515515254199457134973524360454582648135836670684347420975064802837641388048575559158251497106943523511427144443326952041559678971773755844300171372821558992540618349430789236271936082094239920238839249942858712222326623974397184065086164132932404402666686761 setup options?
How many of those flags are single-deploy / single-user ones written sort of on-demand for a certain client and hence only used by one deploy? Was doing it as a fork / patch / (other way using version control) ever considered? How is it day to day to work with?
Sorry, I have so many questions – it is just such an extreme case I am so curious how it actual works day to day – is it pain most days or just something you don’t think about?
For those who aren’t aware of it, I’d like to put in a recommendation for Spacemacs. For me, as a 30-year Emacs user and 8-year Vim user, it’s the best of both worlds. The modal editing language of vim, the discoverable sensible space menu system, and all the power of Emacs (e.g., Magit).
There is also a lightweight alternative - “Doom Emacs”, almost all of the benefits of Spacemacs but fast as a cacodaemon ;-) Feels really snappy and starts in less than a second.
Thanks for the tip! Yeah, Spacemacs pretty much requires you to use an Emacs daemon. Very slow startup.