diff mbox

[v2] doc: release-guide: add LTS details

Message ID 1470998304-32698-1-git-send-email-mike.holmes@linaro.org
State Superseded
Headers show

Commit Message

Mike Holmes Aug. 12, 2016, 10:38 a.m. UTC
Signed-off-by: Mike Holmes <mike.holmes@linaro.org>

---
v2
   clean up to text (Bill)
   Added comment on bisect ability on patch acceptance

 doc/process-guide/release-guide.adoc | 52 ++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

-- 
2.7.4

Comments

Bill Fischofer Aug. 12, 2016, 2:22 p.m. UTC | #1
On Fri, Aug 12, 2016 at 5:38 AM, Mike Holmes <mike.holmes@linaro.org> wrote:

> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>

> ---

> v2

>    clean up to text (Bill)

>    Added comment on bisect ability on patch acceptance

>

>  doc/process-guide/release-guide.adoc | 52 ++++++++++++++++++++++++++++++

> ++++++

>  1 file changed, 52 insertions(+)

>

> diff --git a/doc/process-guide/release-guide.adoc

> b/doc/process-guide/release-guide.adoc

> index 788eb6b..24e7545 100644

> --- a/doc/process-guide/release-guide.adoc

> +++ b/doc/process-guide/release-guide.adoc

> @@ -83,6 +83,7 @@ repository.

>

>  All patches are acknowledged on the list as soon as they have been

> applied to

>  the repository.

> +No patch may be accepted that knowingly breaks git bisect.

>

>  === api-next ===

>  * api-next is always rebased on top of master when there is a release

> point in

> @@ -115,6 +116,57 @@ atomically as possible

>  * the maintainer updates the version number

>  * the maintainer tags the master branch

>

> +=== Long Term Support (LTS)

> +ODP is portable at two levels, at a recompiled common API level for

> maximum

> +performance, and in a more portable way at an ABI level which may

> sacrifice

> +some performance.

> +

> +===== odp-linux API and APB compatibility

> +In the odp-linux case, the Linux Operating System (OS) provides a

> mechanism for

> +ensuring ABI compatibility with the .so naming for shared libraries. This

> OS

> +specific number provides different definitions for the digits to the ODP

> API

> +version definition and will likely differ. Other OS'es may use other

> schemes.

> +

> +==== Vendor implementations

> +Vendors of ODP are said to be compatible with the ODP API if the

> implementation

> +can pass the validation test suite for the API. This means that

> supporting the

> +ABI mode is not required; a statically built and executed test suite is

> all that

> +is required.

> +

> +==== API compatibility

> +ODP allows implementations of the API to modify the structures. In this

> case

> +application portability is maintained through access functions to the

> data rather

> +than direct structure access. In an embedded use case this allows maximum

> +performance with the hardware structures mapping directly to the data

> structures

> +manipulated by the CPU. Applications are compiled for the target

> +system directly and are usually statically linked.

>


This is somewhat confusing. The reference to "the structures" here is
ambiguous and not accurate. ODP does define some structs as part of its API
(e.g., the various odp_xxx_param_t and odp_xxx_capability_t objects are
explicitly defined as structs in the API) and these are not subject to
modification by any implementation since they are part of the API
specification. What I believe you're referring to is the fact that
implementations are free to use structs internally in how they implement
other ODP data types like odp_packet_t, but any application visibility into
these objects is only done via access functions rather than exposing these
internal structs. The key API vs. ABI distinction here is that in ABI mode
these access functions are actual function calls into the shared library
while in non-ABI mode they may be expanded as inline functions that have
knowledge of these internals, which may result in improved performance at
the cost of loss of ABI compatibility.

+
> +==== ABI compatibility

> +In a more traditional system where a possible performance penalty can be

> more

>


Perhaps "non-embedded environments" may be better here than "traditional
system"?


> +acceptable a shared library is likely to be used and it must maintain ABI

> +compatibility across that architecture. In this case applications do not

> require

> +recompiling.

> +

> +===== Checking which .so version number is required on change

> +To determine if the .so number should be changed the check-odp tool can

> provide

> +the answer. This tool provides a command line summary and a detailed html

> +analysis. This tool is based on the abi-compliance-checker

> +

> +[source,bash]

> +----

> +COMPARE_BRANCH=monarch_lts ./diff-abi.sh

> +

> +...

> +preparation, please wait ...

> +comparing ABIs ...

> +comparing APIs ...

> +creating compatibility report ...

> +result: COMPATIBLE

> +total "Binary" compatibility problems: 0, warnings: 0

> +total "Source" compatibility problems: 0, warnings: 0

> +....

> +----

> +

>  == Releases ==

>  All releases are from a tag in the master branch of the ODP git

>  repository. Recall that ODP consists of three separate components:

> --

> 2.7.4

>

>
diff mbox

Patch

diff --git a/doc/process-guide/release-guide.adoc b/doc/process-guide/release-guide.adoc
index 788eb6b..24e7545 100644
--- a/doc/process-guide/release-guide.adoc
+++ b/doc/process-guide/release-guide.adoc
@@ -83,6 +83,7 @@  repository.
 
 All patches are acknowledged on the list as soon as they have been applied to
 the repository.
+No patch may be accepted that knowingly breaks git bisect.
 
 === api-next ===
 * api-next is always rebased on top of master when there is a release point in
@@ -115,6 +116,57 @@  atomically as possible
 * the maintainer updates the version number
 * the maintainer tags the master branch
 
+=== Long Term Support (LTS)
+ODP is portable at two levels, at a recompiled common API level for maximum
+performance, and in a more portable way at an ABI level which may sacrifice
+some performance.
+
+===== odp-linux API and APB compatibility
+In the odp-linux case, the Linux Operating System (OS) provides a mechanism for
+ensuring ABI compatibility with the .so naming for shared libraries. This OS
+specific number provides different definitions for the digits to the ODP API
+version definition and will likely differ. Other OS'es may use other schemes.
+
+==== Vendor implementations
+Vendors of ODP are said to be compatible with the ODP API if the implementation
+can pass the validation test suite for the API. This means that supporting the
+ABI mode is not required; a statically built and executed test suite is all that
+is required.
+
+==== API compatibility
+ODP allows implementations of the API to modify the structures. In this case
+application portability is maintained through access functions to the data rather
+than direct structure access. In an embedded use case this allows maximum
+performance with the hardware structures mapping directly to the data structures
+manipulated by the CPU. Applications are compiled for the target
+system directly and are usually statically linked.
+
+==== ABI compatibility
+In a more traditional system where a possible performance penalty can be more
+acceptable a shared library is likely to be used and it must maintain ABI
+compatibility across that architecture. In this case applications do not require
+recompiling.
+
+===== Checking which .so version number is required on change
+To determine if the .so number should be changed the check-odp tool can provide
+the answer. This tool provides a command line summary and a detailed html
+analysis. This tool is based on the abi-compliance-checker
+
+[source,bash]
+----
+COMPARE_BRANCH=monarch_lts ./diff-abi.sh
+
+...
+preparation, please wait ...
+comparing ABIs ...
+comparing APIs ...
+creating compatibility report ...
+result: COMPATIBLE
+total "Binary" compatibility problems: 0, warnings: 0
+total "Source" compatibility problems: 0, warnings: 0
+....
+----
+
 == Releases ==
 All releases are from a tag in the master branch of the ODP git
 repository. Recall that ODP consists of three separate components: