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

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git


The following commit(s) were added to refs/heads/master by this push:
     new 8fa4f895b Extract ADR: axiom-api should only contain public API
8fa4f895b is described below

commit 8fa4f895b16979228b01691680ef22ed42600105
Author: Andreas Veithen-Knowles <[email protected]>
AuthorDate: Sat Feb 21 22:10:29 2026 +0000

    Extract ADR: axiom-api should only contain public API
---
 docs/adr/0001-no-impl-in-axiom-api.md | 40 +++++++++++++++++++++++++++++++++++
 docs/roadmap.md                       | 30 +++-----------------------
 2 files changed, 43 insertions(+), 27 deletions(-)

diff --git a/docs/adr/0001-no-impl-in-axiom-api.md 
b/docs/adr/0001-no-impl-in-axiom-api.md
new file mode 100644
index 000000000..4973d6f4b
--- /dev/null
+++ b/docs/adr/0001-no-impl-in-axiom-api.md
@@ -0,0 +1,40 @@
+<!--
+  ~ 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.
+  -->
+
+`axiom-api` should only contain public API
+===========================================
+
+## Decision
+
+`axiom-api` should only contain Axiom's public API. All shared implementation
+classes must be moved out of `axiom-api` (to `om-aspects` or another 
appropriate
+module).
+
+## Rationale
+
+*   The more compact the public API is, the easier it is for users to 
understand the
+    API and to locate the features they are looking for.
+
+*   By definition, anything that is not part of the public API can be modified
+    without the risk of breaking application code. Clarifying the distinction 
between
+    the public API and internal implementation classes therefore gives the 
project
+    more flexibility to implement changes.
+
+*   Having a well defined abstract API allows to create alternative 
implementations
+    of that API.
diff --git a/docs/roadmap.md b/docs/roadmap.md
index a7db25939..cb982b4ef 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -64,34 +64,10 @@ Axiom 1.3 to meet the following requirements:
 
 ### Classes to be moved from `axiom-api` to `om-aspects`
 
-Up to version 1.2.12, the core Axiom code was organized in three modules,
-namely `axiom-api`, `axiom-impl` and `axiom-dom`, where `axiom-api`
-contains both the public API as well as implementation classes shared by LLOM 
and DOOM.
-Unfortunately the distinction between the public API and these shared 
implementation
-classes has become somewhat blurred over time. In Axiom 1.2.13 a new module
-called `axiom-common-impl` was introduced with the specific goal of separating 
the
-shared implementation classes from the public API; with the introduction of 
AspectJ
-in Axiom 1.2.15 this module is now called `om-aspects`.
-
-However, in Axiom 1.2.x it is generally not possible to move classes from
-`axiom-api` to `om-aspects` without the risk of breaking existing code.
+As described in the [`axiom-api` should only contain public 
API](adr/0001-no-impl-in-axiom-api.md)
+ADR, `axiom-api` should only contain Axiom's public API.
 A new major release gives us the opportunity to move the existing shared 
classes to
-`om-aspects` as well, so that in Axiom 1.3, `axiom-api` will only
-contain Axiom's public API. This is one of the important goals for Axiom 1.3
-because it has multiple benefits:
-  
-*   The more compact the public API is, the easier it is for users to 
understand the
-    API and to locate the features they are looking for.
-
-*   By definition, anything that is not part of the public API can be modified
-    without the risk of breaking application code. Clarifying the distinction 
between
-    the public API and internal implementation classes therefore gives the 
project
-    more flexibility to implement changes.
-
-*   Having a well defined abstract API allows to create alternative 
implementations
-    of that API.
-  
-This section identifies the classes and internal APIs that will be removed
+`om-aspects` as well. This section identifies the classes and internal APIs 
that will be removed
 from `axiom-api`.
 
 #### Builder implementations

Reply via email to