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