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. > >>>> > >>> > >> > >