> I like it as it makes this apart of its name, but is sad that we must break 
> compatibility once we mark it stable (as we move the keyspace).  
+1 to this exact set of sentiments. The next logical question to me is "should 
we alias the old system_experimental* table name to the new stable table name 
for vtables once they graduate to support backwards compatibility", but I think 
I fall on the "no" side there.

On Fri, May 31, 2024, at 5:15 PM, J. D. Jordan wrote:
> 
> We have already agreed in the past that having experimental features, behind 
> feature flags, in stable releases is a good thing for keeping those features 
> up to date, for getting feedback from end users, and many others.
> The question here is about how we ensure that end users are aware something 
> is experimental, because the person who installed C* and enabled the feature 
> flag is likely not the same person who is using the feature.
> 
>> On May 31, 2024, at 3:23 PM, German Eichberger via dev 
>> <dev@cassandra.apache.org> wrote:
>> 
>> Hi,
>> 
>> To sum where everyone is coming from: We would like to have features in a 
>> stable version of Cassandra which are experimental and are subject to 
>> non-backward compatible change. This indicates to me that the feature is not 
>> finished and should likely not be included in a stable release.  What 
>> benefit are we looking for by including it into a stable release as opposed 
>> to rolling it to the next release.
>> 
>> Thanks,
>> German
>> 
>> 
>> *From:* Maxim Muzafarov <mmu...@apache.org>
>> *Sent:* Wednesday, May 29, 2024 1:09 PM
>> *To:* dev@cassandra.apache.org <dev@cassandra.apache.org>
>> *Subject:* [EXTERNAL] Re: [DISCUSS] Adding experimental vtables and rules 
>> around them
>>  
>> Hello everyone,
>> 
>> I like the idea of highlighting some of the experimental virtual
>> tables whose model might be changed in future releases.
>> 
>> As another option, we could add an @Experimetal annotation (or another
>> name) and a configuration parameter
>> experimental_virtula_tables_enabled (default is false). This, in turn,
>> means if a virtual table is experimental, it won't be registered in a
>> virtual keyspace unless the corresponding configuration parameter is
>> enabled. This also means that a user must implicitly enable an
>> experimental API, and prevent us from spamming the log with warnings.
>> All of this does not preclude us from specifying the experimental
>> state of some virtual tables in the documentation.
>> 
>> On Wed, 29 May 2024 at 21:18, Abe Ratnofsky <a...@aber.io> wrote:
>> >
>> > I agree that ClientWarning is the best way to indicate the risk of using 
>> > an experimental feature directly to the user. Presenting information in 
>> > the client application's logs directly means that the person who wrote the 
>> > query is most likely to see the warning, rather than an operator who sees 
>> > cluster logs.
>> >
>> > I don't think it's necessary to attach a ClientWarning to every single 
>> > client response; a ClientWarning analog to NoSpamLogger would be useful 
>> > for this ("warn a client at most once per day").
>> >
>> > This would also be useful for warning on usage of deprecated features.
>> >
>> > > On May 29, 2024, at 3:01 PM, David Capwell <dcapw...@apple.com> wrote:
>> > >
>> > > We agreed a long time ago that all new features are disabled by default, 
>> > > but I wanted to try to flesh out what we “should” do with something that 
>> > > might still be experimental and subject to breaking changes; I would 
>> > > prefer we keep this thread specific to vtables as the UX is different 
>> > > for different types of things…
>> > >
>> > > So, lets say we are adding a set of vtables but we are not 100% sure 
>> > > what the schema should be and we learn after the release that changes 
>> > > should be made, but that would end up breaking the table… we currently 
>> > > define everything as “don’t break this” so if we publish a table that 
>> > > isn’t 100% baked we are kinda stuck with it for a very very long time… I 
>> > > would like to define a way to expose vtables that are subject to change 
>> > > (breaking schema changes) across different release and rules around them 
>> > > (only in minor?  Maybe even in patch?).
>> > >
>> > > Lets try to use a concrete example so everyone is on the same page.
>> > >
>> > > Accord is disabled by default (it is a new feature), so the vtables to 
>> > > expose internals would be expected to be undefined and not present on 
>> > > the instance.
>> > >
>> > > When accord is enabled (accord.enabled = true) we add a set of vtables:
>> > >
>> > > Epochs - shows what epochs are known to accord
>> > > Cache - shows how the internal caches are performing
>> > > Etc.
>> > >
>> > > Using epochs as an example it currently only shows a single column: the 
>> > > long epoch
>> > >
>> > > CREATE VIRTUAL TABLE system_accord.epochs (epoch bigint PRIMARY KEY);
>> > >
>> > > Lets say we find that this table isn’t enough and we really need to 
>> > > scope it to each of the “stores” (threads for processing accord tasks)
>> > >
>> > > CREATE VIRTUAL TABLE system_accord.epochs (epoch bigint, store_id int, 
>> > > PRIMARY KEY (epoch, store_id));
>> > >
>> > > In this example the table changed the schema in a way that could break 
>> > > users, so this normally is not allowed.
>> > >
>> > > Since we don’t really have a way to define something experimental other 
>> > > than NEWS.txt, we kinda get stuck with this table and are forced to make 
>> > > new versions and maintain them for a long time (in this example we would 
>> > > have epochs and epochs_v2)… it would be nice if we could define a way to 
>> > > express that tables are free to be changed (modified or even deleted) 
>> > > and the life cycle for them….
>> > >
>> > > I propose that we allow such a case and make changes to the UX (as best 
>> > > as we can) to warn about this:
>> > >
>> > > 1) update NEWS.txt to denote that the feature is experimental
>> > > 2) when you access an experimental table you get a ClientWarning stating 
>> > > that this is free to change
>> > > 3) the tables comments starts with “[EXPERIMENTAL]”
>> > >
>> > > What do others think?
>> > >
>> > >
>> >

Reply via email to