>
> Where I think there becomes a grey area is on refactoring

ISTM we have two types of refactors:
1) Improving logic, tracking, state machines, etc (behavior, invasive)
2) Should be opaque to end user with zero change to behavior (hygiene, code
organization)

Feature flag on #1 as it's kind of a new feature / new way of operating,
deferred to major on #2 as we have a complex code-base where refactors
often have side-effects that should be more thoroughly vetted like a major?

Take as a loose set of ideas; potentially bad ones.

~Josh

On Mon, Sep 13, 2021 at 10:28 AM Ekaterina Dimitrova <e.dimitr...@gmail.com>
wrote:

> I don’t think we can or we should cover every particular case but this is a
> good baseline/guideline and we should encourage people to hit the mailing
> list when there is uncertainty.
> My understanding is that this document will support also the initially
> mentioned one where I saw something that probably partially addresses
> David’s concerns but it is said as something tbd as far as I understand:
> https://cwiki.apache.org/confluence/display/CASSANDRA/Release+Lifecycle
>
> “Compatibility between major versions - Content we have so far based on the
> feedback - Developer community will try not to make any backwards
> incompatible changes as much as possible, except in extreme cases like to
> ensure correctness. Introducing a backward incompatibility change needs dev
> community approval via voting [voting open for 48 hours].”
>
> On Fri, 10 Sep 2021 at 14:29, David Capwell <dcapw...@apple.com.invalid>
> wrote:
>
> > > I believe that always having a feature flag for every new feature might
> > be
> > > too complicated in practice for different reasons.
> > > Some new features might be low impact like new nodetool commands or new
> > > virtual tables and adding flags for those might simply be extra
> > > complication for the developers and users.
> > > For some other features it might be simply too hard to hide them behind
> > > feature flags.
> > >
> > > Feature flag basically means "experimental" so it would be good when a
> > > feature flag is introduced to also have a clear plan on when and how
> the
> > > flag will be removed.
> > >
> > > I would personally limit the feature flag to significant new features.
> As
> > > those types of features now require a CEP, we could make the feature
> fag
> > > discussion part of the CEP discussion.
> > >
> > > What do you think?
> >
> > Personally I run with the idea we should default to “you need a feature
> > flag” and special case places which do not need; if we start with
> > “significant new feature” every feature will be argued that it isn’t
> > “significant enough” or that offering one would be “too complex”.  I
> would
> > argue tables/nodetool act more like a feature flag so these examples
> > shouldn’t cause us to weaken the notation of a feature flag, as they do
> not
> > impact you unless you opt-into them…. which is what a feature flag does.
> >
> > > For some other features it might be simply too hard to hide them behind
> > > feature flags.
> >
> > In my experience these types of features get a feature flag after the
> fact
> > or warned to operators/users not to use them… While working on
> > CASSANDRA-16850 it was really annoying to support flags as I need to keep
> > track of state both at the coordinator and the replica to support this,
> and
> > at each check’s level (we also do not have a notion of a query context or
> > what actor is doing the action… which makes this even more painful to
> do);
> > this drastically increased my testing scope.  This was still important to
> > do as after it is deployed it could cause a negative impact to operators
> or
> > users, so being able to act without code changes is important.
> >
> > Where I think there becomes a grey area is on refactoring… for example I
> > have put in a lot of work refactoring repair coordination and I plan to
> do
> > a lot more… do I support falling back to old logic or old behavior?  In
> > CASSANDRA-16909 I document a lot of places which are buggy and have shown
> > to cause production issues… is the “fix” actually a “new feature” (fun
> > example that happens on prod from time to time… we drop the merkle tree
> and
> > hang forever… we could make this recoverable but is that a feature or a
> bug
> > fix)?  Should this go into a prior release?
> >
> >
> > > On Sep 10, 2021, at 9:25 AM, Joshua McKenzie <jmcken...@apache.org>
> > wrote:
> > >
> > > I put together a gdoc documenting what was in this thread - should be
> > open
> > > to comment for everyone:
> > >
> >
> https://docs.google.com/document/d/1LhCNcbuhtqTkv_aKx1TQUgWEcq022fsAZs1C_oOxEJw/edit
> > >
> > > I'll let this thread sit to early next week and assuming no major
> > concerns
> > > we'll get that into either the wiki or the site or both.
> > >
> > > Thanks everyone for the feedback!
> > >
> > > ~Josh
> > >
> > > On Thu, Sep 2, 2021 at 9:57 AM Joshua McKenzie <jmcken...@apache.org>
> > wrote:
> > >
> > >> Feature flag basically means "experimental"
> > >>
> > >> I'm thinking of feature flags more as giving the power to operators to
> > >> decide what they do and don't allow users of the database access to.
> > Even
> > >> if a feature is very stable and non-experimental, it can have negative
> > >> effects on other use-cases on a shared cluster, be incompatible with
> the
> > >> underlying execution environment, be outside compliance policies of an
> > >> organization, require greater expertise to use correctly, etc.
> > >>
> > >> That said, I 100% agree w/you on the "limit it to significant new
> > >> features". I don't think feature flagging nodetool commands makes a
> lot
> > of
> > >> sense. :)
> > >>
> > >> Adding it to the CEP template as something to yes/no on would be a
> > simple
> > >> clarification for this. +1
> > >>
> > >> ~Josh
> > >>
> > >>
> > >> On Thu, Sep 2, 2021 at 3:14 AM Benjamin Lerer <ble...@apache.org>
> > wrote:
> > >>
> > >>>>
> > >>>> - New features, always with feature flag (added; happy to drop if
> > >>>> controversial)
> > >>>
> > >>>
> > >>> I believe that always having a feature flag for every new feature
> > might be
> > >>> too complicated in practice for different reasons.
> > >>> Some new features might be low impact like new nodetool commands or
> new
> > >>> virtual tables and adding flags for those might simply be extra
> > >>> complication for the developers and users.
> > >>> For some other features it might be simply too hard to hide them
> behind
> > >>> feature flags.
> > >>>
> > >>> Feature flag basically means "experimental" so it would be good when
> a
> > >>> feature flag is introduced to also have a clear plan on when and how
> > the
> > >>> flag will be removed.
> > >>>
> > >>> I would personally limit the feature flag to significant new
> features.
> > As
> > >>> those types of features now require a CEP, we could make the feature
> > fag
> > >>> discussion part of the CEP discussion.
> > >>>
> > >>> What do you think?
> > >>>
> > >>>
> > >>>
> > >>> Le jeu. 2 sept. 2021 à 08:41, Mick Semb Wever <m...@apache.org> a
> > écrit :
> > >>>
> > >>>>>
> > >>>>>
> > >>>>> There's certainly a lot of complexity in a lot of the systems here,
> > no
> > >>>>> denying that, so maybe we treat the topic of API changes as "here's
> > >>> loose
> > >>>>> guidelines (destructive vs. additive w/sane defaults, etc) but plan
> > to
> > >>>> take
> > >>>>> it case-by-case" and be a bit more prescriptive on the "where do
> bug
> > >>>> fixes
> > >>>>> vs. improvements vs. new features go and why"?
> > >>>>>
> > >>>>
> > >>>>
> > >>>> Agree.
> > >>>>
> > >>>
> > >>
> >
> >
>

Reply via email to