From c6895fe4e32bbe9cb2c6c55cd24e71ea652b509a Mon Sep 17 00:00:00 2001
From: Gwendolyn <93234034+GwendolynK@users.noreply.github.com>
Date: Wed, 13 Aug 2025 10:11:39 -0700
Subject: [PATCH 1/5] chore: New blog - Binary Compatibility
Added new blog to openela.org site by Greg Marsden about the ELValidated
project.
Signed-off-by: Gwendolyn <93234034+GwendolynK@users.noreply.github.com>
---
content/blog/binary-compatibility.md | 38 +++++++++++++++++++++
layouts/partials/css.html | 49 +++++++++++++++-------------
2 files changed, 65 insertions(+), 22 deletions(-)
create mode 100644 content/blog/binary-compatibility.md
diff --git a/content/blog/binary-compatibility.md b/content/blog/binary-compatibility.md
new file mode 100644
index 0000000..411eecf
--- /dev/null
+++ b/content/blog/binary-compatibility.md
@@ -0,0 +1,38 @@
+---
+title: Binary Compatibility
+slug: binary-compatibility
+date: 2025-08-13T09:48:02-07:00
+author: Greg Marsden
+---
+
+[Recently, the OpenELA project announced the ELValidated project](https://urldefense.com/v3/__https:/openela.org/blog/elvalidated-compatibility-toolset/__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrwcrjyjM$), which introduces a cross-vendor compatibility test suite for Enterprise Linux operating systems. Oracle is proud to participate in that project. In this post, we'll discuss why binary compatibility is important, how we are using ELValidated in our build infrastructure, and what this means for our customers.
+
+## Why is Binary Compatibility important?
+
+Binary compatibility refers to the ability for an executable to load and run in a particular operating environment. To a developer, this means that the system calls, library calls, and data structures are interoperable; to the user, this means that their programs will "just work". No need for porting, recompilation or relinking.
+
+Since we launched more than 15 years ago, binary compatibility has been a cornerstone of the Oracle Linux promise: ["100% application binary compatible with Red Hat Enterprise Linux (RHEL)."](https://www.oracle.com/a/ocom/docs/linux/oracle-linux-ds.pdf), and we've had a great track record of maintaining that compatibility. Binary compatibility has been a key to our competitiveness and success over the years, because it makes it easy for customers to try out our products and support.
+
+## Does Binary Compatibility extend to the kernel?
+
+Perhaps counter-intuitively, the kernel is the easiest place to maintain binary compatibility. The Linux kernel has long held an iron-clad stance on the separation between kernel and userspace, [\[we blogged about that here\]](https://blogs.oracle.com/linux/post/userspace-vs-kernelspace-understanding-the-divide) and the kernel is basically guaranteed to work with userspace.
+
+The way the kernel enforces binary compatibility for userspace comes down to the kernel-headers package. The kernel-headers package includes the header files that userspace programs link against at compile time, and provides the minimum kernel version that the userspace program is guaranteed to work with. This may be different from the running kernel, and also may be different from the kernel that was used on the build system\! As an example, a program could be compiled on a system running the 6.4 kernel, with kernel headers from 5.15, and running on a system with kernel 6.10, and it'll all work just fine. Because the running version (6.10) is greater than the kernel-headers (5.15), the kernel-userspace binary interface is guaranteed.
+
+This is also how we can provide a modern enterprise kernel (UEK) with Oracle Linux with full confidence that user applications will work as designed, without modification, since the kernel-headers are preserved from the base EL versions.
+
+## How does Binary Compatibility work for userspace libraries?
+
+Like the kernel, userspace uses headers to enforce the interface between libraries and binaries. Each library sets its own rules about versioning and compatibility, which can be different for every library on the system. That's where ELValidated comes in \-- using the ABI compatibility tools that are part of libabigail, ELValidated checks the ABI signatures of the packages on an Enterprise Linux distribution and verifies that they match the compatibility standard released by OpenELA. This ensures that applications will "see" the expected interfaces and will work correctly. This is explained in greater detail on the ELValidated page.
+
+## How does Oracle use ELValidated?
+
+Oracle has integrated libabigail and the ELValidated suite into our build and release processes. Even as we were developing the tool, we could see the benefit of extracting and archiving the ABI signature of libraries and executables, and we've enabled the ELValidated tools in our build and release pipeline, so in addition to traditional validation checks we're also extracting the XML describing that program's interfaces, and comparing them with the OpenELA standards.
+
+## What does ELValidated mean for users and customers? What next?
+
+Oracle Linux is 100% application binary compatible with the ELValidated ecosystem. Use Oracle Linux or an OS from the other OpenELA members and rest assured that your applications will interoperate across the OS vendor platforms.
+
+Though the [test suite](https://urldefense.com/v3/__https:/github.com/openela/ELValidated-abi__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPri5JH1Bk$) and [compatibility APIs](https://urldefense.com/v3/__https:/github.com/openela/Compatibility__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrN0nLXNU$) are open source and available for your inspection, it's your OS vendor who is responsible for testing, validating and advertising that their offering is [ELValidated](https://urldefense.com/v3/__https:/openela.org/blog/elvalidated-compatibility-toolset/__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrwcrjyjM$).
+
+ELValidated provides benefits to end users, and software and hardware vendors in the Enterprise Linux market. Customers who select an ELValidated OS can confidently run software designed for the Enterprise Linux ecosystem, while application vendors can trust that software tested on one ELValidated platform will function seamlessly on another.
diff --git a/layouts/partials/css.html b/layouts/partials/css.html
index 0e7ae06..e99b2f1 100644
--- a/layouts/partials/css.html
+++ b/layouts/partials/css.html
@@ -1,22 +1,27 @@
-{{- $inServerMode := .Site.IsServer }}
-{{- $sass := "style.sass" }}
-{{- $cssTarget := "css/style.css" }}
-{{- $cssOpts := cond ($inServerMode) (dict "targetPath" $cssTarget "enableSourceMap" true) (dict "targetPath" $cssTarget "outputStyle" "compressed") }}
-{{- $fontName := .Site.Params.font.name | default "Open Sans" }}
-{{- $fontFace := replace $fontName " " "+" }}
-{{- $fontSizes := delimit (.Site.Params.font.sizes | default (slice 300 400 600 700)) "," }}
-{{- $fontUrl := printf "https://fonts.googleapis.com/css?family=%s:%s" $fontFace $fontSizes }}
-
-
-{{- if $inServerMode }}
-{{- $css := resources.Get $sass | toCSS $cssOpts }}
-
-{{- else }}
-{{- $css := resources.Get $sass | toCSS $cssOpts | minify | fingerprint }}
-
-{{- end }}
-
-
-
-
-
+{{- $inServerMode := hugo.IsServer -}} {{- $sass := "style.sass" }} {{-
+$cssTarget := "css/style.css" }} {{- $cssOpts := cond ($inServerMode) (dict
+"targetPath" $cssTarget "enableSourceMap" true) (dict "targetPath" $cssTarget
+"outputStyle" "compressed") }} {{- $fontName := .Site.Params.font.name | default
+"Open Sans" }} {{- $fontFace := replace $fontName " " "+" }} {{- $fontSizes :=
+delimit (.Site.Params.font.sizes | default (slice 300 400 600 700)) "," }} {{-
+$fontUrl := printf "https://fonts.googleapis.com/css?family=%s:%s" $fontFace
+$fontSizes }}
+
+{{- if $inServerMode }} {{- $css := resources.Get $sass | toCSS $cssOpts }}
+
+{{- else }} {{- $css := resources.Get $sass | toCSS $cssOpts | minify |
+fingerprint }}
+
+{{- end }}
From 06b27e3c84e86b4f861ee56553207621d266d583 Mon Sep 17 00:00:00 2001
From: Gwendolyn <93234034+GwendolynK@users.noreply.github.com>
Date: Wed, 13 Aug 2025 10:15:05 -0700
Subject: [PATCH 2/5] Undo reformatting of layouts/partials/css.html
Undo of the format on save my editor applied
Signed-off-by: Gwendolyn <93234034+GwendolynK@users.noreply.github.com>
---
layouts/partials/css.html | 49 ++++++++++++++++++---------------------
1 file changed, 22 insertions(+), 27 deletions(-)
diff --git a/layouts/partials/css.html b/layouts/partials/css.html
index e99b2f1..e28b53c 100644
--- a/layouts/partials/css.html
+++ b/layouts/partials/css.html
@@ -1,27 +1,22 @@
-{{- $inServerMode := hugo.IsServer -}} {{- $sass := "style.sass" }} {{-
-$cssTarget := "css/style.css" }} {{- $cssOpts := cond ($inServerMode) (dict
-"targetPath" $cssTarget "enableSourceMap" true) (dict "targetPath" $cssTarget
-"outputStyle" "compressed") }} {{- $fontName := .Site.Params.font.name | default
-"Open Sans" }} {{- $fontFace := replace $fontName " " "+" }} {{- $fontSizes :=
-delimit (.Site.Params.font.sizes | default (slice 300 400 600 700)) "," }} {{-
-$fontUrl := printf "https://fonts.googleapis.com/css?family=%s:%s" $fontFace
-$fontSizes }}
-
-{{- if $inServerMode }} {{- $css := resources.Get $sass | toCSS $cssOpts }}
-
-{{- else }} {{- $css := resources.Get $sass | toCSS $cssOpts | minify |
-fingerprint }}
-
-{{- end }}
+{{- $inServerMode := hugo.IsServer -}}
+{{- $sass := "style.sass" }}
+{{- $cssTarget := "css/style.css" }}
+{{- $cssOpts := cond ($inServerMode) (dict "targetPath" $cssTarget "enableSourceMap" true) (dict "targetPath" $cssTarget "outputStyle" "compressed") }}
+{{- $fontName := .Site.Params.font.name | default "Open Sans" }}
+{{- $fontFace := replace $fontName " " "+" }}
+{{- $fontSizes := delimit (.Site.Params.font.sizes | default (slice 300 400 600 700)) "," }}
+{{- $fontUrl := printf "https://fonts.googleapis.com/css?family=%s:%s" $fontFace $fontSizes }}
+
+
+{{- if $inServerMode }}
+{{- $css := resources.Get $sass | toCSS $cssOpts }}
+
+{{- else }}
+{{- $css := resources.Get $sass | toCSS $cssOpts | minify | fingerprint }}
+
+{{- end }}
+
+
+
+
+
\ No newline at end of file
From 23cd5b03d63429a2e074b58a2784319acdaa7a4e Mon Sep 17 00:00:00 2001
From: Gwendolyn <93234034+GwendolynK@users.noreply.github.com>
Date: Wed, 13 Aug 2025 10:55:44 -0700
Subject: [PATCH 3/5] Add canonical URL to frontmatter
Signed-off-by: Gwendolyn <93234034+GwendolynK@users.noreply.github.com>
---
content/blog/binary-compatibility.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/content/blog/binary-compatibility.md b/content/blog/binary-compatibility.md
index 411eecf..80e4476 100644
--- a/content/blog/binary-compatibility.md
+++ b/content/blog/binary-compatibility.md
@@ -3,6 +3,7 @@ title: Binary Compatibility
slug: binary-compatibility
date: 2025-08-13T09:48:02-07:00
author: Greg Marsden
+canonicalUrl: https://blogs.oracle.com/linux/post/binary-compatibility
---
[Recently, the OpenELA project announced the ELValidated project](https://urldefense.com/v3/__https:/openela.org/blog/elvalidated-compatibility-toolset/__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrwcrjyjM$), which introduces a cross-vendor compatibility test suite for Enterprise Linux operating systems. Oracle is proud to participate in that project. In this post, we'll discuss why binary compatibility is important, how we are using ELValidated in our build infrastructure, and what this means for our customers.
From 5c8fb8f78c177dfb21705aedcbeb7bc2f86d8784 Mon Sep 17 00:00:00 2001
From: "Chris \"Not So\" Short"
Date: Thu, 11 Sep 2025 15:22:41 -0400
Subject: [PATCH 4/5] Removing urldefense links per request
Signed-off-by: Chris "Not So" Short
---
content/blog/binary-compatibility.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/blog/binary-compatibility.md b/content/blog/binary-compatibility.md
index 80e4476..bdb31fd 100644
--- a/content/blog/binary-compatibility.md
+++ b/content/blog/binary-compatibility.md
@@ -6,7 +6,7 @@ author: Greg Marsden
canonicalUrl: https://blogs.oracle.com/linux/post/binary-compatibility
---
-[Recently, the OpenELA project announced the ELValidated project](https://urldefense.com/v3/__https:/openela.org/blog/elvalidated-compatibility-toolset/__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrwcrjyjM$), which introduces a cross-vendor compatibility test suite for Enterprise Linux operating systems. Oracle is proud to participate in that project. In this post, we'll discuss why binary compatibility is important, how we are using ELValidated in our build infrastructure, and what this means for our customers.
+[Recently, the OpenELA project announced the ELValidated project](https:/openela.org/blog/elvalidated-compatibility-toolset/), which introduces a cross-vendor compatibility test suite for Enterprise Linux operating systems. Oracle is proud to participate in that project. In this post, we'll discuss why binary compatibility is important, how we are using ELValidated in our build infrastructure, and what this means for our customers.
## Why is Binary Compatibility important?
@@ -34,6 +34,6 @@ Oracle has integrated libabigail and the ELValidated suite into our build and re
Oracle Linux is 100% application binary compatible with the ELValidated ecosystem. Use Oracle Linux or an OS from the other OpenELA members and rest assured that your applications will interoperate across the OS vendor platforms.
-Though the [test suite](https://urldefense.com/v3/__https:/github.com/openela/ELValidated-abi__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPri5JH1Bk$) and [compatibility APIs](https://urldefense.com/v3/__https:/github.com/openela/Compatibility__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrN0nLXNU$) are open source and available for your inspection, it's your OS vendor who is responsible for testing, validating and advertising that their offering is [ELValidated](https://urldefense.com/v3/__https:/openela.org/blog/elvalidated-compatibility-toolset/__;!!ACWV5N9M2RV99hQ!Jbrk5w-c4h4QRuY7OwsJ5l6Q_vtB3pPh9kLm_mUQ_vMVBhL2Zs1l70KdDVwVHfSo18EdzaWUElPrwcrjyjM$).
+Though the [test suite](https:/github.com/openela/ELValidated-abi) and [compatibility APIs](https:/github.com/openela/Compatibility) are open source and available for your inspection, it's your OS vendor who is responsible for testing, validating and advertising that their offering is [ELValidated](https:/openela.org/blog/elvalidated-compatibility-toolset/).
ELValidated provides benefits to end users, and software and hardware vendors in the Enterprise Linux market. Customers who select an ELValidated OS can confidently run software designed for the Enterprise Linux ecosystem, while application vendors can trust that software tested on one ELValidated platform will function seamlessly on another.
From c98fecf80258669c83daa3a5bb6a5a8f8212c7e1 Mon Sep 17 00:00:00 2001
From: "Chris \"Not So\" Short"
Date: Thu, 11 Sep 2025 15:23:57 -0400
Subject: [PATCH 5/5] Delete layouts/partials/css.html
Signed-off-by: Chris "Not So" Short
---
layouts/partials/css.html | 22 ----------------------
1 file changed, 22 deletions(-)
delete mode 100644 layouts/partials/css.html
diff --git a/layouts/partials/css.html b/layouts/partials/css.html
deleted file mode 100644
index e28b53c..0000000
--- a/layouts/partials/css.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{{- $inServerMode := hugo.IsServer -}}
-{{- $sass := "style.sass" }}
-{{- $cssTarget := "css/style.css" }}
-{{- $cssOpts := cond ($inServerMode) (dict "targetPath" $cssTarget "enableSourceMap" true) (dict "targetPath" $cssTarget "outputStyle" "compressed") }}
-{{- $fontName := .Site.Params.font.name | default "Open Sans" }}
-{{- $fontFace := replace $fontName " " "+" }}
-{{- $fontSizes := delimit (.Site.Params.font.sizes | default (slice 300 400 600 700)) "," }}
-{{- $fontUrl := printf "https://fonts.googleapis.com/css?family=%s:%s" $fontFace $fontSizes }}
-
-
-{{- if $inServerMode }}
-{{- $css := resources.Get $sass | toCSS $cssOpts }}
-
-{{- else }}
-{{- $css := resources.Get $sass | toCSS $cssOpts | minify | fingerprint }}
-
-{{- end }}
-
-
-
-
-
\ No newline at end of file