vldpyatkov commented on code in PR #13740:
URL: https://github.com/apache/ignite/pull/13740#discussion_r4376210168


##########
rfcs/IGNITE-29201-public-api-and-rfc-process.md:
##########
@@ -0,0 +1,66 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+# Public API changes through tickets and PRs
+
+Ticket: [IGNITE-29201](https://issues.apache.org/jira/browse/IGNITE-29201)
+
+## Why
+
+We should agree on changes to public API before merging them. Use a ticket to 
describe the problem and a PR to review an RFC stored alongside the code.
+
+## What counts as public API?
+
+Public API means supported interfaces and behavior that applications, 
integrations, and operators rely on:
+
+- Language and client APIs, including plugins and SPIs.
+- SQL syntax, types, functions, and behavior.
+- REST endpoints, CLI commands, and supported machine-readable output.
+- User-facing configuration, including defaults.
+- Supported metrics, JMX interfaces, and system views.
+
+The same review requirement covers client and internode protocols and 
persistent data formats, including metadata, WAL, and snapshots.
+
+An internal class does not become public API just because it has public 
methods. Missing documentation does not make an interface intended for external 
use internal.
+
+## When do we need an RFC?
+
+Adding, changing, deprecating, or removing an interface or format listed above 
requires an RFC. Backward-compatible additions count too. For example, a new 
public method, configuration option, or protocol field needs review.
+
+Internal refactoring, optimizations, tests, documentation fixes, and ordinary 
log wording do not need an RFC if they preserve these contracts. Neither do bug 
fixes that restore established behavior without changing another contract. If 
unsure, explain the change in the ticket and discuss it with reviewers.
+
+## Ticket → RFC PR → implementation
+
+1. Open a ticket describing the problem and proposed change.
+2. Open a PR adding `rfcs/IGNITE-<ticket>-<short-title>.md`. Link the ticket 
and PR to each other; use the ticket number instead of maintaining a separate 
RFC counter.
+3. Review the document in the PR. When ready for approval, share the proposed 
revision on the dev list and allow at least 72 hours for feedback. Keep the 
list informed of significant changes and concerns.
+4. Collect explicit approval of that revision from at least three different 
Ignite committers in the PR. Resolve outstanding technical objections and post 
the approval summary and outcome on the dev list before merging. Material 
revisions need renewed approval and review time.
+5. Merge the RFC before merging the public API changes. Implementation PRs 
link to it and follow normal code review and testing.

Review Comment:
   How could we distinguish the implemented RFTC from the one that only 
approved and merged?



##########
rfcs/IGNITE-29201-public-api-and-rfc-process.md:
##########
@@ -0,0 +1,66 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+# Public API changes through tickets and PRs
+
+Ticket: [IGNITE-29201](https://issues.apache.org/jira/browse/IGNITE-29201)
+
+## Why
+
+We should agree on changes to public API before merging them. Use a ticket to 
describe the problem and a PR to review an RFC stored alongside the code.
+
+## What counts as public API?
+
+Public API means supported interfaces and behavior that applications, 
integrations, and operators rely on:
+
+- Language and client APIs, including plugins and SPIs.
+- SQL syntax, types, functions, and behavior.
+- REST endpoints, CLI commands, and supported machine-readable output.
+- User-facing configuration, including defaults.
+- Supported metrics, JMX interfaces, and system views.
+
+The same review requirement covers client and internode protocols and 
persistent data formats, including metadata, WAL, and snapshots.
+
+An internal class does not become public API just because it has public 
methods. Missing documentation does not make an interface intended for external 
use internal.
+
+## When do we need an RFC?
+
+Adding, changing, deprecating, or removing an interface or format listed above 
requires an RFC. Backward-compatible additions count too. For example, a new 
public method, configuration option, or protocol field needs review.
+
+Internal refactoring, optimizations, tests, documentation fixes, and ordinary 
log wording do not need an RFC if they preserve these contracts. Neither do bug 
fixes that restore established behavior without changing another contract. If 
unsure, explain the change in the ticket and discuss it with reviewers.
+
+## Ticket → RFC PR → implementation
+
+1. Open a ticket describing the problem and proposed change.
+2. Open a PR adding `rfcs/IGNITE-<ticket>-<short-title>.md`. Link the ticket 
and PR to each other; use the ticket number instead of maintaining a separate 
RFC counter.

Review Comment:
   Do you mean in that case where a ticket fits the requirement to create an 
RFC, it would be implemented in two commits in the main branch (RFT + code 
implementation)?
   Please clarify if it needs to modify other triggers, because before we 
always intended that we have one commit for a JIAR ticket.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to