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