Thanks for opening this thread Josh,

It seems perfectly normal to me that for important changes or questions we
raise some discussion to the mailing list.

My understanding of the current proposal  implies that for the 4.1 release
we should have had to raise over 70 discussion threads.
We have a minimum of 2 commiters required for every patch. Should we not
trust them to update nodetool, the virtual tables or other things on their
own?

There is already multiple existing ways to track changes in specific code
areas. I am personaly tracking the areas in which I am the most involved
this way and I know that a lot of people do the same.

To be transparent, It is not clear to me what the underlying issue is? Do
we have some specific cases that illustrate the underlying problem? Thrift
and JMX are from a different time in my opinion.

Le lun. 5 déc. 2022 à 08:09, Berenguer Blasi <berenguerbl...@gmail.com> a
écrit :

> +1 to moving that into it's own section outside the coding style page.
>
> Dinesh I also thought in terms of backward compatibility here. But notice
> the discussion is about _any change_ to the API such as adding new CQL
> functions. Would adding or changing an exception type or a user warning
> qualify for a DISCUSS thread also? I wonder if we're talking ourselves into
> opening a DISCUSS for almost every ticket and sthg easy to miss.
>
> I wonder, you guys know the code better, if 'public APIs' could be matched
> to a reasonable set of files (cql parsing, yaml, etc) and have jenkins send
> an email when changes are detected on them. Overkill? bad idea?
> :thinking:...
> On 4/12/22 1:14, Dinesh Joshi wrote:
>
> We should also very clearly list out what is considered a public API. The
> current statement that we have is insufficient:
>
> public APIs, including CQL, virtual tables, JMX, yaml, system
> properties, etc.
>
>
> The guidance on treatment of public APIs should also move out of "Code
> Style" page as it isn't strictly related to code style. Backward
> compatibility of public APIs is a best practice & project policy.
>
>
> On Dec 2, 2022, at 2:08 PM, Benedict <bened...@apache.org> wrote:
>
> I think some of that text also got garbled by mixing up how you approach
> internal APIs and external APIs. We should probably clarify that there are
> different burdens for each. Which is all my fault as the formulator. I
> remember it being much clearer in my head.
>
> My view is the same as yours Josh. Evolving the database’s public APIs is
> something that needs community consensus. The more visibility these
> decisions get, the better the final outcome (usually). Even small API
> changes need to be carefully considered to ensure the API evolves
> coherently, and this is particularly true for something as complex and
> central as CQL.
>
> A DISCUSS thread is a good forcing function to think about what you’re
> trying to achieve and why, and to provide others a chance to spot potential
> flaws, alternatives and interactions with work you may not be aware of.
>
> It would be nice if there were an easy rubric for whether something needs
> feedback, but I don’t think there is. One person’s obvious change may be
> another’s obvious problem. So I think any decision that binds the project
> going forwards should have a lazy consensus DISCUSS thread at least.
>
> I don’t think it needs to be burdensome though - trivial API changes could
> begin while the DISCUSS thread is underway, expecting they usually won’t
> raise a murmur.
>
> On 2 Dec 2022, at 19:25, Josh McKenzie <jmcken...@apache.org> wrote:
>
> 
> Came up this morning / afternoon in dev slack:
> https://the-asf.slack.com/archives/CK23JSY2K/p1669981168190189
>
> The gist of it: we're lacking clarity on whether the expectation on the
> project is to hit the dev ML w/a [DISCUSS] thread on _any_ API modification
> or only on modifications where the author feels they are adjusting a
> paradigm / strategy for an API.
>
> The code style section on Public APIs is actually a little unclear:
> https://cassandra.apache.org/_/development/code_style.html
>
> Public APIs
>
> These considerations are especially important for public APIs, including CQL, 
> virtual tables, JMX, yaml, system properties, etc. Any planned additions must 
> be carefully considered in the context of any existing APIs. Where possible 
> the approach of any existing API should be followed. Where the existing API 
> is poorly suited, a strategy should be developed to modify or replace the 
> existing API with one that is more coherent in light of the changes - which 
> should also carefully consider any planned or expected future changes to 
> minimise churn. Any strategy for modifying APIs should be brought to 
> dev@cassandra.apache.org for discussion.
>
>
> My .02:
> 1. We should rename that page to a "code contribution guide" as discussed
> on the slack thread
> 2. *All* publicly facing API changes (tool output, CQL semantics, JMX,
> vtables, .java interfaces targeting user extension, etc) should hit the dev
> ML w/a [DISCUSS] thread.
>
> This takes the burden of trying to determine if a change is consistent
> w/existing strategy or not etc. off the author in isolation and allows devs
> to work concurrently on API changes w/out risk of someone else working on
> something that may inform their work or vice versa.
>
> We've learned that API's are *really really hard* to deprecate,
> disruptive to our users when we change or remove them, and can cause
> serious pain and ecosystem fragmentation when changed. See: Thrift, current
> discussions about JMX, etc. They're the definition of a "one-way-door"
> decision and represent a long-term maintenance burden commitment from the
> project.
>
> Lastly, I'd expect the vast majority of these discuss threads to be quick
> consensus checks resolved via lazy consensus or after some slight
> discussion; ideally this wouldn't represent a huge burden of coordination
> on folks working on changes.
>
> So that's 1 opinion. What other opinions are out there?
>
> ~Josh
>
>
>

Reply via email to