Proposal: feature flag implementation for Juju
Tim Penhey
tim.penhey at canonical.com
Fri Nov 28 01:18:56 UTC 2014
Yes, that is exactly what the code that came with the proposal did :-)
Tim
On 27/11/14 23:40, John Meinel wrote:
> It sounded like we needed the env set in agents as well. What gets them
> set there? Just a change to the upstart job that runs them?
>
> John
> =:->
>
> On Nov 27, 2014 12:52 PM, "William Reade" <william.reade at canonical.com
> <mailto:william.reade at canonical.com>> wrote:
>
> So, having spoken to Tim about this, and coming to understand the
> motivations a bit more, I think the "env var propagated everywhere, no
> exceptions" approach is the winner.
>
> The deciding factor is that environ-config requires an API connection,
> and that (one of) the motivating use case(s) involves exposing
> incomplete CLI commands via feature flag (and I'm not aware of ones
> that can't be fulfilled by env vars). I understand that environ-config
> is superior in some other respects, but it's also more complex; and
> furthermore I'd like to avoid having multiple mechanisms for the same
> thing.
>
> The biggest risk is that people will start to use and depend upon
> feature flag behaviour, so I require that anyone using a feature flag
> make it abundantly clear that it's unsupported behaviour, by (1)
> including something like "DEV" in the var name and (2) logging its
> usage promiscuously, and making clear in those messages that the
> behaviour is not supported.
>
> Cheers
> William
>
> On Wed, Nov 26, 2014 at 4:50 PM, Casey Marshall
> <casey.marshall at canonical.com <mailto:casey.marshall at canonical.com>>
> wrote:
> > +1 for feature flags in general and +1 for using environment variables
> > in upstart to get them to the servers & agents.
> >
> > I think it'd be nice to have an environment variable per flag, with a
> > common prefix JUJU_FEATURE_. That way, if you need to check one in a
> > package init(), you don't have to parse the whole list of flags to
> find
> > the one you care about -- or depend on a globally initialized
> parsing of
> > that list.
> >
> > env config seems reasonable, but dealing with parsing, errors and then
> > making that config globally available at init seems complex and not
> > always feasible.
> >
> > How about defining them "free form" in an env config field, which is
> > then used to emit the env vars as described above to the upstart
> config
> > during bootstrap?
> >
> > -Casey
> >
> > On 11/25/2014 10:16 PM, Ian Booth wrote:
> >> I like feature flags so am +1 to the overall proposal. I also
> agree with the
> >> approach to keep them immutable, given the stated goals and
> complexity
> >> associated with making them not so.
> >>
> >> I think the env variable implementation is ok too - this keeps
> everything very
> >> loosely coupled and avoids polluting a juju environment with an
> extra config
> >> attribute.
> >>
> >> On 26/11/14 08:47, Tim Penhey wrote:
> >>> Hi all,
> >>>
> >>> There are often times when we want to hook up features for
> testing that
> >>> we don't want exposed to the general user community.
> >>>
> >>> In the past we have hooked things up in master, then when the
> release
> >>> branch is made, we have had to go and change things there. This
> is a
> >>> terrible way to do it.
> >>>
> >>> Here is my proposal:
> >>>
> >>> http://reviews.vapour.ws/r/531/diff/#
> >>>
> >>> We have an environment variable called JUJU_FEATURE_FLAGS. It
> contains
> >>> comma delimited strings that are used as flags.
> >>>
> >>> The value is read when the program initializes and is not mutable.
> >>>
> >>> Simple checks can be used in the code:
> >>>
> >>> if featureflag.Enabled("foo") {
> >>> // do foo like things
> >>> }
> >>>
> >>> Thoughts and suggestions appreciated, but I don't want to have the
> >>> bike-shedding go on too long.
> >>>
> >>> Tim
> >>>
> >>
> >
> >
> > --
> > Juju-dev mailing list
> > Juju-dev at lists.ubuntu.com <mailto:Juju-dev at lists.ubuntu.com>
> > Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju-dev
> >
>
> --
> Juju-dev mailing list
> Juju-dev at lists.ubuntu.com <mailto:Juju-dev at lists.ubuntu.com>
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju-dev
>
>
>
More information about the Juju-dev
mailing list