This is an automated email from the ASF dual-hosted git repository.

comphead pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 631408baef Documentation: Add API deprecation policy (#13083)
631408baef is described below

commit 631408baefa79d80f2f7e59e8a6e22714312cc3e
Author: Oleks V <[email protected]>
AuthorDate: Thu Oct 24 09:25:03 2024 -0700

    Documentation: Add API deprecation policy (#13083)
    
    * Documentation: Add API deprecation policy
---
 README.md                                    |  5 ++++
 docs/source/library-user-guide/api-health.md | 37 ++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/README.md b/README.md
index 30505d7ca1..bbbdf71335 100644
--- a/README.md
+++ b/README.md
@@ -134,3 +134,8 @@ For example, given the releases `1.78.0`, `1.79.0`, 
`1.80.0`, `1.80.1` and `1.81
 If a hotfix is released for the minimum supported Rust version (MSRV), the 
MSRV will be the minor version with all hotfixes, even if it surpasses the 
four-month window.
 
 We enforce this policy using a [MSRV CI 
Check](https://github.com/search?q=repo%3Aapache%2Fdatafusion+rust-version+language%3ATOML+path%3A%2F%5ECargo.toml%2F&type=code)
+
+## DataFusion API evolution policy
+
+Public methods in Apache DataFusion are subject to evolve as part of the API 
lifecycle.
+Deprecated methods will be phased out in accordance with the 
[policy](docs/source/library-user-guide/api-health.md), ensuring the API is 
stable and healthy.
diff --git a/docs/source/library-user-guide/api-health.md 
b/docs/source/library-user-guide/api-health.md
new file mode 100644
index 0000000000..943a370e81
--- /dev/null
+++ b/docs/source/library-user-guide/api-health.md
@@ -0,0 +1,37 @@
+<!---
+  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.
+-->
+
+# API health policy
+
+To maintain API health, developers must track and properly deprecate outdated 
methods.
+When deprecating a method:
+
+- clearly mark the API as deprecated and specify the exact DataFusion version 
in which it was deprecated.
+- concisely describe the preferred API, if relevant
+
+API deprecation example:
+
+```rust
+    #[deprecated(since = "41.0.0", note = "Use SessionStateBuilder")]
+    pub fn new_with_config_rt(config: SessionConfig, runtime: Arc<RuntimeEnv>) 
-> Self
+```
+
+Deprecated methods will remain in the codebase for a period of 6 major 
versions or 6 months, whichever is longer, to provide users ample time to 
transition away from them.
+
+Please refer to [DataFusion 
releases](https://crates.io/crates/datafusion/versions) to plan ahead API 
migration


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to