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

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


The following commit(s) were added to refs/heads/main by this push:
     new 0e8367b91 docs: Add `Polaris Evolution` page (#1890)
0e8367b91 is described below

commit 0e8367b91e546618f4fd115fde81e4ea157f29f5
Author: Dmitri Bourlatchkov <dmitri.bourlatch...@gmail.com>
AuthorDate: Wed Jun 18 07:14:35 2025 -0400

    docs: Add `Polaris Evolution` page (#1890)
    
    ---------
    
    Co-authored-by: Eric Maynard <emayn...@apache.org>
---
 .../configuring-polaris-for-production.md          |   5 +
 site/content/in-dev/unreleased/evolution.md        | 115 +++++++++++++++++++++
 2 files changed, 120 insertions(+)

diff --git 
a/site/content/in-dev/unreleased/configuring-polaris-for-production.md 
b/site/content/in-dev/unreleased/configuring-polaris-for-production.md
index 3d0bfd232..fac51b40f 100644
--- a/site/content/in-dev/unreleased/configuring-polaris-for-production.md
+++ b/site/content/in-dev/unreleased/configuring-polaris-for-production.md
@@ -215,3 +215,8 @@ polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES" = [ 
"S3", "Azure" ]
 ```
 Leave out `FILE` to prevent its use. Only include the storage types your setup 
needs.
 
+### Upgrade Considerations
+
+The [Polaris Evolution](../evolution) page discusses backward compatibility and
+upgrade concerns.
+
diff --git a/site/content/in-dev/unreleased/evolution.md 
b/site/content/in-dev/unreleased/evolution.md
new file mode 100644
index 000000000..ea29badc8
--- /dev/null
+++ b/site/content/in-dev/unreleased/evolution.md
@@ -0,0 +1,115 @@
+---
+#
+# 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.
+#
+title: Polaris Evolution
+type: docs
+weight: 1000
+---
+
+This page discusses what can be expected from Apache Polaris as the project 
evolves.
+
+## Using Polaris as a Catalog
+
+Polaris is primarily intended to be used as a Catalog of Tables and Views. As 
such, 
+it implements the Iceberg REST Catalog API and its own REST APIs.
+
+Revisions of the Iceberg REST Catalog API are controlled by the [Apache 
Iceberg](https://iceberg.apache.org/)
+community. Polaris attempts to accurately implement this specification. 
Nonetheless,
+optional REST Catalog features may or may not be supported immediately. In 
general,
+there is no guarantee that Polaris releases always implement the latest 
version of
+the Iceberg REST Catalog API.
+
+Any API under Polaris control that is not in an "experimental" or "beta" state 
+(e.g. the Management API) is maintained as a versioned REST API. New releases 
of Polaris
+may include changes to the current version of the API. When that happens those 
changes
+are intended to be compatible with prior versions of Polaris clients. Certain 
endpoints
+and parameters may be deprecated.
+
+In case a major change is required to an API that cannot be implemented in a
+backward-compatible way, new endpoints (URI paths) may be introduced. New URI 
"roots" may
+be introduced too (e.g. `api/catalog/v2`). 
+
+Note that those "v1", "v2", etc. URI path segments are not meant to be 1:1 
with Polaris
+releases or Polaris project version numbers (e.g. a "v2" path segment does not 
mean that
+it is added in Polaris 2.0).
+
+Polaris servers will support deprecated API endpoints / parameters / versions 
/ etc. 
+for some transition period to allow clients to migrate.
+
+### Managing Polaris Database
+
+Polaris stores its data in a database, which is sometimes referred to as 
"Metastore" or
+"Persistence" in other docs.
+
+Each Polaris release may support multiple Persistence 
[implementations](../metastores),
+for example, "EclipseLink" (deprecated) and "JDBC" (current).
+
+Each type of Persistence evolves individually. Within each Persistence type, 
Polaris
+attempts to support rolling upgrades (both version X and X + 1 servers running 
at the
+same time).
+
+However, migrating between different Persistence types is not supported in a 
rolling
+upgrade manner (for example, migrating from "EclipseLink" to "JDBC"). Polaris 
provides
+[tools](https://github.com/apache/polaris-tools/) for migrating between 
different
+catalogs and those tools may be used to migrate between different Persistence 
types
+as well. Service interruption (downtime) should be expected in those cases.
+
+## Using Polaris as a Build-Time Dependency
+
+Polaris produces several jars. These jars or custom builds of Polaris code may 
be used in
+downstream projects according to the terms of the license included into 
Polaris distributions.
+
+The minimal version of the JRE required by Polaris code (compilation target) 
may be updated in
+any release. Different Polaris jars may have different minimal JRE version 
requirements.
+
+Changes in Java class should be expected at any time regardless of the module 
name or
+whether the class / method is `public` or not.
+
+This approach is not meant to discourage the use of Polaris code in downstream 
projects, but
+to allow more flexibility in evolving the codebase to support new 
catalog-level features
+and improve code efficiency. Maintainers of downstream projects are encouraged 
to join Polaris 
+mailing lists to monitor project changes, suggest improvements, and engage 
with the Polaris
+community in case of specific compatibility concerns.   
+
+## Semantic Versioning
+
+Polaris strives to follow [Semantic Versioning](https://semver.org/) 
conventions both with
+respect to REST APIs (beta and experimental APIs excepted), [Polaris 
Policies](../policy/)
+and user-facing [configuration](../configuration/).
+
+The following are some examples of Polaris approach to SemVer in REST APIs / 
configuration.
+These examples are for illustration purposes and should not be considered to be
+exhaustive.
+
+* Polaris implementing an optional Iceberg REST Catalog feature that was 
unimplemented
+in the previous release is not considered a major change.
+
+* Supporting a new revision of the Iceberg REST Catalog spec in a 
backward-compatible way
+is not considered a major change. Specifically, supporting new REST API 
prefixes (e.g. `v2`)
+is not a major change because it does not affect older clients.
+
+* Changing the implementation of an Iceberg REST Catalog feature / endpoint in 
a non-backward
+compatible way (e.g. removing or renaming a request parameter) is a major 
change.
+
+* Dropping support for a configuration property with the `polaris.` name 
prefix is a major change.
+
+* Dropping support for any previously defined [Policy](../policy/) type or 
property is a major change.
+
+* Upgrading Quarkus Runtime to its next major version is a major change 
(because
+Quarkus-managed configuration may change).   

Reply via email to