This is what I derive from your Roy's comments. 

It is not possible to predict all of the changes that might be conditioned via 
a flag. The context is really up to the application developers and their 
requirements. 
Applying feature flags at the resource level would only cover a particular set 
of changes. 
So, fundamentally all that the framework can do is provide a way to define 
flags, provide a switch panel and a way to extend it, and API to check flags in 
condition statements. 
How and where each flag is used is up to the developer of a specific 
application feature. 

Also, API for flag checking needs to be made available on both client and 
server without them calling each other. This can get tricky when we consider 
caching.

On Nov 15, 2013, at 6:00 PM, "Roy T. Fielding" <field...@gbiv.com> wrote:

> On Nov 15, 2013, at 2:54 PM, Alexander Klimetschek wrote:
>> On 15.11.2013, at 07:13, Amit.. Gupta. <amitg...@adobe.com> wrote:
>> 
>>> You are right, we can temporarily enable feature. But, as we advocate more 
>>> and more use of ResourceResolver api instead of underlying content storage. 
>>> There could be cases where even editors/tools used in 
>>> development/installers are using the resourceResolver api and never see the 
>>> resource.
>>> Like exporting some content package to be deployed to another sling 
>>> instance, but package exporter use resouceResolver api and never see the 
>>> resource.
>> 
>> Ack. IMO feature flags are clearly a high-level application, not 
>> infrastructure, aspect.
> 
> Feature flags are a mechanism for isolating changes within a deployed
> system.  Any part of that system.
> 
> That means a feature flag needs to be able to condition any change
> that might be made to a system, including any change to the configuration
> files/data, any change to code monitoring the system, any change to the
> selection of data sources, any change to content (including everything
> as content), any change to a layout within any page or component, any
> change to the order in which things are done, any change to a report
> about what was done, and any change I haven't mentioned yet short of
> physically walking up to the server rack and unplugging the power
> by hand.
> 
> In short, if it is content, it can be made conditional on the basis
> of a feature flag.  That is the granularity of feature flag use.
> 
> Separate from that is the feature flag flip switch (i.e., the set
> of ways that a given feature can be turned on) and the extent to
> which a feature becomes sticky per user once enabled for that user.
> 
> You should expect a typical deployed site to have on the order of
> 1024 active feature flags.  Hence, think carefully before choosing
> a verbose (or linear) mechanism for checking or remembering flags.
> Likewise, you should expect to have both a global setting for each
> flag and a per-user mask, and the person running the flip switch
> control panel needs to be able to choose from
> 
>  a) off for all users
>  b) off for unassigned users
>  c) proportional assignment to on (X out of N users, max M)
>  d) logical (custom code) assignment to on
>  e) on for unassigned users
>  f) on for all users
> 
> and be able to remember assignments per user, without requiring
> the user to login, and without assigning more than one cookie.
> 
> Oh, and a flag check should be available for both server-side
> and client-side code, without calling the other side.
> 
> Finally, for the ultimate effect, it ought to be possible to burn
> a flag by automating the removal of all conditionals within managed
> content that require that flag (change the content to permanently on)
> or the removal of all such conditions (permanently off).
> 
> Cheers,
> 
> ....Roy
> 

Reply via email to