You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wayang.apache.org by gi...@apache.org on 2026/05/26 07:29:06 UTC
(wayang-website) branch deploy updated: deploy: b08b7ea51b384ade91c241165590a621a28407be
This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch deploy
in repository https://gitbox.apache.org/repos/asf/wayang-website.git
The following commit(s) were added to refs/heads/deploy by this push:
new 460e5eb4 deploy: b08b7ea51b384ade91c241165590a621a28407be
460e5eb4 is described below
commit 460e5eb483b35c80c1ebf9f8b840b4334c186ce9
Author: novatechflow <no...@users.noreply.github.com>
AuthorDate: Tue May 26 07:29:02 2026 +0000
deploy: b08b7ea51b384ade91c241165590a621a28407be
---
404.html | 8 +-
assets/css/styles.a45e1e19.css | 1 +
assets/css/styles.af2ccd7c.css | 1 -
.../{17896441.d114e7d2.js => 17896441.582cdf9b.js} | 2 +-
assets/js/25517a24.baffbd34.js | 1 +
assets/js/2de9ff66.2e8f1a76.js | 1 -
assets/js/2de9ff66.336f3d1c.js | 1 +
assets/js/35234f08.06be7938.js | 1 +
assets/js/35234f08.8d74a522.js | 1 -
assets/js/64eed6c4.2021ec01.js | 1 -
assets/js/64eed6c4.4ac392f1.js | 1 +
assets/js/7941a8d8.5b0d60a3.js | 1 -
assets/js/7941a8d8.d549bd63.js | 1 +
assets/js/935f2afb.2c82f129.js | 1 -
assets/js/935f2afb.a35648c6.js | 1 +
.../{a94703ab.d7851695.js => a94703ab.43a301eb.js} | 2 +-
assets/js/cc6c0e90.2044448d.js | 1 +
assets/js/d8224fc8.f5558226.js | 1 -
assets/js/ded07547.660fa9e3.js | 1 -
assets/js/ded07547.92578126.js | 1 +
assets/js/f8667543.b71eb24c.js | 1 +
assets/js/main.30b76d51.js | 2 +
...js.LICENSE.txt => main.30b76d51.js.LICENSE.txt} | 0
assets/js/main.588705f8.js | 2 -
assets/js/runtime~main.195a2256.js | 1 -
assets/js/runtime~main.4cf1dd41.js | 1 +
blog/archive/index.html | 8 +-
blog/index.html | 8 +-
blog/kafka-meets-wayang-1/index.html | 8 +-
blog/kafka-meets-wayang-2/index.html | 8 +-
blog/kafka-meets-wayang-3/index.html | 8 +-
blog/tags/ai/index.html | 8 +-
blog/tags/asf/index.html | 8 +-
.../index.html | 8 +-
blog/tags/federated/index.html | 8 +-
blog/tags/graduation/index.html | 8 +-
blog/tags/index.html | 8 +-
blog/tags/kafka/index.html | 8 +-
blog/tags/ml/index.html | 8 +-
blog/tags/presto/index.html | 8 +-
blog/tags/python/index.html | 8 +-
blog/tags/release/index.html | 8 +-
blog/tags/spark/index.html | 8 +-
blog/tags/tensorflow/index.html | 8 +-
blog/tags/tlp/index.html | 8 +-
blog/tags/trino/index.html | 8 +-
blog/tags/wayang/index.html | 8 +-
blog/wayang-federated-ai/index.html | 8 +-
blog/wayang-graduation/index.html | 8 +-
blog/wayang-python-api/index.html | 8 +-
blog/wayang-release-odysse/index.html | 8 +-
blog/wayang-tensorflow/index.html | 8 +-
blog/wayang-vs-trino/index.html | 8 +-
blog/website_update/index.html | 8 +-
docs/community/ai-tooling-policy/index.html | 39 +++++
docs/community/committer/index.html | 8 +-
docs/community/contribute/index.html | 8 +-
docs/community/mailinglist/index.html | 8 +-
docs/community/maturity/index.html | 8 +-
docs/community/release/index.html | 8 +-
docs/community/repositories/index.html | 8 +-
docs/community/resources/index.html | 10 +-
docs/community/security/index.html | 10 +-
docs/community/team/index.html | 8 +-
docs/guide/adding-operators/index.html | 8 +-
docs/guide/api-documentation/index.html | 8 +-
docs/guide/developing-in-wayang/index.html | 8 +-
docs/guide/examples/index.html | 140 ++++++++++++---
docs/guide/getting-started/index.html | 189 ++++++++-------------
docs/guide/installation/index.html | 14 +-
docs/guide/json-wayang-plan-guide/index.html | 8 +-
docs/guide/ml4all/index.html | 10 +-
docs/guide/optimizer/index.html | 8 +-
docs/guide/wayang-docker/index.html | 8 +-
docs/introduction/about/index.html | 8 +-
docs/introduction/benchmark/index.html | 8 +-
docs/introduction/features/index.html | 8 +-
docs/start/download/index.html | 8 +-
img/wayang-architecture.svg | 78 +++++++++
index.html | 8 +-
lunr-index-1779524901719.json | 1 -
lunr-index-1779780497213.json | 1 +
lunr-index.json | 2 +-
search-doc-1779524901719.json | 1 -
search-doc-1779780497213.json | 1 +
search-doc.json | 2 +-
sitemap.xml | 2 +-
87 files changed, 536 insertions(+), 368 deletions(-)
diff --git a/404.html b/404.html
index 28ffa918..1099ad7d 100644
--- a/404.html
+++ b/404.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Page Not Found | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/404.html"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/assets/css/styles.a45e1e19.css b/assets/css/styles.a45e1e19.css
new file mode 100644
index 00000000..f4e79a60
--- /dev/null
+++ b/assets/css/styles.a45e1e19.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.butt [...]
\ No newline at end of file
diff --git a/assets/css/styles.af2ccd7c.css b/assets/css/styles.af2ccd7c.css
deleted file mode 100644
index 743763e0..00000000
--- a/assets/css/styles.af2ccd7c.css
+++ /dev/null
@@ -1 +0,0 @@
-.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.butt [...]
\ No newline at end of file
diff --git a/assets/js/17896441.d114e7d2.js b/assets/js/17896441.582cdf9b.js
similarity index 99%
rename from assets/js/17896441.d114e7d2.js
rename to assets/js/17896441.582cdf9b.js
index 5f02a53d..037cbd31 100644
--- a/assets/js/17896441.d114e7d2.js
+++ b/assets/js/17896441.582cdf9b.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[8401],{5022(e,t,n){n.r(t),n.d(t,{default:()=>ve});var s=n(6540),a=n(1003),i=n(9532),o=n(4848);const l=s.createContext(null);function r({children:e,content:t}){const n=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(t);return(0,o.jsx)(l.Provider,{value:n,children:e})}function c(){const e=(0,s [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[8401],{5022(e,t,n){n.r(t),n.d(t,{default:()=>ve});var s=n(6540),a=n(1003),i=n(9532),o=n(4848);const l=s.createContext(null);function r({children:e,content:t}){const n=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(t);return(0,o.jsx)(l.Provider,{value:n,children:e})}function c(){const e=(0,s [...]
\ No newline at end of file
diff --git a/assets/js/25517a24.baffbd34.js b/assets/js/25517a24.baffbd34.js
new file mode 100644
index 00000000..ff88630e
--- /dev/null
+++ b/assets/js/25517a24.baffbd34.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[3940],{328(e,a,n){n.r(a),n.d(a,{assets:()=>k,contentTitle:()=>Z,default:()=>G,frontMatter:()=>S,metadata:()=>N,toc:()=>B});var t=n(4848),i=n(8453),r=n(6540),o=n(4164),l=n(3104),s=n(6347),c=n(205),g=n(7485),d=n(1682),u=n(9466);function p(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:a}=e;return!!a&&"object"==typeof a&&" [...]
\ No newline at end of file
diff --git a/assets/js/2de9ff66.2e8f1a76.js b/assets/js/2de9ff66.2e8f1a76.js
deleted file mode 100644
index 50643f0c..00000000
--- a/assets/js/2de9ff66.2e8f1a76.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[6803],{7569(e,n,a){a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var i=a(4848),r=a(8453);const l={title:"How to build Wayang",sidebar_position:1,id:"installation"},t="Installing and building Apache Wayang",s={id:"guide/installation",title:"How to build Wayang",description:"\x3c!--",source:"@site/docs/guide/installation.md",source [...]
\ No newline at end of file
diff --git a/assets/js/2de9ff66.336f3d1c.js b/assets/js/2de9ff66.336f3d1c.js
new file mode 100644
index 00000000..67d79c57
--- /dev/null
+++ b/assets/js/2de9ff66.336f3d1c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[6803],{7569(e,n,a){a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=a(4848),l=a(8453);const r={title:"How to build Wayang",sidebar_position:2,id:"installation"},t="Installing and building Apache Wayang",s={id:"guide/installation",title:"How to build Wayang",description:"\x3c!--",source:"@site/docs/guide/installation.md",source [...]
\ No newline at end of file
diff --git a/assets/js/35234f08.06be7938.js b/assets/js/35234f08.06be7938.js
new file mode 100644
index 00000000..1a055b3b
--- /dev/null
+++ b/assets/js/35234f08.06be7938.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[1580],{5220(e,i,n){n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>o,toc:()=>l});var a=n(4848),s=n(8453);const t={},r="Wayang Security",o={id:"community/security",title:"Wayang Security",description:"The Apache Software Foundation (ASF) and the Apache Wayang community take security very seriously. Apache Wayang specifically provides robust secur [...]
\ No newline at end of file
diff --git a/assets/js/35234f08.8d74a522.js b/assets/js/35234f08.8d74a522.js
deleted file mode 100644
index 7c9f3cf7..00000000
--- a/assets/js/35234f08.8d74a522.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[1580],{5220(e,i,n){n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var a=n(4848),s=n(8453);const r={},t="Wayang Security",o={id:"community/security",title:"Wayang Security",description:"The Apache Software Foundation (ASF) and the Apache Wayang community take security very seriously. Apache Wayang specifically provides robust secur [...]
\ No newline at end of file
diff --git a/assets/js/64eed6c4.2021ec01.js b/assets/js/64eed6c4.2021ec01.js
deleted file mode 100644
index 685bab96..00000000
--- a/assets/js/64eed6c4.2021ec01.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[692],{5343(e,n,t){t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var a=t(4848),s=t(8453);const i={title:"Scalable Machine Learning",sidebar_position:3,id:"ml4all"},r="ML4all: scalable ML system for everyone",l={id:"guide/ml4all",title:"Scalable Machine Learning",description:"\x3c!--",source:"@site/docs/guide/ml4all.md",sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/64eed6c4.4ac392f1.js b/assets/js/64eed6c4.4ac392f1.js
new file mode 100644
index 00000000..e001fbdf
--- /dev/null
+++ b/assets/js/64eed6c4.4ac392f1.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[692],{5343(e,n,a){a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var t=a(4848),s=a(8453);const i={title:"Scalable Machine Learning",sidebar_position:3,id:"ml4all"},r="ML4all: scalable ML system for everyone",l={id:"guide/ml4all",title:"Scalable Machine Learning",description:"\x3c!--",source:"@site/docs/guide/ml4all.md",sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/7941a8d8.5b0d60a3.js b/assets/js/7941a8d8.5b0d60a3.js
deleted file mode 100644
index bec0f27d..00000000
--- a/assets/js/7941a8d8.5b0d60a3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[241],{8108(n,e,t){t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),a=t(8453);const o={title:"Usage Examples",sidebar_position:5,id:"examples"},r="Guide to Development and Usage with Apache Wayang",s={id:"guide/examples",title:"Usage Examples",description:"\x3c!--",source:"@site/docs/guide/usage-examples.md",sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/7941a8d8.d549bd63.js b/assets/js/7941a8d8.d549bd63.js
new file mode 100644
index 00000000..54c0b7be
--- /dev/null
+++ b/assets/js/7941a8d8.d549bd63.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[241],{8108(n,e,t){t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=t(4848),a=t(8453);const o={title:"Usage Examples",sidebar_position:5,id:"examples"},r="Guide to Development and Usage with Apache Wayang",s={id:"guide/examples",title:"Usage Examples",description:"\x3c!--",source:"@site/docs/guide/usage-examples.md",sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.2c82f129.js b/assets/js/935f2afb.2c82f129.js
deleted file mode 100644
index 7d9f8fde..00000000
--- a/assets/js/935f2afb.2c82f129.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[8581],{5610(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"startSidebar":[{"type":"link","label":"Download Apache Wayang\u2122","href":"/docs/start/download","docId":"start/download","unlisted":false}],"introductionSidebar":[{"type":"link","labe [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.a35648c6.js b/assets/js/935f2afb.a35648c6.js
new file mode 100644
index 00000000..050ab1c4
--- /dev/null
+++ b/assets/js/935f2afb.a35648c6.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[8581],{5610(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"startSidebar":[{"type":"link","label":"Download Apache Wayang\u2122","href":"/docs/start/download","docId":"start/download","unlisted":false}],"introductionSidebar":[{"type":"link","labe [...]
\ No newline at end of file
diff --git a/assets/js/a94703ab.d7851695.js b/assets/js/a94703ab.43a301eb.js
similarity index 98%
rename from assets/js/a94703ab.d7851695.js
rename to assets/js/a94703ab.43a301eb.js
index f0f82f63..cdc41904 100644
--- a/assets/js/a94703ab.d7851695.js
+++ b/assets/js/a94703ab.43a301eb.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[9048],{2559(e,t,n){n.r(t),n.d(t,{default:()=>fe});var a=n(6540),i=n(4164),s=n(1003),o=n(7559),r=n(1754),l=n(4207),c=n(1312),d=n(3104),u=n(5062);const m="backToTopButton_sjWU",b="backToTopButtonShow_xfvO";var h=n(4848);function p(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:o}=(0,d.gk)();return(0,d.Mq)( [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[9048],{2559(e,t,n){n.r(t),n.d(t,{default:()=>fe});var a=n(6540),i=n(4164),s=n(1003),o=n(7559),r=n(4142),l=n(4207),c=n(1312),d=n(3104),u=n(5062);const m="backToTopButton_sjWU",b="backToTopButtonShow_xfvO";var h=n(4848);function p(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:o}=(0,d.gk)();return(0,d.Mq)( [...]
\ No newline at end of file
diff --git a/assets/js/cc6c0e90.2044448d.js b/assets/js/cc6c0e90.2044448d.js
new file mode 100644
index 00000000..6ac62ce7
--- /dev/null
+++ b/assets/js/cc6c0e90.2044448d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[6070],{9222(e,n,a){a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=a(4848),t=a(8453);const o={title:"Installation and Examples",sidebar_position:10,id:"examples"},r=void 0,s={id:"guide/examples",title:"Installation and Examples",description:"\x3c!--",source:"@site/docs/guide/examples.md",sourceDirName:"guide",slug:"/guide/exa [...]
\ No newline at end of file
diff --git a/assets/js/d8224fc8.f5558226.js b/assets/js/d8224fc8.f5558226.js
deleted file mode 100644
index 72b75832..00000000
--- a/assets/js/d8224fc8.f5558226.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[1024],{1381(e,n,a){a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=a(4848),t=a(8453);const o={title:"Getting started",sidebar_position:2,id:"getting-started"},r=void 0,s={id:"guide/getting-started",title:"Getting started",description:"\x3c!--",source:"@site/docs/guide/getting-started.md",sourceDirName:"guide",slug:"/guide/get [...]
\ No newline at end of file
diff --git a/assets/js/ded07547.660fa9e3.js b/assets/js/ded07547.660fa9e3.js
deleted file mode 100644
index d7f529bf..00000000
--- a/assets/js/ded07547.660fa9e3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[7741],{185(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>u});var r=n(4848),i=n(8453);const s={id:"resources",title:"Community Resources & External Coverage",sidebar_position:8},a=void 0,o={id:"community/resources",title:"Community Resources & External Coverage",description:"Apache Wayang thrives because of the conversations, f [...]
\ No newline at end of file
diff --git a/assets/js/ded07547.92578126.js b/assets/js/ded07547.92578126.js
new file mode 100644
index 00000000..c26260f6
--- /dev/null
+++ b/assets/js/ded07547.92578126.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[7741],{185(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var r=n(4848),i=n(8453);const s={id:"resources",title:"Community Resources & External Coverage",sidebar_position:8},o=void 0,a={id:"community/resources",title:"Community Resources & External Coverage",description:"Apache Wayang thrives because of the conversations, f [...]
\ No newline at end of file
diff --git a/assets/js/f8667543.b71eb24c.js b/assets/js/f8667543.b71eb24c.js
new file mode 100644
index 00000000..6f752ffd
--- /dev/null
+++ b/assets/js/f8667543.b71eb24c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[7734],{3142(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var i=t(4848),o=t(8453);const s={},r="Guidelines for AI-assisted Contributions",a={id:"community/ai-tooling-policy",title:"Guidelines for AI-assisted Contributions",description:"The Apache Wayang community welcomes the use of AI and generative tooling as part of the [...]
\ No newline at end of file
diff --git a/assets/js/main.30b76d51.js b/assets/js/main.30b76d51.js
new file mode 100644
index 00000000..7588532b
--- /dev/null
+++ b/assets/js/main.30b76d51.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.30b76d51.js.LICENSE.txt */
+(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[8792],{8328(e,t,n){"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"05a94acb":[()=>n.e(6570).then(n.bind(n,8172)),"@site/docs/community/committer.md",8172],"06bc2d4d":[()=>n.e(2666).then(n.bind(n,3974)),"@site/blog/2024-04-17-federated-ai.md?truncated=true",3974],"09 [...]
\ No newline at end of file
diff --git a/assets/js/main.588705f8.js.LICENSE.txt b/assets/js/main.30b76d51.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.588705f8.js.LICENSE.txt
rename to assets/js/main.30b76d51.js.LICENSE.txt
diff --git a/assets/js/main.588705f8.js b/assets/js/main.588705f8.js
deleted file mode 100644
index 41d21935..00000000
--- a/assets/js/main.588705f8.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.588705f8.js.LICENSE.txt */
-(globalThis.webpackChunkwayang_website=globalThis.webpackChunkwayang_website||[]).push([[8792],{8328(e,t,n){"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"05a94acb":[()=>n.e(6570).then(n.bind(n,8172)),"@site/docs/community/committer.md",8172],"06bc2d4d":[()=>n.e(2666).then(n.bind(n,3974)),"@site/blog/2024-04-17-federated-ai.md?truncated=true",3974],"09 [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.195a2256.js b/assets/js/runtime~main.195a2256.js
deleted file mode 100644
index ef90dc02..00000000
--- a/assets/js/runtime~main.195a2256.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,a,d,f,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={exports:{}};return b[e].call(d.exports,d,d.exports,r),d.exports}r.m=b,e=[],r.O=(a,d,f,c)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){for(var[d,f,c]=e[i],t=!0,o=0;o<d.length;o++)(!1&c||b>=c)&&Object.keys(r.O).every(e=>r.O[e](d[o]))?d.splice(o--,1):(t=!1,c<b&&(b=c));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1 [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.4cf1dd41.js b/assets/js/runtime~main.4cf1dd41.js
new file mode 100644
index 00000000..85237d7e
--- /dev/null
+++ b/assets/js/runtime~main.4cf1dd41.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,f,d,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return b[e].call(f.exports,f,f.exports,r),f.exports}r.m=b,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){for(var[f,d,c]=e[i],t=!0,o=0;o<f.length;o++)(!1&c||b>=c)&&Object.keys(r.O).every(e=>r.O[e](f[o]))?f.splice(o--,1):(t=!1,c<b&&(b=c));if(t){e.splice(i--,1);var n=d();void 0!==n&&(a=n)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1 [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 6bf310bf..56f98941 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Archive | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/archive"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" n [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/blog/index.html b/blog/index.html
index 8dbedf49..7a541411 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Blog | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og: [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This graduation rewards the community-driven effort, research, innovation, and collaboration of many years. It reflects our shared commitment to open-source development and the growing importance of cross-platform data processing in the broader data ecosystem nowadays.
Graduating as an Apache Top-Level Project is an important recognition of the project’s maturity and ensures that Apache Wayang is backed by the full support and oversight of the ASF, guaranteeing openness, meritocracy, and a sustainable development model for years to come.</p>
<hr>
diff --git a/blog/kafka-meets-wayang-1/index.html b/blog/kafka-meets-wayang-1/index.html
index b77b868f..d19af22a 100644
--- a/blog/kafka-meets-wayang-1/index.html
+++ b/blog/kafka-meets-wayang-1/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Kafka meets Wayang - Part 1 | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/kafka-meets-wayang-1"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This article is the first of a four part series about federated data analysis using Apache Wayang.
The first article starts with an introduction of a typical data colaboration scenario which will emerge in our digital future.</p>
<p>In part two and three we will share a summary of our Apache Kafka client implementation for Apache Wayang.
diff --git a/blog/kafka-meets-wayang-2/index.html b/blog/kafka-meets-wayang-2/index.html
index c306c4d5..1becfa9a 100644
--- a/blog/kafka-meets-wayang-2/index.html
+++ b/blog/kafka-meets-wayang-2/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Kafka meets Wayang - Part 2 | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/kafka-meets-wayang-2"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
We look into the “Read- and Write-Path” for our data items, called <em>DataQuanta</em>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="apache-wayangs-read--write-path-for-kafka-topics">Apache Wayang’s Read & Write Path for Kafka topics<a href="#apache-wayangs-read--write-path-for-kafka-topics" class="hash-link" aria-label="Direct link to Apache Wayang’s Read & Write Path for Kafka topics" title="Direct link to Apache Wayang’s Read & Write Path for Kafka topics"></a></h2>
<p>To describe the read and write paths for data in the context of the created Apache Wayang code snippet, the primary classes and interfaces we need to understand are as follows:</p>
diff --git a/blog/kafka-meets-wayang-3/index.html b/blog/kafka-meets-wayang-3/index.html
index 37337288..13e874e8 100644
--- a/blog/kafka-meets-wayang-3/index.html
+++ b/blog/kafka-meets-wayang-3/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Kafka meets Wayang - Part 3 | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/kafka-meets-wayang-3"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Motivated by the learnings from last time, I stated implementing a Kafka Source component and a Kafka Sink component for the Apache Spark platform in Apache Wayang.
In our previous article we shared the results of the work on the frist Apache Kafka integration using the Java Platform.</p>
<p>Let's see how it goes this time with Apache Spark.</p>
diff --git a/blog/tags/ai/index.html b/blog/tags/ai/index.html
index 69b175e3..c9276a2f 100644
--- a/blog/tags/ai/index.html
+++ b/blog/tags/ai/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "ai" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/ai"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
detecting early signs of cancer cells. Building an AI requires a lot of data and training to achieve
the desired results, and federated learning is an approach to make AI training more viable.
Federated learning (or collaborative learning) is a technique that trains AI models on data
diff --git a/blog/tags/asf/index.html b/blog/tags/asf/index.html
index c69d53c0..628a205b 100644
--- a/blog/tags/asf/index.html
+++ b/blog/tags/asf/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">2 posts tagged with "ASF" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/asf"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This graduation rewards the community-driven effort, research, innovation, and collaboration of many years. It reflects our shared commitment to open-source development and the growing importance of cross-platform data processing in the broader data ecosystem nowadays.
Graduating as an Apache Top-Level Project is an important recognition of the project’s maturity and ensures that Apache Wayang is backed by the full support and oversight of the ASF, guaranteeing openness, meritocracy, and a sustainable development model for years to come.</p>
<hr>
diff --git a/blog/tags/cross-organization-data-collaboration/index.html b/blog/tags/cross-organization-data-collaboration/index.html
index a9817be3..427d6890 100644
--- a/blog/tags/cross-organization-data-collaboration/index.html
+++ b/blog/tags/cross-organization-data-collaboration/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">3 posts tagged with "cross organization data collaboration" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/cross-organization-data-collaboration"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Motivated by the learnings from last time, I stated implementing a Kafka Source component and a Kafka Sink component for the Apache Spark platform in Apache Wayang.
In our previous article we shared the results of the work on the frist Apache Kafka integration using the Java Platform.</p>
<p>Let's see how it goes this time with Apache Spark.</p>
diff --git a/blog/tags/federated/index.html b/blog/tags/federated/index.html
index eb41bc5f..e903e84b 100644
--- a/blog/tags/federated/index.html
+++ b/blog/tags/federated/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "federated" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/federated"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lang [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
detecting early signs of cancer cells. Building an AI requires a lot of data and training to achieve
the desired results, and federated learning is an approach to make AI training more viable.
Federated learning (or collaborative learning) is a technique that trains AI models on data
diff --git a/blog/tags/graduation/index.html b/blog/tags/graduation/index.html
index c693f6ea..f5c145ec 100644
--- a/blog/tags/graduation/index.html
+++ b/blog/tags/graduation/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "graduation" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/graduation"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:la [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This graduation rewards the community-driven effort, research, innovation, and collaboration of many years. It reflects our shared commitment to open-source development and the growing importance of cross-platform data processing in the broader data ecosystem nowadays.
Graduating as an Apache Top-Level Project is an important recognition of the project’s maturity and ensures that Apache Wayang is backed by the full support and oversight of the ASF, guaranteeing openness, meritocracy, and a sustainable development model for years to come.</p>
<hr>
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 1f3a1756..e8cbac5e 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Tags | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/blog/tags/kafka/index.html b/blog/tags/kafka/index.html
index dd2d63ad..e5d1e8e6 100644
--- a/blog/tags/kafka/index.html
+++ b/blog/tags/kafka/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">3 posts tagged with "kafka" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/kafka"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Motivated by the learnings from last time, I stated implementing a Kafka Source component and a Kafka Sink component for the Apache Spark platform in Apache Wayang.
In our previous article we shared the results of the work on the frist Apache Kafka integration using the Java Platform.</p>
<p>Let's see how it goes this time with Apache Spark.</p>
diff --git a/blog/tags/ml/index.html b/blog/tags/ml/index.html
index ceaa0ad9..0cb86778 100644
--- a/blog/tags/ml/index.html
+++ b/blog/tags/ml/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "ML" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/ml"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Thanks to the extensible nature of Wayang, the only core changes we had to do were introducing the concept of a <code>Model</code> and implement a new driver for the newly added platform.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-introducing-a-model">Step 1: Introducing a Model<a href="#step-1-introducing-a-model" class="hash-link" aria-label="Direct link to Step 1: Introducing a Model" title="Direct link to Step 1: Introducing a Model"></a></h2>
<p>With respect to the model, we followed Wayang’s abstraction philosophy: We created a <code>Model</code> interface to be used as input or output by Wayang operators and then extended it for the platform-specific operators. Different model interfaces can be found here:</p>
diff --git a/blog/tags/presto/index.html b/blog/tags/presto/index.html
index a52d52fd..f2fe5358 100644
--- a/blog/tags/presto/index.html
+++ b/blog/tags/presto/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "presto" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/presto"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/blog/tags/python/index.html b/blog/tags/python/index.html
index d2cd7b05..b915d4ac 100644
--- a/blog/tags/python/index.html
+++ b/blog/tags/python/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "python" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/python"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
important. However, navigating through a multitude of tools and
languages often is a major inconvenience.
Apache Wayang's upcoming Python API will allow you to seamlessly
diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html
index 387b22f2..67f6bf09 100644
--- a/blog/tags/release/index.html
+++ b/blog/tags/release/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "release" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/release"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>The ASF provides a robust infrastructure for open communities of software developers. We can share ideas, combine forces, contribute code, docs, review-energy, art work, and from time to time we can nail it down. A release defines an intermediate result of the continuous community work.</p>
<p>How we do such a release in the Apache Wayang team is an essential aspect towards graduation. First of all, there are some references to take into account, such as:</p>
<ul>
diff --git a/blog/tags/spark/index.html b/blog/tags/spark/index.html
index e2f24cf6..9edbdc44 100644
--- a/blog/tags/spark/index.html
+++ b/blog/tags/spark/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "spark" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/spark"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" co [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Motivated by the learnings from last time, I stated implementing a Kafka Source component and a Kafka Sink component for the Apache Spark platform in Apache Wayang.
In our previous article we shared the results of the work on the frist Apache Kafka integration using the Java Platform.</p>
<p>Let's see how it goes this time with Apache Spark.</p>
diff --git a/blog/tags/tensorflow/index.html b/blog/tags/tensorflow/index.html
index 6de53005..27c45bda 100644
--- a/blog/tags/tensorflow/index.html
+++ b/blog/tags/tensorflow/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "tensorflow" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/tensorflow"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:la [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Thanks to the extensible nature of Wayang, the only core changes we had to do were introducing the concept of a <code>Model</code> and implement a new driver for the newly added platform.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-introducing-a-model">Step 1: Introducing a Model<a href="#step-1-introducing-a-model" class="hash-link" aria-label="Direct link to Step 1: Introducing a Model" title="Direct link to Step 1: Introducing a Model"></a></h2>
<p>With respect to the model, we followed Wayang’s abstraction philosophy: We created a <code>Model</code> interface to be used as input or output by Wayang operators and then extended it for the platform-specific operators. Different model interfaces can be found here:</p>
diff --git a/blog/tags/tlp/index.html b/blog/tags/tlp/index.html
index 70d59130..5d3a12bd 100644
--- a/blog/tags/tlp/index.html
+++ b/blog/tags/tlp/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "TLP" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/tlp"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" conten [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This graduation rewards the community-driven effort, research, innovation, and collaboration of many years. It reflects our shared commitment to open-source development and the growing importance of cross-platform data processing in the broader data ecosystem nowadays.
Graduating as an Apache Top-Level Project is an important recognition of the project’s maturity and ensures that Apache Wayang is backed by the full support and oversight of the ASF, guaranteeing openness, meritocracy, and a sustainable development model for years to come.</p>
<hr>
diff --git a/blog/tags/trino/index.html b/blog/tags/trino/index.html
index d1780d2c..5d872c96 100644
--- a/blog/tags/trino/index.html
+++ b/blog/tags/trino/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">One post tagged with "trino" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/trino"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" co [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/blog/tags/wayang/index.html b/blog/tags/wayang/index.html
index 0d204a58..62ec318f 100644
--- a/blog/tags/wayang/index.html
+++ b/blog/tags/wayang/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">10 posts tagged with "wayang" | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/tags/wayang"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This graduation rewards the community-driven effort, research, innovation, and collaboration of many years. It reflects our shared commitment to open-source development and the growing importance of cross-platform data processing in the broader data ecosystem nowadays.
Graduating as an Apache Top-Level Project is an important recognition of the project’s maturity and ensures that Apache Wayang is backed by the full support and oversight of the ASF, guaranteeing openness, meritocracy, and a sustainable development model for years to come.</p>
<hr>
diff --git a/blog/wayang-federated-ai/index.html b/blog/wayang-federated-ai/index.html
index 389593dc..46ae521b 100644
--- a/blog/wayang-federated-ai/index.html
+++ b/blog/wayang-federated-ai/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Wayang and the Federated AI | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/wayang-federated-ai"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
detecting early signs of cancer cells. Building an AI requires a lot of data and training to achieve
the desired results, and federated learning is an approach to make AI training more viable.
Federated learning (or collaborative learning) is a technique that trains AI models on data
diff --git a/blog/wayang-graduation/index.html b/blog/wayang-graduation/index.html
index dba4e3df..3dcbf3a6 100644
--- a/blog/wayang-graduation/index.html
+++ b/blog/wayang-graduation/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Wayang Graduation | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/wayang-graduation"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="defa [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This graduation rewards the community-driven effort, research, innovation, and collaboration of many years. It reflects our shared commitment to open-source development and the growing importance of cross-platform data processing in the broader data ecosystem nowadays.
Graduating as an Apache Top-Level Project is an important recognition of the project’s maturity and ensures that Apache Wayang is backed by the full support and oversight of the ASF, guaranteeing openness, meritocracy, and a sustainable development model for years to come.</p>
<hr>
diff --git a/blog/wayang-python-api/index.html b/blog/wayang-python-api/index.html
index 92d7c61c..a25355a3 100644
--- a/blog/wayang-python-api/index.html
+++ b/blog/wayang-python-api/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Pywayang - Apache Wayang's Python API | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/wayang-python-api"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_ [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
important. However, navigating through a multitude of tools and
languages often is a major inconvenience.
Apache Wayang's upcoming Python API will allow you to seamlessly
diff --git a/blog/wayang-release-odysse/index.html b/blog/wayang-release-odysse/index.html
index 74166b37..d41d0a1e 100644
--- a/blog/wayang-release-odysse/index.html
+++ b/blog/wayang-release-odysse/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Wayang Release Odysse | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/wayang-release-odysse"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" conte [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>The ASF provides a robust infrastructure for open communities of software developers. We can share ideas, combine forces, contribute code, docs, review-energy, art work, and from time to time we can nail it down. A release defines an intermediate result of the continuous community work.</p>
<p>How we do such a release in the Apache Wayang team is an essential aspect towards graduation. First of all, there are some references to take into account, such as:</p>
<ul>
diff --git a/blog/wayang-tensorflow/index.html b/blog/wayang-tensorflow/index.html
index 66610bd3..327b70e4 100644
--- a/blog/wayang-tensorflow/index.html
+++ b/blog/wayang-tensorflow/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Integrating ML platforms in Wayang | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/wayang-tensorflow"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" con [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
Thanks to the extensible nature of Wayang, the only core changes we had to do were introducing the concept of a <code>Model</code> and implement a new driver for the newly added platform.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-introducing-a-model">Step 1: Introducing a Model<a href="#step-1-introducing-a-model" class="hash-link" aria-label="Direct link to Step 1: Introducing a Model" title="Direct link to Step 1: Introducing a Model"></a></h2>
<p>With respect to the model, we followed Wayang’s abstraction philosophy: We created a <code>Model</code> interface to be used as input or output by Wayang operators and then extended it for the platform-specific operators. Different model interfaces can be found here:</p>
diff --git a/blog/wayang-vs-trino/index.html b/blog/wayang-vs-trino/index.html
index 992eaec3..7c71a357 100644
--- a/blog/wayang-vs-trino/index.html
+++ b/blog/wayang-vs-trino/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Wayang vs. Presto/Trino | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/wayang-vs-trino"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-distinctions">Key Distinctions<a href="#key-distinctions" class="hash-link" aria-label="Direct link to Key Distinctions" title="Direct link to Key Distinctions"></a></h2>
<p>Trino/Presto is a <strong>query engine</strong> for <strong>distributed SQL query processing</strong>. It is composed of a coordinator and multiple workers. The coordinator consists of a query optimizer and a scheduler, while the workers are responsible for performing the necessary query processing. Data is fetched from external systems via a Connector API, i.e., Trino/Presto supports <a href="https://trino.io/ecosystem/data-source" target="_blank" rel="noopener noreferrer">multiple d [...]
<p>In contrast, Wayang is a <strong>middleware</strong> for <strong>integrating diverse data platforms</strong>, including but not limited to query engines. This means that Wayang leverages the processing capabilities of the underlying data platforms to complete a given job, with no actual query processing taking place within Wayang itself.</p>
diff --git a/blog/website_update/index.html b/blog/website_update/index.html
index 71388788..a1d8b557 100644
--- a/blog/website_update/index.html
+++ b/blog/website_update/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Website updated | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/blog/website_update"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta d [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>Author: <a href="https://github.com/2pk03" target="_blank" rel="noopener noreferrer">2pk03</a></p>
<p>We switched to a new CMS. That's all.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cheatsheet">Cheatsheet<a href="#cheatsheet" class="hash-link" aria-label="Direct link to Cheatsheet" title="Direct link to Cheatsheet"></a></h2>
diff --git a/docs/community/ai-tooling-policy/index.html b/docs/community/ai-tooling-policy/index.html
new file mode 100644
index 00000000..aa224028
--- /dev/null
+++ b/docs/community/ai-tooling-policy/index.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-community/ai-tooling-policy" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Guidelines for AI-assisted Contributions | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/ai-tooling-policy"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="doc [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>The Apache Wayang community welcomes the use of AI and generative tooling as part of the contribution process, provided contributors follow the guidelines below. These guidelines align with the <a href="https://www.apache.org/legal/generative-tooling.html" target="_blank" rel="noopener noreferrer">ASF Generative Tooling Guidance</a>.</p>
+<ol>
+<li>
+<p><strong>Verify licensing compliance.</strong> AI-generated code may inadvertently reproduce copyrighted material. Before submitting, ensure the output does not include content that conflicts with the <a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank" rel="noopener noreferrer">Apache 2.0 License</a> or the <a href="https://www.apache.org/legal/resolved.html" target="_blank" rel="noopener noreferrer">ASF 3rd Party Licensing Policy</a>.</p>
+</li>
+<li>
+<p><strong>Own the code. Understand what you submit</strong> If you cannot explain why the code works, do not submit it. You are accountable for bugs, security issues, and license violations in your contribution.</p>
+</li>
+<li>
+<p><strong>Disclose AI tool usage in commits.</strong> When any part of a contribution was generated or significantly assisted by an AI tool, include a <code>Generated-by:</code> token in the commit message. For example:</p>
+<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Fix null pointer in JdbcExecutor</span><br></span><span class="token-line" style="color:#393A34"><span cl [...]
+</li>
+<li>
+<p><strong>Keep PR discussions human.</strong> When participating in PR discussions, e.g., code review comments, questions, clarifications, and responses, the content must be written by a human, not generated by an AI tool. If an AI tool (such as GitHub Copilot) posts a comment, it must be clearly attributed as such and not presented as the contributor's own words. This ensures that code review remains a genuine exchange between people, preserving the quality, accountability, and co [...]
+</li>
+<li>
+<p><strong>Use different tools for test generation</strong>. Avoid using the same tool you used for adding functionality with adding test units. This potentially avoids cases where the code generated is just to make the test pass.</p>
+</li>
+</ol>
+<p><em>These guidelines will be updated as AI tooling and the legal landscape around it continue to evolve. Questions or suggestions can be raised on the <a href="https://wayang.apache.org/docs/community/mailinglist" target="_blank" rel="noopener noreferrer">dev mailing list</a>.</em></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/community/resources"><div class="pagination-nav [...]
+ <p>
+ Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
+ Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+ </p>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/community/committer/index.html b/docs/community/committer/index.html
index c4583e3b..97f9285a 100644
--- a/docs/community/committer/index.html
+++ b/docs/community/committer/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Becoming a committer | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/committer"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>The (P)PMC regularly adds new committers from the active contributors, based on their contributions to Wayang. The qualifications for new committers include:</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sustained-contributions-to-wayang">Sustained contributions to Wayang:<a href="#sustained-contributions-to-wayang" class="hash-link" aria-label="Direct link to Sustained contributions to Wayang:" title="Direct link to Sustained contributions to Wayang:"></a></h3>
<p>Committers should have a history of major contributions to Wayang. An ideal committer will have contributed broadly throughout the project, and have contributed at least one major component where they have taken an “ownership” role. An ownership role means that existing contributors feel that they should run patches for this component by this person.</p>
diff --git a/docs/community/contribute/index.html b/docs/community/contribute/index.html
index 7f2eb565..eea76b8c 100644
--- a/docs/community/contribute/index.html
+++ b/docs/community/contribute/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">How to contribute | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/contribute"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>Contributing to Wayang doesn’t just mean writing code. Helping new users on the mailing list, testing releases, and improving documentation are also welcome. In fact, proposing significant code changes usually requires first gaining experience and credibility within the community by helping in other ways. This is also a guide to becoming an effective contributor.</p>
<p>So, this guide organizes contributions in order that they should probably be considered by new contributors who intend to get involved long-term. Build some track record of helping others, rather than just open pull requests.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="contributing-by-helping-other-users">Contributing by helping other users<a href="#contributing-by-helping-other-users" class="hash-link" aria-label="Direct link to Contributing by helping other users" title="Direct link to Contributing by helping other users"></a></h3>
diff --git a/docs/community/mailinglist/index.html b/docs/community/mailinglist/index.html
index 89d3063a..3d821a23 100644
--- a/docs/community/mailinglist/index.html
+++ b/docs/community/mailinglist/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Mailinglists | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/mailinglist"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><met [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<h1>Mailing List</h1>
<p>Mailing list is where we discuss in public and keep everything tracked. You are welcomed to subscribe it if you wish:</p>
<ul>
diff --git a/docs/community/maturity/index.html b/docs/community/maturity/index.html
index af2d4a6a..1e8d8393 100644
--- a/docs/community/maturity/index.html
+++ b/docs/community/maturity/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Maturity Model | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/maturity"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/community/release/index.html b/docs/community/release/index.html
index 3d4b8e41..398d64b9 100644
--- a/docs/community/release/index.html
+++ b/docs/community/release/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">How to make a release | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/release"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p><strong>Disclaimer</strong>: Steps were taken mostly from <a href="https://plc4x.apache.org/plc4x/latest/developers/release/release.html" target="_blank" rel="noopener noreferrer">here</a> and thus sentences may have been copied.</p>
<p><strong>NOTE</strong>: The repository <strong>must be in a snapshot version</strong>. Ideally in a number for the next release. For instance, 1.1.1-SNAPSHOT means that the next release number should be 1.1.1.</p>
<p>The process in general is as follows. The release manager creates the right artifacts (source files) using maven commands. This forms a release candidate. Then the release candidate, which should be uploaded in the "development directory" of the apache svn server, goes for voting in the dev list. It needs 3 or more positive binding votes (PMC members count as binding votes). Once accepted, the release can actually happen, where the artifacts are uploaded to the "release [...]
diff --git a/docs/community/repositories/index.html b/docs/community/repositories/index.html
index d8d22321..7299046d 100644
--- a/docs/community/repositories/index.html
+++ b/docs/community/repositories/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Repositories | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/repositories"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><me [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="source-code">Source Code<a href="#source-code" class="hash-link" aria-label="Direct link to Source Code" title="Direct link to Source Code"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="apache-wayang">Apache Wayang<a href="#apache-wayang" class="hash-link" aria-label="Direct link to Apache Wayang" title="Direct link to Apache Wayang"></a></h4>
<p>ASF repository : <a href="https://gitbox.apache.org/repos/asf/incubator-wayang.git" target="_blank" rel="noopener noreferrer">https://gitbox.apache.org/repos/asf/incubator-wayang.git</a><br>
diff --git a/docs/community/resources/index.html b/docs/community/resources/index.html
index d0b34400..e889e6d5 100644
--- a/docs/community/resources/index.html
+++ b/docs/community/resources/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Community Resources & External Coverage | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/resources"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearc [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>Use the curated resources below to discover third‑party perspectives, then jump back to the pillar page whenever you need the full technical scope.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="external-articles--mentions">External Articles & Mentions<a href="#external-articles--mentions" class="hash-link" aria-label="Direct link to External Articles & Mentions" title="Direct link to External Articles & Mentions"></a></h2>
<ul>
@@ -22,7 +22,7 @@
<li>Include benchmark data, architectural diagrams, or lessons learned from production usage</li>
<li>Link back to the pillar page or other official docs so readers can explore the project further</li>
</ul>
-<p>Including high-quality external references alongside the official documentation helps search engines and AI assistants understand how the community uses Apache Wayang in the broader distributed computing ecosystem.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/community/maturity"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Maturity [...]
+<p>Including high-quality external references alongside the official documentation helps search engines and AI assistants understand how the community uses Apache Wayang in the broader distributed computing ecosystem.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/community/maturity"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Maturity [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/community/security/index.html b/docs/community/security/index.html
index b4fd31be..d752b749 100644
--- a/docs/community/security/index.html
+++ b/docs/community/security/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Wayang Security | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/security"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><met [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>The Apache Software Foundation (ASF) and the Apache Wayang community take security very seriously. Apache Wayang specifically provides robust security features and actively addresses concerns around potential vulnerabilities. If you have discovered a vulnerability or have concerns regarding Apache Wayang security, please immediately contact the security team via email at <a href="mailto:security@wayang.apache.org" target="_blank" rel="noopener noreferrer">security@wayang.apache.org</a>.</p>
<p>In your email, please include:</p>
<ul>
@@ -33,7 +33,7 @@
<li>If not affected, please contribute by updating the DependencyCheck suppression list, clearly documenting why Apache Wayang is not impacted.</li>
</ul>
</li>
-</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/community/resources"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Community Resources & External Coverage</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-bord [...]
+</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/community/ai-tooling-policy"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Guidelines for AI-assisted Contributions</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/community/team/index.html b/docs/community/team/index.html
index cf4c2477..8b229b8a 100644
--- a/docs/community/team/index.html
+++ b/docs/community/team/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Team | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/community/team"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<table><thead><tr><th>Name</th><th style="text-align:center">Role</th><th>Apache ID</th><th>Organization</th></tr></thead><tbody><tr><td>Alexander Alten</td><td style="text-align:center">PMC, Committer</td><td>aloalt</td><td>Scalytics</td></tr><tr><td>Calvin Kirs</td><td style="text-align:center">PMC, Committer</td><td>kirs</td><td>SelectDB, ASF</td></tr><tr><td>Zoi Kaoudi</td><td style="text-align:center">PMC, Committer</td><td>zkaoudi</td><td>ITU Copenhagen, Scalytics</td></tr><tr><td> [...]
<p>You can reach committers directly at <apache-id>@apache.org</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="mentors-during-the-incubation-process">Mentors during the incubation process<a href="#mentors-during-the-incubation-process" class="hash-link" aria-label="Direct link to Mentors during the incubation process" title="Direct link to Mentors during the incubation process"></a></h2>
diff --git a/docs/guide/adding-operators/index.html b/docs/guide/adding-operators/index.html
index 76f04001..01bde52e 100644
--- a/docs/guide/adding-operators/index.html
+++ b/docs/guide/adding-operators/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Adding an operator in Wayang | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/adding-operators"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This guide shows the <em>3 steps</em> that developers need to follow if they want to add new operators in Wayang.
We use the Map operator as an example.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-add-a-wayang-operator">Step 1: Add a Wayang operator<a href="#step-1-add-a-wayang-operator" class="hash-link" aria-label="Direct link to Step 1: Add a Wayang operator" title="Direct link to Step 1: Add a Wayang operator"></a></h2>
diff --git a/docs/guide/api-documentation/index.html b/docs/guide/api-documentation/index.html
index 738febb5..944483d1 100644
--- a/docs/guide/api-documentation/index.html
+++ b/docs/guide/api-documentation/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">API documentation | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/api-documentation"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="e [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>The latest Javadocs can be found <a href="https://wayang.apache.org/docs/api/javadocs/1.1.0/index.html" target="_blank" rel="noopener noreferrer">here</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/guide/ml4all"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Scalable Machine Learning</div></a><a class="pagination-nav__link paginat [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
diff --git a/docs/guide/developing-in-wayang/index.html b/docs/guide/developing-in-wayang/index.html
index dcd379db..eca7448f 100644
--- a/docs/guide/developing-in-wayang/index.html
+++ b/docs/guide/developing-in-wayang/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Developing in Wayang | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/developing-in-wayang"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" cont [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compile-the-module-you-modified">Compile the module you modified<a href="#compile-the-module-you-modified" class="hash-link" aria-label="Direct link to Compile the module you modified" title="Direct link to Compile the module you modified"></a></h2>
<p>Within the root directory of Wayang, compile only the module you modified for faster compilation:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean </span><span class="token function" style="color:#d73a49">install</span><span c [...]
diff --git a/docs/guide/examples/index.html b/docs/guide/examples/index.html
index bfd84fbe..0b31a6b2 100644
--- a/docs/guide/examples/index.html
+++ b/docs/guide/examples/index.html
@@ -3,27 +3,129 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Usage Examples | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/examples"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta dat [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<title data-rh="true">Installation and Examples | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/examples"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>This section provides a set of examples to illustrate how to use Apache Wayang for different tasks.</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="example-1-machine-learning-for-query-optimization-in-apache-wayang">Example 1: Machine Learning for query optimization in Apache Wayang<a href="#example-1-machine-learning-for-query-optimization-in-apache-wayang" class="hash-link" aria-label="Direct link to Example 1: Machine Learning for query optimization in Apache Wayang" title="Direct link to Example 1: Machine Learning for query optimization in Apache Wayang"></a></h2>
-<p>Apache Wayang can be customized with concrete
-implementations of the <code>EstimatableCost</code> interface in order to optimize
-for a desired metric. The implementation can be enabled by providing it
-to a <code>Configuration</code>.</p>
-<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
-<p>In combination with an encoding scheme and a third party package to load
-ML models, the following example shows how to predict runtimes of query
-execution plans runtimes in Apache Wayang:</p>
-<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
-<p>Third-party packages such as <code>OnnxRuntime</code> can be used to load
-pre-trained <code>.onnx</code> files that contain desired ML models.</p>
-<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Apache Wayang is built upon the foundations of Java 11 and Scala 2.12, providing a robust and versatile platform for data processing applications. If you intend to build Wayang from source, you wi[...]</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-wayang">Get Wayang<a href="#get-wayang" class="hash-link" aria-label="Direct link to Get Wayang" title="Direct link to Get Wayang"></a></h3>
+<p>Apache Wayang is readily available through Maven Central, facilitating seamless integration into your development workflow. For instance, to utilize Wayang in your Maven-based project, simply add [...]</p>
+<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
+<p>Note the <code>***</code>: Wayang ships with multiple modules that can be included in your app, depending on how you want to use it:</p>
+<ul>
+<li><code>wayang-core</code>: provides core data structures and the optimizer (required)</li>
+<li><code>wayang-basic</code>: provides common operators and data types for your apps (recommended)</li>
+<li><code>wayang-api</code>: provides an easy-to-use Scala and Java API to assemble Wayang plans (recommended)</li>
+<li><code>wayang-java</code>, <code>wayang-spark</code>, <code>wayang-graphchi</code>, <code>wayang-sqlite3</code>, <code>wayang-postgres</code>: adapters for the various supported processing platforms</li>
+<li><code>wayang-profiler</code>: provides functionality to learn operator and UDF cost functions from historical execution data</li>
+</ul>
+<p>For the sake of version flexibility, you still have to include your Hadoop (<code>hadoop-hdfs</code> and <code>hadoop-common</code>) and Spark (<code>spark-core</code> and <code>spark-graphx</code>) version of choice.</p>
+<p>In addition, you can obtain the most recent snapshot version of Wayang via Sonatype's snapshot repository. Just included</p>
+<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">repo [...]
+<p>If you need to rebuild Wayang, e.g., to use a different Scala version, you can simply do so via Maven:</p>
+<ol>
+<li>Adapt the version variables (e.g., <code>spark.version</code>) in the main <code>pom.xml</code> file.</li>
+<li>Build Wayang with the adapted versions.<!-- -->
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ mvn clean </span><span class="token function" style="color:#d73a49">install</span><br>< [...]
+<!-- -->Note the <code>standalone</code> profile to fix Hadoop and Spark versions, so that Wayang apps do not explicitly need to declare the corresponding dependencies.
+Also, note the <code>distro</code> profile, which assembles a binary Wayang distribution.
+To activate these profiles, you need to specify them when running maven, i.e.,<!-- -->
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean </span><span class="token function" style="color:#d73a49">install</span><span c [...]
+</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configure-wayang">Configure Wayang<a href="#configure-wayang" class="hash-link" aria-label="Direct link to Configure Wayang" title="Direct link to Configure Wayang"></a></h3>
+<p>To enable Apache Wayang's smooth operation, you need to equip it with details about your processing platforms' capabilities and how to interact with them. A default configuration is available for [...]</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">java</span><span class="token [...]
+<p>Essential configuration settings:</p>
+<ul>
+<li>General settings<!-- -->
+<ul>
+<li><code>wayang.core.log.enabled (= true)</code>: whether to log execution statistics to allow learning better cardinality and cost estimators for the optimizer</li>
+<li><code>wayang.core.log.executions (= ~/.wayang/executions.json)</code> where to log execution times of operator groups</li>
+<li><code>wayang.core.log.cardinalities (= ~/.wayang/cardinalities.json)</code> where to log cardinality measurements</li>
+<li><code>wayang.core.optimizer.instrumentation (= org.apache.wayang.core.profiling.OutboundInstrumentationStrategy)</code>: where to measure cardinalities in Wayang plans; other options are `org.apache.wa[...]</li>
+<li><code>wayang.core.optimizer.reoptimize (= false)</code>: whether to progressively optimize Wayang plans</li>
+<li><code>wayang.basic.tempdir (= file:///tmp)</code>: where to store temporary files, in particular for inter-platform communication</li>
+</ul>
+</li>
+<li>Java Streams<!-- -->
+<ul>
+<li><code>wayang.java.cpu.mhz (= 2700)</code>: clock frequency of processor the JVM runs on in MHz</li>
+<li><code>wayang.java.hdfs.ms-per-mb (= 2.7)</code>: average throughput from HDFS to JVM in ms/MB</li>
+</ul>
+</li>
+<li>Apache Spark<!-- -->
+<ul>
+<li><code>spark.master (= local)</code>: Spark master<!-- -->
+<ul>
+<li>various other Spark settings are supported, e.g., <code>spark.executor.memory</code>, <code>spark.serializer</code>, ...</li>
+</ul>
+</li>
+<li><code>wayang.spark.cpu.mhz (= 2700)</code>: clock frequency of processor the Spark workers run on in MHz</li>
+<li><code>wayang.spark.hdfs.ms-per-mb (= 2.7)</code>: average throughput from HDFS to the Spark workers in ms/MB</li>
+<li><code>wayang.spark.network.ms-per-mb (= 8.6)</code>: average network throughput of the Spark workers in ms/MB</li>
+<li><code>wayang.spark.init.ms (= 4500)</code>: time it takes Spark to initialize in ms</li>
+</ul>
+</li>
+<li>GraphChi<!-- -->
+<ul>
+<li><code>wayang.graphchi.cpu.mhz (= 2700)</code>: clock frequency of processor GraphChi runs on in MHz</li>
+<li><code>wayang.graphchi.cpu.cores (= 2)</code>: number of cores GraphChi runs on</li>
+<li><code>wayang.graphchi.hdfs.ms-per-mb (= 2.7)</code>: average throughput from HDFS to GraphChi in ms/MB</li>
+</ul>
+</li>
+<li>SQLite<!-- -->
+<ul>
+<li><code>wayang.sqlite3.jdbc.url</code>: JDBC URL to use SQLite</li>
+<li><code>wayang.sqlite3.jdbc.user</code>: optional user name</li>
+<li><code>wayang.sqlite3.jdbc.password</code>: optional password</li>
+<li><code>wayang.sqlite3.cpu.mhz (= 2700)</code>: clock frequency of processor SQLite runs on in MHz</li>
+<li><code>wayang.sqlite3.cpu.cores (= 2)</code>: number of cores SQLite runs on</li>
+</ul>
+</li>
+<li>PostgreSQL<!-- -->
+<ul>
+<li><code>wayang.postgres.jdbc.url</code>: JDBC URL to use PostgreSQL</li>
+<li><code>wayang.postgres.jdbc.user</code>: optional user name</li>
+<li><code>wayang.postgres.jdbc.password</code>: optional password</li>
+<li><code>wayang.postgres.cpu.mhz (= 2700)</code>: clock frequency of processor PostgreSQL runs on in MHz</li>
+<li><code>wayang.postgres.cpu.cores (= 2)</code>: number of cores PostgreSQL runs on</li>
+</ul>
+</li>
+</ul>
+<p>To effectively define your applications with Apache Wayang, utilize its Scala or Java API, conveniently found within the <code>wayang-api</code> module. For clear illustrations, refer to the provided exampl[...]</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cost-functions">Cost Functions<a href="#cost-functions" class="hash-link" aria-label="Direct link to Cost Functions" title="Direct link to Cost Functions"></a></h2>
+<p>Wayang provides a utility to learn cost functions from historical execution data. Specifically, Wayang can learn configurations for load profile estimators (that estimate CPU load, disk load etc.[...]</p>
+<p>As an example, the <code>JavaMapOperator</code> draws its load profile estimator configuration via the configuration key <code>wayang.java.map.load</code>.
+Now, it is possible to specify a load profile estimator template in the configuration under the key <code><original key>.template</code>, e.g.:</p>
+<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wayang.java.map.load.template = {\</span><br></span><span class="token-line" style="color:#39 [...]
+<p>This template encapsulates a load profile estimator that requires at minimum one input cardinality and one output cardinality. Furthermore, it simulates CPU load by assuming a direct relationship[...]</p>
+<p>In particular, you can use</p>
+<ul>
+<li>the variables <code>in0</code>, <code>in1</code>, ... and <code>out0</code>, <code>out1</code>, ... to incorporate the input and output cardinalities, respectively;</li>
+<li>operator properties, such as <code>numIterations</code> for the <code>PageRankOperator</code> implementations;</li>
+<li>the operators <code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, <code>%</code>, <code>^</code>, and parantheses;</li>
+<li>the functions <code>min(x0, x1, ...))</code>, <code>max(x0, x1, ...)</code>, <code>abs(x)</code>, <code>log(x, base)</code>, <code>ln(x)</code>, <code>ld(x)</code>;</li>
+<li>and the constants <code>e</code> and <code>pi</code>.</li>
+</ul>
+<p>While Apache Wayang provides templates for all execution operators, you will need to explicitly define your user-defined functions (UDFs) by specifying their cost functions, which are based on co[...]
+As soon as execution data has been collected, you can initiate:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">java</span><span class="token plain"> </span><span class="token [...]
+<p>This tool will attempt to determine suitable values for the question marks (<code>?</code>) within the load profile estimator templates, aligning them with the collected execution data and pre-defined confi[...]</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2>
+<p>For some executable examples, have a look at <a href="https://github.com/sekruse/rheem-examples" target="_blank" rel="noopener noreferrer">this repository</a>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="wordcount">WordCount<a href="#wordcount" class="hash-link" aria-label="Direct link to WordCount" title="Direct link to WordCount"></a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="java-api">Java API<a href="#java-api" class="hash-link" aria-label="Direct link to Java API" title="Direct link to Java API"></a></h4>
+<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="scala-api">Scala API<a href="#scala-api" class="hash-link" aria-label="Direct link to Scala API" title="Direct link to Scala API"></a></h4>
+<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="k-means">k-means<a href="#k-means" class="hash-link" aria-label="Direct link to k-means" title="Direct link to k-means"></a></h3>
+<p>Wayang is also capable of iterative processing, which is, e.g., very important for machine learning algorithms, such as k-means.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="scala-api-1">Scala API<a href="#scala-api-1" class="hash-link" aria-label="Direct link to Scala API" title="Direct link to Scala API"></a></h4>
+<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/guide/getting-started/index.html b/docs/guide/getting-started/index.html
index 2661a2ae..6e972425 100644
--- a/docs/guide/getting-started/index.html
+++ b/docs/guide/getting-started/index.html
@@ -3,129 +3,76 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Getting started | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/getting-started"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<title data-rh="true">Getting started | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/getting-started"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>Apache Wayang is built upon the foundations of Java 11 and Scala 2.12, providing a robust and versatile platform for data processing applications. If you intend to build Wayang from source, you will also need to have Apache Maven, the popular build automation tool, installed on your system. Additionally, be mindful that some of the processing platforms supported by Wayang may have their own specific installation requirements.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-wayang">Get Wayang<a href="#get-wayang" class="hash-link" aria-label="Direct link to Get Wayang" title="Direct link to Get Wayang"></a></h3>
-<p>Apache Wayang is readily available through Maven Central, facilitating seamless integration into your development workflow. For instance, to utilize Wayang in your Maven-based project, simply add the following dependency to your project's POM file:</p>
-<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
-<p>Note the <code>***</code>: Wayang ships with multiple modules that can be included in your app, depending on how you want to use it:</p>
-<ul>
-<li><code>wayang-core</code>: provides core data structures and the optimizer (required)</li>
-<li><code>wayang-basic</code>: provides common operators and data types for your apps (recommended)</li>
-<li><code>wayang-api</code>: provides an easy-to-use Scala and Java API to assemble Wayang plans (recommended)</li>
-<li><code>wayang-java</code>, <code>wayang-spark</code>, <code>wayang-graphchi</code>, <code>wayang-sqlite3</code>, <code>wayang-postgres</code>: adapters for the various supported processing platforms</li>
-<li><code>wayang-profiler</code>: provides functionality to learn operator and UDF cost functions from historical execution data</li>
-</ul>
-<p>For the sake of version flexibility, you still have to include your Hadoop (<code>hadoop-hdfs</code> and <code>hadoop-common</code>) and Spark (<code>spark-core</code> and <code>spark-graphx</code>) version of choice.</p>
-<p>In addition, you can obtain the most recent snapshot version of Wayang via Sonatype's snapshot repository. Just included</p>
-<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">repo [...]
-<p>If you need to rebuild Wayang, e.g., to use a different Scala version, you can simply do so via Maven:</p>
-<ol>
-<li>Adapt the version variables (e.g., <code>spark.version</code>) in the main <code>pom.xml</code> file.</li>
-<li>Build Wayang with the adapted versions.<!-- -->
-<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ mvn clean </span><span class="token function" style="color:#d73a49">install</span><br>< [...]
-<!-- -->Note the <code>standalone</code> profile to fix Hadoop and Spark versions, so that Wayang apps do not explicitly need to declare the corresponding dependencies.
-Also, note the <code>distro</code> profile, which assembles a binary Wayang distribution.
-To activate these profiles, you need to specify them when running maven, i.e.,<!-- -->
-<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean </span><span class="token function" style="color:#d73a49">install</span><span c [...]
-</li>
-</ol>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configure-wayang">Configure Wayang<a href="#configure-wayang" class="hash-link" aria-label="Direct link to Configure Wayang" title="Direct link to Configure Wayang"></a></h3>
-<p>To enable Apache Wayang's smooth operation, you need to equip it with details about your processing platforms' capabilities and how to interact with them. A default configuration is available for initial testing, but creating a properties file is generally preferable for fine-tuning the configuration to suit your specific requirements. To harness this personalized configuration effortlessly, launch your application via</p>
-<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">java</span><span class="token [...]
-<p>Essential configuration settings:</p>
-<ul>
-<li>General settings<!-- -->
-<ul>
-<li><code>wayang.core.log.enabled (= true)</code>: whether to log execution statistics to allow learning better cardinality and cost estimators for the optimizer</li>
-<li><code>wayang.core.log.executions (= ~/.wayang/executions.json)</code> where to log execution times of operator groups</li>
-<li><code>wayang.core.log.cardinalities (= ~/.wayang/cardinalities.json)</code> where to log cardinality measurements</li>
-<li><code>wayang.core.optimizer.instrumentation (= org.apache.wayang.core.profiling.OutboundInstrumentationStrategy)</code>: where to measure cardinalities in Wayang plans; other options are <code>org.apache.wayang.core.profiling.NoInstrumentationStrategy</code> and <code>org.apache.wayang.core.profiling.FullInstrumentationStrategy</code></li>
-<li><code>wayang.core.optimizer.reoptimize (= false)</code>: whether to progressively optimize Wayang plans</li>
-<li><code>wayang.basic.tempdir (= file:///tmp)</code>: where to store temporary files, in particular for inter-platform communication</li>
-</ul>
-</li>
-<li>Java Streams<!-- -->
-<ul>
-<li><code>wayang.java.cpu.mhz (= 2700)</code>: clock frequency of processor the JVM runs on in MHz</li>
-<li><code>wayang.java.hdfs.ms-per-mb (= 2.7)</code>: average throughput from HDFS to JVM in ms/MB</li>
-</ul>
-</li>
-<li>Apache Spark<!-- -->
-<ul>
-<li><code>spark.master (= local)</code>: Spark master<!-- -->
-<ul>
-<li>various other Spark settings are supported, e.g., <code>spark.executor.memory</code>, <code>spark.serializer</code>, ...</li>
-</ul>
-</li>
-<li><code>wayang.spark.cpu.mhz (= 2700)</code>: clock frequency of processor the Spark workers run on in MHz</li>
-<li><code>wayang.spark.hdfs.ms-per-mb (= 2.7)</code>: average throughput from HDFS to the Spark workers in ms/MB</li>
-<li><code>wayang.spark.network.ms-per-mb (= 8.6)</code>: average network throughput of the Spark workers in ms/MB</li>
-<li><code>wayang.spark.init.ms (= 4500)</code>: time it takes Spark to initialize in ms</li>
-</ul>
-</li>
-<li>GraphChi<!-- -->
-<ul>
-<li><code>wayang.graphchi.cpu.mhz (= 2700)</code>: clock frequency of processor GraphChi runs on in MHz</li>
-<li><code>wayang.graphchi.cpu.cores (= 2)</code>: number of cores GraphChi runs on</li>
-<li><code>wayang.graphchi.hdfs.ms-per-mb (= 2.7)</code>: average throughput from HDFS to GraphChi in ms/MB</li>
-</ul>
-</li>
-<li>SQLite<!-- -->
-<ul>
-<li><code>wayang.sqlite3.jdbc.url</code>: JDBC URL to use SQLite</li>
-<li><code>wayang.sqlite3.jdbc.user</code>: optional user name</li>
-<li><code>wayang.sqlite3.jdbc.password</code>: optional password</li>
-<li><code>wayang.sqlite3.cpu.mhz (= 2700)</code>: clock frequency of processor SQLite runs on in MHz</li>
-<li><code>wayang.sqlite3.cpu.cores (= 2)</code>: number of cores SQLite runs on</li>
-</ul>
-</li>
-<li>PostgreSQL<!-- -->
-<ul>
-<li><code>wayang.postgres.jdbc.url</code>: JDBC URL to use PostgreSQL</li>
-<li><code>wayang.postgres.jdbc.user</code>: optional user name</li>
-<li><code>wayang.postgres.jdbc.password</code>: optional password</li>
-<li><code>wayang.postgres.cpu.mhz (= 2700)</code>: clock frequency of processor PostgreSQL runs on in MHz</li>
-<li><code>wayang.postgres.cpu.cores (= 2)</code>: number of cores PostgreSQL runs on</li>
-</ul>
-</li>
-</ul>
-<p>To effectively define your applications with Apache Wayang, utilize its Scala or Java API, conveniently found within the <code>wayang-api</code> module. For clear illustrations, refer to the provided examples below.</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cost-functions">Cost Functions<a href="#cost-functions" class="hash-link" aria-label="Direct link to Cost Functions" title="Direct link to Cost Functions"></a></h2>
-<p>Wayang provides a utility to learn cost functions from historical execution data. Specifically, Wayang can learn configurations for load profile estimators (that estimate CPU load, disk load etc.) for both operators and UDFs, as long as the configuration provides a template for those estimators.</p>
-<p>As an example, the <code>JavaMapOperator</code> draws its load profile estimator configuration via the configuration key <code>wayang.java.map.load</code>.
-Now, it is possible to specify a load profile estimator template in the configuration under the key <code><original key>.template</code>, e.g.:</p>
-<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wayang.java.map.load.template = {\</span><br></span><span class="token-line" style="color:#39 [...]
-<p>This template encapsulates a load profile estimator that requires at minimum one input cardinality and one output cardinality. Furthermore, it simulates CPU load by assuming a direct relationship with the input cardinality. However, more complex functions are possible.</p>
-<p>In particular, you can use</p>
-<ul>
-<li>the variables <code>in0</code>, <code>in1</code>, ... and <code>out0</code>, <code>out1</code>, ... to incorporate the input and output cardinalities, respectively;</li>
-<li>operator properties, such as <code>numIterations</code> for the <code>PageRankOperator</code> implementations;</li>
-<li>the operators <code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, <code>%</code>, <code>^</code>, and parantheses;</li>
-<li>the functions <code>min(x0, x1, ...))</code>, <code>max(x0, x1, ...)</code>, <code>abs(x)</code>, <code>log(x, base)</code>, <code>ln(x)</code>, <code>ld(x)</code>;</li>
-<li>and the constants <code>e</code> and <code>pi</code>.</li>
-</ul>
-<p>While Apache Wayang provides templates for all execution operators, you will need to explicitly define your user-defined functions (UDFs) by specifying their cost functions, which are based on configuration parameters. This involves creating an initial specification and template for each UDF.
-As soon as execution data has been collected, you can initiate:</p>
-<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">java</span><span class="token plain"> </span><span class="token [...]
-<p>This tool will attempt to determine suitable values for the question marks (<code>?</code>) within the load profile estimator templates, aligning them with the collected execution data and pre-defined configuration entries for the load profile estimators. These optimized values can then be directly incorporated into your configuration.</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2>
-<p>For some executable examples, have a look at <a href="https://github.com/sekruse/rheem-examples" target="_blank" rel="noopener noreferrer">this repository</a>.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="wordcount">WordCount<a href="#wordcount" class="hash-link" aria-label="Direct link to WordCount" title="Direct link to WordCount"></a></h3>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="java-api">Java API<a href="#java-api" class="hash-link" aria-label="Direct link to Java API" title="Direct link to Java API"></a></h4>
-<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="scala-api">Scala API<a href="#scala-api" class="hash-link" aria-label="Direct link to Scala API" title="Direct link to Scala API"></a></h4>
-<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="k-means">k-means<a href="#k-means" class="hash-link" aria-label="Direct link to k-means" title="Direct link to k-means"></a></h3>
-<p>Wayang is also capable of iterative processing, which is, e.g., very important for machine learning algorithms, such as k-means.</p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="scala-api-1">Scala API<a href="#scala-api-1" class="hash-link" aria-label="Direct link to Scala API" title="Direct link to Scala API"></a></h4>
-<div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p><strong>Write your data pipeline once. Run it anywhere.</strong></p>
+<p>You write your pipeline against a single API, then decide how it runs. Point it at one
+engine and it runs there — or hand Wayang's cost-based optimizer the choice and let it pick
+the best platform for each step across your laptop, Apache Spark, Apache Flink, or a
+database, even splitting a single job across several. Either way, when your data outgrows
+one machine you don't rewrite anything — you just make another engine available.</p>
+<p>This page gets you from zero to a running cross-platform pipeline in a few minutes.</p>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-it-works">How it works<a href="#how-it-works" class="hash-link" aria-label="Direct link to How it works" title="Direct link to How it works"></a></h2>
+<p>Most data tools lock you into one engine. Pick Spark, and your code is Spark code forever.
+Outgrow it, or need a database in the mix, and you rewrite.</p>
+<p>Wayang sits one level up. You write a pipeline against Wayang's API and register the engines
+you <em>have</em> — then it's your call. Want control? Register one engine and it runs there. Want
+it handled? Register several and let Wayang's cost-based optimizer pick the best one for each
+step:</p>
+<p><img decoding="async" loading="lazy" alt="A single pipeline, written once, feeds the Wayang optimizer, which routes each step to the best available engine — Local, Spark, Flink, Postgres, and others." src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3NjAgMzYwIiByb2xlPSJpbWciCiAgICAgYXJpYS1sYWJlbD0iQSBzaW5nbGUgcGlwZWxpbmUsIHdyaXR0ZW4gb25jZSwgZmVlZHMgdGhlIFdheWFuZyBvcHRpbWl6ZXIsIHdoaWNoIHJvdXRlcyB3b3JrIHRvIHRoZSBiZXN0IGF2YWlsYWJsZSBlb [...]
+<p>Same code on your laptop and on a 100-node cluster.</p>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="quickstart">Quickstart<a href="#quickstart" class="hash-link" aria-label="Direct link to Quickstart" title="Direct link to Quickstart"></a></h2>
+<p>We'll run a word count locally first — no cluster, nothing to install on a server — then
+make Spark available with a one-line change. The pipeline itself never changes; only the
+set of engines you register does.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-run-locally">1. Run locally<a href="#1-run-locally" class="hash-link" aria-label="Direct link to 1. Run locally" title="Direct link to 1. Run locally"></a></h3>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Java</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Scala</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="langua [...]
+<p>It executes locally. Good for development, tests, and small data.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-run-it-on-spark">2. Run it on Spark<a href="#2-run-it-on-spark" class="hash-link" aria-label="Direct link to 2. Run it on Spark" title="Direct link to 2. Run it on Spark"></a></h3>
+<p>Now run the <em>exact same pipeline</em> on Spark instead of locally. You don't touch the pipeline —
+you change which platform you register: comment out Java and register Spark.</p>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Java</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Scala</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="langua [...]
+<p>Run it again. The same pipeline now executes on Spark — you changed <em>where</em> it runs without
+changing <em>what</em> it does. Switch to Flink or any other supported platform the same way: swap
+the import and the registered plugin.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-register-both-and-let-the-optimizer-choose">3. Register both and let the optimizer choose<a href="#3-register-both-and-let-the-optimizer-choose" class="hash-link" aria-label="Direct link to 3. Register both and let the optimizer choose" title="Direct link to 3. Register both and let the optimizer choose"></a></h3>
+<p>This is the point of Wayang. In practice you don't have to pick a platform at all: you register every
+engine you have and let the optimizer choose the best one for each step — even
+splitting a single job across engines. The pipeline is still the same; you just stop deciding
+where it runs.</p>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Java</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Scala</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="langua [...]
+<p>Now Wayang owns the placement decision. For each operator it estimates the cost on every
+registered platform and picks the cheapest — keeping a small job entirely local, pushing a
+large one onto Spark, or mixing both within the same job as the data demands. You wrote the
+pipeline once in step 1; steps 2 and 3 only changed which engines were on the table.</p>
+<blockquote>
+<p>On a tiny input you'll see it keep everything local (that's the optimizer working
+correctly, not ignoring Spark). The cross-platform decisions show up once the data is big
+enough for them to pay off. Read <a href="https://wayang.apache.org/docs/introduction/about" target="_blank" rel="noopener noreferrer">How Wayang chooses a platform</a> for what
+drives those choices.</p>
+</blockquote>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="install">Install<a href="#install" class="hash-link" aria-label="Direct link to Install" title="Direct link to Install"></a></h2>
+<p>Replace WAYANG_VERSION below with <a href="https://mvnrepository.com/artifact/org.apache.wayang" target="_blank" rel="noopener noreferrer">latest maven release</a>.</p>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Java/Scala</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p>Maven:</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393 [...]
+package and the Wayang backend from source and start a local server before any pipeline
+runs. A simpler one-command path (a prebuilt Docker image) is something the project wants to
+offer, and help is welcome.</p></div></div><p>pywayang has no PyPI release yet, and it's a client that talks to a running Wayang REST
+API — so setup is two parts: install the Python package, then start the Wayang backend.</p><p><strong>1. Build and install the Python package</strong> (from the repo root):</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlock [...]
+<code>wayang-api/wayang-api-python/src/main/resources/wayang-api-python-defaults.properties</code>
+— the location of <code>python/src/pywy/execution/worker.py</code>, your <code>python3</code> command, and your
+site-packages directory. You'll also need a Java 11+ runtime available.</p><p>With the REST API running, the Python examples above will execute. See the
+<a href="https://github.com/apache/wayang/tree/main/python" target="_blank" rel="noopener noreferrer">pywayang README</a> for full details.</p></div></div></div>
+<hr>
+<p><em>Stuck on the first run? That's a documentation bug, and we want to know.
+Ask on the <a href="https://wayang.apache.org/docs/community/mailinglist" target="_blank" rel="noopener noreferrer">user mailing list</a>.</em></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guide/installation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to build Wayang</div></a></nav></div></div><div class="col col--3"><div class="tab [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/guide/installation/index.html b/docs/guide/installation/index.html
index 6cc298c6..5cfa6aa5 100644
--- a/docs/guide/installation/index.html
+++ b/docs/guide/installation/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">How to build Wayang | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/installation"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clone-repository">Clone repository<a href="#clone-repository" class="hash-link" aria-label="Direct link to Clone repository" title="Direct link to Clone repository"></a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/ap [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-binaries">Create binaries<a href="#create-binaries" class="hash-link" aria-label="Direct link to Create binaries" title="Direct link to Create binaries"></a></h2>
@@ -25,8 +25,8 @@
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">echo</span><span class="token plain"> </span><span class="token string" styl [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="others">Others<a href="#others" class="hash-link" aria-label="Direct link to Others" title="Direct link to Others"></a></h3>
<ul>
-<li>You need to install Apache Spark version 3 or higher. Don’t forget to set the <code>SPARK_HOME</code> environment variable.</li>
-<li>You need to install Apache Hadoop version 3 or higher. Don’t forget to set the <code>HADOOP_HOME</code> environment variable.</li>
+<li>You need to install Apache Spark version 3 or higher. Don't forget to set the <code>SPARK_HOME</code> environment variable.</li>
+<li>You need to install Apache Hadoop version 3 or higher. Don't forget to set the <code>HADOOP_HOME</code> environment variable.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="run-the-program">Run the program<a href="#run-the-program" class="hash-link" aria-label="Direct link to Run the program" title="Direct link to Run the program"></a></h2>
<p>To execute the WordCount example with Apache Wayang, you need to execute your program with the 'wayang-submit' command:</p>
@@ -48,7 +48,7 @@
</ul>
<h1>Executing Coverage</h1>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean verify jacoco:report</span><br></span></code></pre><div class="buttonGroup__atx [...]
-<p>the final report is placed on <code>./target/aggregate.exec/aggregate.exec</code></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guide/getting-started"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Getting started</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul [...]
+<p>the final report is placed on <code>./target/aggregate.exec/aggregate.exec</code></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/guide/getting-started"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Getting started</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guide/ml4all"><div class="pagination-nav__ [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/guide/json-wayang-plan-guide/index.html b/docs/guide/json-wayang-plan-guide/index.html
index 38f1a8ed..3c82ff39 100644
--- a/docs/guide/json-wayang-plan-guide/index.html
+++ b/docs/guide/json-wayang-plan-guide/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Documentation of Supported Operators in JSON-REST API | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/json-wayang-plan-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This is not a full coverage of supported operators and plan parameters in the API. These are only the ones that we were able to verify ourselves working through testing, and that we allow in the agentic systems.</p>
<p>For a Wayang plan in JSON to be executable, it must at least contain two main properties in its outer object: “context” and “operators”.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overall-wayang-plan-structure">Overall Wayang Plan structure<a href="#overall-wayang-plan-structure" class="hash-link" aria-label="Direct link to Overall Wayang Plan structure" title="Direct link to Overall Wayang Plan structure"></a></h2>
diff --git a/docs/guide/ml4all/index.html b/docs/guide/ml4all/index.html
index eed014a1..4d761b0e 100644
--- a/docs/guide/ml4all/index.html
+++ b/docs/guide/ml4all/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Scalable Machine Learning | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/ml4all"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>ML4all is a system that frees users from the burden of machine learning algorithm selection and low-level implementation details.
It uses a new abstraction that is capable of solving most ML tasks and provides a cost-based optimizer on top of the proposed abstraction for choosing the best gradient descent algorithm in a given setting.
Our results show that ML4all is more than two orders of magnitude faster than state-of-the-art systems and can process large datasets that were not possible before.</p>
@@ -64,7 +64,7 @@ The interfaces can be found in <code>org.apache.wayang.ml4all.abstraction.api</c
<ul>
<li>SGD:</li>
</ul>
-<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">./bin/wayang-submit org.apache.wayang.ml4all.examples.RunSGD spark </span><span class="to [...]
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">./bin/wayang-submit org.apache.wayang.ml4all.examples.RunSGD spark </span><span class="to [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/docs/guide/optimizer/index.html b/docs/guide/optimizer/index.html
index e60b08fe..8d075b18 100644
--- a/docs/guide/optimizer/index.html
+++ b/docs/guide/optimizer/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Data processing optimizer | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/optimizer"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="e [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This guide covers the configuration settings available in Apache Wayang and tips on tuning performance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-files">Configuration Files<a href="#configuration-files" class="hash-link" aria-label="Direct link to Configuration Files" title="Direct link to Configuration Files"></a></h2>
<ul>
diff --git a/docs/guide/wayang-docker/index.html b/docs/guide/wayang-docker/index.html
index deda610d..904bc6a4 100644
--- a/docs/guide/wayang-docker/index.html
+++ b/docs/guide/wayang-docker/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Using Wayang's docker image | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/guide/wayang-docker"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>This guide provides a brief example for developers that want to utilize
docker in order to develop with Wayang.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-creating-a-docker-compose-file">Step 1: Creating a docker-compose file<a href="#step-1-creating-a-docker-compose-file" class="hash-link" aria-label="Direct link to Step 1: Creating a docker-compose file" title="Direct link to Step 1: Creating a docker-compose file"></a></h2>
diff --git a/docs/introduction/about/index.html b/docs/introduction/about/index.html
index c5c9dd31..ed321dda 100644
--- a/docs/introduction/about/index.html
+++ b/docs/introduction/about/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">What is Apache Wayang™? | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/introduction/about"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>Apache Wayang's three-layer architecture provides a strategic <em>abstraction</em> between user applications and underlying data processing platforms, ensuring seamless integration among heterogeneous systems. The application layer encapsulates application-specific logic, while the core layer acts as an intermediary, translating application logic into an intermediate representation (Wayang plan). The Wayang plan is then transformed into an execution plan in the platform layer, wh [...]
<p>One of Wayang’s key innovations is its <em>cross-platform optimizer</em>, which automates data system selection and spares users from making complex platform choices.
This optimization process ensures that the resulted execution plan is tailored to the specific strengths and capabilities of each data engine, maximizing performance and efficiency.</p>
diff --git a/docs/introduction/benchmark/index.html b/docs/introduction/benchmark/index.html
index aac0c3ff..f8d71fdd 100644
--- a/docs/introduction/benchmark/index.html
+++ b/docs/introduction/benchmark/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Benchmarking Wayang | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/introduction/benchmark"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>Apache Wayang has the goal of providing a platform to enable data-agnostic applications and decentralized data processing, the fundamentals of federated learning.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="running-a-relational-query-across-multiple-independent-databases-federation">Running a Relational Query Across Multiple Independent Databases (Federation)<a href="#running-a-relational-query-across-multiple-independent-databases-federation" class="hash-link" aria-label="Direct link to Running a Relational Query Across Multiple Independent Databases (Federation)" title="Direct link to Running a Relational Query Across Multiple Independent [...]
<p>In this use case, we showcase how Apache Wayang addresses the common challenge of analyzing data scattered across diverse systems, a prevalent issue in many data-driven projects. Through Wayang, developers can seamlessly perform analytics on relational data residing in multiple systems. The in-situ data processing approach employed by Wayang introduces data privacy-preserving mechanisms into distributed data analytics tasks.</p>
diff --git a/docs/introduction/features/index.html b/docs/introduction/features/index.html
index bd02c8e0..f508e673 100644
--- a/docs/introduction/features/index.html
+++ b/docs/introduction/features/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Features | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/introduction/features"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>Apache Wayang's cross-platform optimizer stands out as its most distinguishing feature. It not only selects the most suitable processing engine for each task, but also empowers users to execute a single task across multiple platforms. This capability is achieved through an extensible set of graph transformations applied to the Apache Wayang plan, which identifies alternative execution plans that potentially offer better performance. These alternative plans are then evaluated usin [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="scalable-ml-ml4all">Scalable ML (ML4All)<a href="#scalable-ml-ml4all" class="hash-link" aria-label="Direct link to Scalable ML (ML4All)" title="Direct link to Scalable ML (ML4All)"></a></h3>
<p>ML4all is part of Wayang, enhancing machine learning workflows. ML4all alleviates users from the complexities of algorithm selection and low-level implementation details, enabling them to concentrate on the core aspects of their machine learning applications. By employing an innovative abstraction, ML4all addresses a broad spectrum of machine learning tasks and utilizes a cost-based optimizer to dynamically identify the optimal gradient descent algorithm for each scenario. Notably, ML [...]
diff --git a/docs/start/download/index.html b/docs/start/download/index.html
index 266757f7..81341a7b 100644
--- a/docs/start/download/index.html
+++ b/docs/start/download/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Download Apache Wayang™ | Apache Wayang™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/docs/start/download"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<h1>Releases</h1>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="111">1.1.1<a href="#111" class="hash-link" aria-label="Direct link to 1.1.1" title="Direct link to 1.1.1"></a></h2>
<p>Source Code: <a href="https://www.apache.org/dyn/closer.lua/wayang/1.1.1/apache-wayang-1.1.1-source-release.zip?action=download" target="_blank" rel="noopener noreferrer">zip</a><br>
diff --git a/img/wayang-architecture.svg b/img/wayang-architecture.svg
new file mode 100644
index 00000000..4ad98507
--- /dev/null
+++ b/img/wayang-architecture.svg
@@ -0,0 +1,78 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 360" role="img"
+ aria-label="A single pipeline, written once, feeds the Wayang optimizer, which routes work to the best available engine: Local, Spark, Flink, Postgres, and others.">
+ <style>
+ svg { font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
+ :root {
+ --box-fill: #ffffff;
+ --box-stroke: #cbd5e1;
+ --engine-fill: #f8fafc;
+ --accent: #2563eb;
+ --accent-fill: #eff6ff;
+ --text: #1e293b;
+ --muted: #64748b;
+ --line: #94a3b8;
+ }
+ @media (prefers-color-scheme: dark) {
+ :root {
+ --box-fill: #1e293b;
+ --box-stroke: #334155;
+ --engine-fill: #0f172a;
+ --accent: #60a5fa;
+ --accent-fill: #15294a;
+ --text: #e2e8f0;
+ --muted: #94a3b8;
+ --line: #475569;
+ }
+ }
+ .box { fill: var(--box-fill); stroke: var(--box-stroke); stroke-width: 1.5; }
+ .opt { fill: var(--accent-fill); stroke: var(--accent); stroke-width: 2; }
+ .engine { fill: var(--engine-fill); stroke: var(--box-stroke); stroke-width: 1.5; }
+ .line { stroke: var(--line); stroke-width: 2; fill: none; }
+ .title { fill: var(--text); font-size: 16px; font-weight: 600; }
+ .optttl { fill: var(--accent);font-size: 16px; font-weight: 700; }
+ .sub { fill: var(--muted); font-size: 12px; }
+ .eng { fill: var(--text); font-size: 15px; font-weight: 600; }
+ .cap { fill: var(--muted); font-size: 12px; font-style: italic; }
+ </style>
+
+ <defs>
+ <marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="var(--line)"/>
+ </marker>
+ </defs>
+
+ <!-- Pipeline (written once) -->
+ <rect class="box" x="280" y="20" width="200" height="54" rx="10"/>
+ <text class="title" x="380" y="45" text-anchor="middle">Your pipeline</text>
+ <text class="sub" x="380" y="63" text-anchor="middle">written once</text>
+
+ <!-- arrow: pipeline -> optimizer -->
+ <line class="line" x1="380" y1="74" x2="380" y2="112" marker-end="url(#arrow)"/>
+
+ <!-- Optimizer -->
+ <rect class="opt" x="250" y="118" width="260" height="58" rx="10"/>
+ <text class="optttl" x="380" y="144" text-anchor="middle">Wayang optimizer</text>
+ <text class="sub" x="380" y="163" text-anchor="middle">chooses where each step runs</text>
+
+ <!-- tree connector from optimizer down to the engine row -->
+ <path class="line" d="M 380 176 L 380 210 M 80 210 L 680 210"/>
+ <line class="line" x1="80" y1="210" x2="80" y2="266" marker-end="url(#arrow)"/>
+ <line class="line" x1="280" y1="210" x2="280" y2="266" marker-end="url(#arrow)"/>
+ <line class="line" x1="480" y1="210" x2="480" y2="266" marker-end="url(#arrow)"/>
+ <line class="line" x1="680" y1="210" x2="680" y2="266" marker-end="url(#arrow)"/>
+
+ <!-- Engines -->
+ <rect class="engine" x="20" y="270" width="120" height="50" rx="8"/>
+ <text class="eng" x="80" y="300" text-anchor="middle">Local</text>
+
+ <rect class="engine" x="220" y="270" width="120" height="50" rx="8"/>
+ <text class="eng" x="280" y="300" text-anchor="middle">Spark</text>
+
+ <rect class="engine" x="420" y="270" width="120" height="50" rx="8"/>
+ <text class="eng" x="480" y="300" text-anchor="middle">Flink</text>
+
+ <rect class="engine" x="620" y="270" width="120" height="50" rx="8"/>
+ <text class="eng" x="680" y="300" text-anchor="middle">Postgres</text>
+
+ <text class="cap" x="380" y="346" text-anchor="middle">…and any other supported platform</text>
+</svg>
diff --git a/index.html b/index.html
index 02bda0da..4167e2ab 100644
--- a/index.html
+++ b/index.html
@@ -4,12 +4,12 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
<title data-rh="true">Apache Wayang | Cross-Platform Data Processing</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://wayang.apache.org/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.af2ccd7c.css">
-<script src="/assets/js/runtime~main.195a2256.js" defer="defer"></script>
-<script src="/assets/js/main.588705f8.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Wayang™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.a45e1e19.css">
+<script src="/assets/js/runtime~main.4cf1dd41.js" defer="defer"></script>
+<script src="/assets/js/main.30b76d51.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<p>
Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br>
Apache Wayang, Wayang, Apache, the Apache feather logo, and the Apache Wayang project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
diff --git a/lunr-index-1779524901719.json b/lunr-index-1779524901719.json
deleted file mode 100644
index 97e38ad4..00000000
--- a/lunr-index-1779524901719.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,120.756,1,345.845,2,564.361,3,59.919,4,374.124,5,230.15]],["content/0",[]],["keywords/0",[]],["title/1",[6,1191.069]],["content/1",[0,2.559,1,3.731,3,0.961,4,7.927,7,7.651,8,5.838,9,6.6,10,5.706,11,7.16,12,5.129,13,10.801,14,3.396,15,6.173,16,7.376,17,8.482,18,7.376,19,7.838,20,7.376,21,7.376,22,5.401,23,3.826,24,7.651,25,8.108,26,5.401,27,5.401,28,4.562,29,2.848,30,2.156,31,2.848,32,2.848,33,2.566,3 [...]
\ No newline at end of file
diff --git a/lunr-index-1779780497213.json b/lunr-index-1779780497213.json
new file mode 100644
index 00000000..548d4d04
--- /dev/null
+++ b/lunr-index-1779780497213.json
@@ -0,0 +1 @@
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,125.455,1,346.378,2,562.521,3,60.265,4,364.39,5,224.697]],["content/0",[]],["keywords/0",[]],["title/1",[6,1195.253]],["content/1",[0,2.667,1,3.719,3,0.966,4,7.745,7,7.631,8,5.55,9,6.543,10,5.663,11,7.176,12,5.01,13,10.783,14,3.351,15,6.17,16,7.307,17,8.452,18,7.307,19,7.847,20,7.307,21,7.307,22,5.363,23,3.812,24,7.631,25,8.115,26,5.363,27,5.363,28,4.667,29,2.751,30,2.136,31,2.751,32,2.572,33,2.615,3 [...]
\ No newline at end of file
diff --git a/lunr-index.json b/lunr-index.json
index 97e38ad4..548d4d04 100644
--- a/lunr-index.json
+++ b/lunr-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,120.756,1,345.845,2,564.361,3,59.919,4,374.124,5,230.15]],["content/0",[]],["keywords/0",[]],["title/1",[6,1191.069]],["content/1",[0,2.559,1,3.731,3,0.961,4,7.927,7,7.651,8,5.838,9,6.6,10,5.706,11,7.16,12,5.129,13,10.801,14,3.396,15,6.173,16,7.376,17,8.482,18,7.376,19,7.838,20,7.376,21,7.376,22,5.401,23,3.826,24,7.651,25,8.108,26,5.401,27,5.401,28,4.562,29,2.848,30,2.156,31,2.848,32,2.848,33,2.566,3 [...]
\ No newline at end of file
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,125.455,1,346.378,2,562.521,3,60.265,4,364.39,5,224.697]],["content/0",[]],["keywords/0",[]],["title/1",[6,1195.253]],["content/1",[0,2.667,1,3.719,3,0.966,4,7.745,7,7.631,8,5.55,9,6.543,10,5.663,11,7.176,12,5.01,13,10.783,14,3.351,15,6.17,16,7.307,17,8.452,18,7.307,19,7.847,20,7.307,21,7.307,22,5.363,23,3.812,24,7.631,25,8.115,26,5.363,27,5.363,28,4.667,29,2.751,30,2.136,31,2.751,32,2.572,33,2.615,3 [...]
\ No newline at end of file
diff --git a/search-doc-1779524901719.json b/search-doc-1779524901719.json
deleted file mode 100644
index 7db6dd6c..00000000
--- a/search-doc-1779524901719.json
+++ /dev/null
@@ -1 +0,0 @@
-{"searchDocs":[{"title":"Apache Kafka meets Wayang - Part 1","type":0,"sectionRef":"#","url":"/blog/kafka-meets-wayang-1","content":"","keywords":"","version":null},{"title":"Intro","type":1,"pageTitle":"Apache Kafka meets Wayang - Part 1","url":"/blog/kafka-meets-wayang-1#intro","content":" This article is the first of a four part series about federated data analysis using Apache Wayang. The first article starts with an introduction of a typical data colaboration scenario which will em [...]
\ No newline at end of file
diff --git a/search-doc-1779780497213.json b/search-doc-1779780497213.json
new file mode 100644
index 00000000..7cf84979
--- /dev/null
+++ b/search-doc-1779780497213.json
@@ -0,0 +1 @@
+{"searchDocs":[{"title":"Apache Kafka meets Wayang - Part 1","type":0,"sectionRef":"#","url":"/blog/kafka-meets-wayang-1","content":"","keywords":"","version":null},{"title":"Intro","type":1,"pageTitle":"Apache Kafka meets Wayang - Part 1","url":"/blog/kafka-meets-wayang-1#intro","content":" This article is the first of a four part series about federated data analysis using Apache Wayang. The first article starts with an introduction of a typical data colaboration scenario which will em [...]
\ No newline at end of file
diff --git a/search-doc.json b/search-doc.json
index 7db6dd6c..7cf84979 100644
--- a/search-doc.json
+++ b/search-doc.json
@@ -1 +1 @@
-{"searchDocs":[{"title":"Apache Kafka meets Wayang - Part 1","type":0,"sectionRef":"#","url":"/blog/kafka-meets-wayang-1","content":"","keywords":"","version":null},{"title":"Intro","type":1,"pageTitle":"Apache Kafka meets Wayang - Part 1","url":"/blog/kafka-meets-wayang-1#intro","content":" This article is the first of a four part series about federated data analysis using Apache Wayang. The first article starts with an introduction of a typical data colaboration scenario which will em [...]
\ No newline at end of file
+{"searchDocs":[{"title":"Apache Kafka meets Wayang - Part 1","type":0,"sectionRef":"#","url":"/blog/kafka-meets-wayang-1","content":"","keywords":"","version":null},{"title":"Intro","type":1,"pageTitle":"Apache Kafka meets Wayang - Part 1","url":"/blog/kafka-meets-wayang-1#intro","content":" This article is the first of a four part series about federated data analysis using Apache Wayang. The first article starts with an introduction of a typical data colaboration scenario which will em [...]
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index f6d8ab86..53f87533 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://wayang.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://wayang.apache.org/blog/archive</loc><chang [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://wayang.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://wayang.apache.org/blog/archive</loc><chang [...]
\ No newline at end of file