This is an automated email from the ASF dual-hosted git repository. shuber pushed a commit to branch UNOMI-932-website-modernization in repository https://gitbox.apache.org/repos/asf/unomi-site.git
commit 064b22bd3f1561bffa82930e2456896ccefdcd11 Author: Serge Huber <[email protected]> AuthorDate: Sat Feb 14 17:29:57 2026 +0100 Contribute pages, SEO & LLM files: testing TODOs, release guide, sitemap - Testing: replace TODOs with Surefire/Failsafe/Pax Exam docs, add CI section - Dependencies: add BOM section with usage examples - Release guide: update versions to 3.0.x, fix typos and stale URLs - Manual release guide: update version examples, fix typos - Encoding fixes: correct mojibake characters on 3 contribute pages - Sitemap: expand from 14 to 29 URLs, add lastmod dates - Robots.txt: remove CSS/JS disallow rules for proper Google rendering - LLM files: update to 3.0.0, Groovy/Java plugin guidance, OpenSearch wording, Salesforce deprecation, Slack access, remove excess Inoyu product listings - All contribute pages: add SEO keywords, fix rel="noopener" Co-authored-by: Cursor <[email protected]> --- src/main/webapp/contribute/become-a-committer.html | 17 +-- src/main/webapp/contribute/committer-guide.html | 7 +- src/main/webapp/contribute/dependencies-guide.html | 13 +- src/main/webapp/contribute/index.html | 13 +- .../webapp/contribute/manual-release-guide.html | 47 +++---- src/main/webapp/contribute/post-commit-guides.html | 3 +- .../contribute/post-commit-policies-details.html | 3 +- .../contribute/post-commit-test-policies.html | 3 +- .../contribute/pre-commit-test-policies.html | 1 + src/main/webapp/contribute/release-guide.html | 51 ++++---- src/main/webapp/contribute/testing.html | 23 ++-- src/main/webapp/contribute/website.html | 11 +- src/main/webapp/llms-full.txt | 47 +++++-- src/main/webapp/llms.txt | 29 +++-- src/main/webapp/privacy-policy.html | 1 + src/main/webapp/robots.txt | 2 - src/main/webapp/sitemap.xml | 137 +++++++++++++++++++-- 17 files changed, 282 insertions(+), 126 deletions(-) diff --git a/src/main/webapp/contribute/become-a-committer.html b/src/main/webapp/contribute/become-a-committer.html index 1543967..4073ad0 100644 --- a/src/main/webapp/contribute/become-a-committer.html +++ b/src/main/webapp/contribute/become-a-committer.html @@ -1,6 +1,7 @@ --- title: Contribute | Become a committer description: "Learn how to become an Apache Unomi committer and what it means to be part of the project." +keywords: "Apache committer, become committer, Unomi committer, open source committer, ASF committer guide" layout: default --- @@ -39,15 +40,15 @@ layout: default </div> </div> <div class="col-lg-9"> - <p>An Apache Unomi <a target="_blank" href="https://www.apache.org/foundation/how-it-works.html#committers">committer</a> has write access to the repository for merging pull requests, but you don't have to be a code contributor to become a committer. Becoming a committer means that ou have the project's trust. Read the <a target="_blank" href="https://www.apache.org/dev/committers.html#committer-responsibilities">ASF documentation</a> for more about being a committer in the A [...] + <p>An Apache Unomi <a target="_blank" rel="noopener" href="https://www.apache.org/foundation/how-it-works.html#committers">committer</a> has write access to the repository for merging pull requests, but you don't have to be a code contributor to become a committer. Becoming a committer means that ou have the project's trust. Read the <a target="_blank" rel="noopener" href="https://www.apache.org/dev/committers.html#committer-responsibilities">ASF documentation</a> for more ab [...] - <p>The <a target="_blank" href="https://www.apache.org/foundation/how-it-works.html#pmc-members">PMC</a> makes someone a committer via nomination, discussion, and then majority vote. We use data from as many sources as possible to inform our reasoning. Here are some examples:</p> + <p>The <a target="_blank" rel="noopener" href="https://www.apache.org/foundation/how-it-works.html#pmc-members">PMC</a> makes someone a committer via nomination, discussion, and then majority vote. We use data from as many sources as possible to inform our reasoning. Here are some examples:</p> <ul> - <li><a target="_blank" href="https://lists.apache.org/[email protected]">dev@ archives</a> and <a target="_blank" href="https://lists.apache.org/[email protected]">statistics</a></li> - <li><a target="_blank" href="https://lists.apache.org/[email protected]">user@ archives</a> and <a target="_blank" href="https://lists.apache.org/[email protected]">statistics</a></li> - <li>Git metrics for <a target="_blank" href="https://github.com/apache/unomi/graphs/contributors">Unomi</a> and the <a target="_blank" href="https://github.com/apache/unomi-site/graphs/contributors">Unomi site</a></li> - <li>Code reviews given and received on <a target="_blank" href="https://github.com/apache/unomi/pulls">Unomi</a> and the <a target="_blank" href="https://github.com/apache/unomi-site/pulls">Unomi site</a></li> + <li><a target="_blank" rel="noopener" href="https://lists.apache.org/[email protected]">dev@ archives</a> and <a target="_blank" rel="noopener" href="https://lists.apache.org/[email protected]">statistics</a></li> + <li><a target="_blank" rel="noopener" href="https://lists.apache.org/[email protected]">user@ archives</a> and <a target="_blank" rel="noopener" href="https://lists.apache.org/[email protected]">statistics</a></li> + <li>Git metrics for <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/graphs/contributors">Unomi</a> and the <a target="_blank" rel="noopener" href="https://github.com/apache/unomi-site/graphs/contributors">Unomi site</a></li> + <li>Code reviews given and received on <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/pulls">Unomi</a> and the <a target="_blank" rel="noopener" href="https://github.com/apache/unomi-site/pulls">Unomi site</a></li> <li>Clear areas of ownership (runtime, API, persistence, documentation, etc.)</li> <li>Public events</li> <li>Firsthand PMC testimonials</li> @@ -63,7 +64,7 @@ layout: default <h4>Knows, upholds, and reinforces the Apache Software Foundation code of conduct</h4> - <p>See the <a target="_blank" href="https://www.apache.org/foundation/policies/conduct.html">ASF documentation</a>. In particular, they manifestly strive to:</p> + <p>See the <a target="_blank" rel="noopener" href="https://www.apache.org/foundation/policies/conduct.html">ASF documentation</a>. In particular, they manifestly strive to:</p> <ul> <li>Be open</li> @@ -78,7 +79,7 @@ layout: default <h4>Knows, upholds, and reinforces the responsibilities of an Apache Software Foundation committer</h4> - <p>See the <a target="_blank" href="https://www.apache.org/dev/committers.html#committer-responsibilities">ASF documentation</a>.</p> + <p>See the <a target="_blank" rel="noopener" href="https://www.apache.org/dev/committers.html#committer-responsibilities">ASF documentation</a>.</p> <ul> <li>They help create a product that will outlive the interest of any particular volunteer (including themselves)</li> diff --git a/src/main/webapp/contribute/committer-guide.html b/src/main/webapp/contribute/committer-guide.html index 90a79b1..dd878af 100644 --- a/src/main/webapp/contribute/committer-guide.html +++ b/src/main/webapp/contribute/committer-guide.html @@ -1,6 +1,7 @@ --- title: Contribute | Committer guide description: "Guidelines for Apache Unomi committers on reviewing and merging code." +keywords: "Unomi committer guide, committer responsibilities, Apache committer, git workflow, code review" layout: default --- @@ -39,7 +40,7 @@ layout: default </div> </div> <div class="col-lg-9"> - <p>This guide is for <a target="_blank" href="https://www.apache.org/foundation/how-it-works.html#committers">committers</a> and covers Unomi's guidelines for reviewing and merging code.</p> + <p>This guide is for <a target="_blank" rel="noopener" href="https://www.apache.org/foundation/how-it-works.html#committers">committers</a> and covers Unomi's guidelines for reviewing and merging code.</p> <h3>Always get to LGTM ("Looks good to me!")</h3> @@ -54,9 +55,9 @@ layout: default <h3>Contributor License Agreement</h3> <p>If you are merging a larger contribution, please make sure that the contributor has an ICLA on file with the Apache Secretary. You can view the list of - committers <a target="_blank" href="http://home.apache.org/phonebook.html?unix=committers">here</a>, as well as <a target="_blank" href="http://home.apache.org/unlistedclas.html">ICLA-signers who aren't yet committers</a>.</p> + committers <a target="_blank" rel="noopener" href="https://home.apache.org/phonebook.html?unix=committers">here</a>, as well as <a target="_blank" rel="noopener" href="https://home.apache.org/unlistedclas.html">ICLA-signers who aren't yet committers</a>.</p> - <p>For smaller contributions, however, this is not required. In this case, we rely on <a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0#contributions">clause five</a> of the Apache License, Version 2.0, describing licensing of intentionally submitted contributions.</p> + <p>For smaller contributions, however, this is not required. In this case, we rely on <a target="_blank" rel="noopener" href="https://www.apache.org/licenses/LICENSE-2.0#contributions">clause five</a> of the Apache License, Version 2.0, describing licensing of intentionally submitted contributions.</p> <h3>Tests</h3> diff --git a/src/main/webapp/contribute/dependencies-guide.html b/src/main/webapp/contribute/dependencies-guide.html index 9fd9608..6114aca 100644 --- a/src/main/webapp/contribute/dependencies-guide.html +++ b/src/main/webapp/contribute/dependencies-guide.html @@ -1,6 +1,7 @@ --- title: Contribute | Dependencies guide description: "Learn about policies for keeping Apache Unomi dependencies up to date." +keywords: "Apache Unomi dependencies, BOM, dependency management, Maven, third-party libraries, license compliance" layout: default --- @@ -50,15 +51,15 @@ layout: default <p>This picture can become even more complicated during runtime. Runner specific code might be incompatible with dependencies included by certain modules and if these dependencies leak into runtime, a pipeline might end up in a broken state.</p> - <p>The overall issue is not common to Unomi and well known in the industry as the Diamond <a target="_blank" href="https://en.wikipedia.org/wiki/Dependency_hell">Dependency problem (or Dependency Hell)</a>.</p> + <p>The overall issue is not common to Unomi and well known in the industry as the Diamond <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Dependency_hell">Dependency problem (or Dependency Hell)</a>.</p> <h3>Bill of Materials (BOM)</h3> <p>Starting with Unomi 3, the project uses a <strong>Bill of Materials (BOM)</strong> to centralize and align all dependency versions across the codebase. The BOM is structured in two layers:</p> <ul> - <li><strong><a target="_blank" href="https://github.com/apache/unomi/blob/master/bom/pom.xml"><code>unomi-bom</code></a></strong> — The main BOM. It imports the <a target="_blank" href="https://karaf.apache.org/">Apache Karaf</a> BOM, the Unomi artifacts BOM (below), and declares managed versions for all third-party dependencies used across the project: Jackson, CXF, Elasticsearch, OpenSearch, Groovy, GraphQL, Jetty, Kafka, JUnit, and many more. Every module in the [...] - <li><strong><a target="_blank" href="https://github.com/apache/unomi/blob/master/bom/artifacts/pom.xml"><code>unomi-bom-artifacts</code></a></strong> — A nested BOM that manages all of Unomi’s own module artifacts (API, services, persistence SPI, plugins, extensions, GraphQL, router, shell commands, etc.) with version-aligned declarations. This is especially useful for developers building custom extensions or integrations, as importing this single BOM pulls in [...] + <li><strong><a target="_blank" rel="noopener" href="https://github.com/apache/unomi/blob/master/bom/pom.xml"><code>unomi-bom</code></a></strong> — The main BOM. It imports the <a target="_blank" rel="noopener" href="https://karaf.apache.org/">Apache Karaf</a> BOM, the Unomi artifacts BOM (below), and declares managed versions for all third-party dependencies used across the project: Jackson, CXF, Elasticsearch, OpenSearch, Groovy, GraphQL, Jetty, Kafka, JUnit, and m [...] + <li><strong><a target="_blank" rel="noopener" href="https://github.com/apache/unomi/blob/master/bom/artifacts/pom.xml"><code>unomi-bom-artifacts</code></a></strong> — A nested BOM that manages all of Unomi’s own module artifacts (API, services, persistence SPI, plugins, extensions, GraphQL, router, shell commands, etc.) with version-aligned declarations. This is especially useful for developers building custom extensions or integrations, as importing this sing [...] </ul> <p><strong>Using the BOM in your own project:</strong> If you are building a custom Unomi extension, plugin, or integration, you can import the Unomi BOM in your own <code>pom.xml</code> to avoid having to manually track dependency versions:</p> @@ -92,7 +93,7 @@ layout: default <p>This approach ensures your extension always uses dependency versions that have been tested together as part of the Unomi release, significantly reducing the risk of version conflicts at runtime.</p> - <p>One common solution for the diamond dependency problem is <a target="_blank" href="https://semver.org/">semantic versioning</a>. The basic idea is that dependencies will be versioned in the form <em>x.y.z</em> where <em>x</em> is the <em>major version</em>, <em>y</em> is the <em>minor version</em>, and <em>z</em> is the <em>patch version</em>. A major version change may be backwards incompatible and is expected to be rare. Minor and patch versions may be released more regu [...] + <p>One common solution for the diamond dependency problem is <a target="_blank" rel="noopener" href="https://semver.org/">semantic versioning</a>. The basic idea is that dependencies will be versioned in the form <em>x.y.z</em> where <em>x</em> is the <em>major version</em>, <em>y</em> is the <em>minor version</em>, and <em>z</em> is the <em>patch version</em>. A major version change may be backwards incompatible and is expected to be rare. Minor and patch versions may be rel [...] <h3>Identifying outdated dependencies</h3> @@ -144,11 +145,11 @@ layout: default <p><strong>Dependencies of Java SDK components that may cause issues to other components if leaked should be vendored.</strong></p> - <p><a target="_blank" href="https://www.ardanlabs.com/blog/2013/10/manage-dependencies-with-godep.html">Vendoring</a> is the process of creating copies of third party dependencies. Combined with repackaging, vendoring will allow Unomi components to depend on third party libraries without causing conflicts to other components. Vendoring should be done in a case-by-case basis since this can increase the total number of dependencies deployed in user’s enviroment.</p> + <p><a target="_blank" rel="noopener" href="https://www.ardanlabs.com/blog/2013/10/manage-dependencies-with-godep.html">Vendoring</a> is the process of creating copies of third party dependencies. Combined with repackaging, vendoring will allow Unomi components to depend on third party libraries without causing conflicts to other components. Vendoring should be done in a case-by-case basis since this can increase the total number of dependencies deployed in user’s enviro [...] <h3>Dependency updates and backwards compatibility</h3> - <p>Unomi releases <a target="_blank" href="https://unomi.apache.org/downloads/">adhere to</a> semantic versioning. Hence, community members should take care when updating dependencies. Minor version updates to dependencies should be backwards compatible in most cases. Some updates to dependencies though may result in backwards incompatible API or functionality changes to Unomi. PR reviewers and committers should take care to detect any dependency updates that could potentiall [...] + <p>Unomi releases <a target="_blank" rel="noopener" href="https://unomi.apache.org/download.html">adhere to</a> semantic versioning. Hence, community members should take care when updating dependencies. Minor version updates to dependencies should be backwards compatible in most cases. Some updates to dependencies though may result in backwards incompatible API or functionality changes to Unomi. PR reviewers and committers should take care to detect any dependency updates tha [...] <p>Any exceptions to this policy should only occur in extreme cases (for example, due to a security vulnerability of an existing dependency that is only fixed in a subsequent major version) and should be discussed in the Unomi dev list. Note that backwards incompatible changes to experimental features may be introduced in a minor version release.</p> </div> diff --git a/src/main/webapp/contribute/index.html b/src/main/webapp/contribute/index.html index 9274b33..df5adab 100644 --- a/src/main/webapp/contribute/index.html +++ b/src/main/webapp/contribute/index.html @@ -1,6 +1,7 @@ --- title: Contribute description: "Contribute to Apache Unomi. Help with code, documentation, bug reports, answering questions, and more." +keywords: "contribute Apache Unomi, open source contribution, how to contribute, pull requests, JIRA, developer guide" layout: default --- @@ -50,7 +51,7 @@ layout: default <div class="row g-3 mb-4"> <div class="col-md-6"> <div class="d-flex align-items-start"> - <div class="feature-icon me-3" style="width:2.5rem;height:2.5rem;font-size:1rem"><i class="bi bi-chat-dots"></i></div> + <div class="feature-icon feature-icon-md me-3"><i class="bi bi-chat-dots"></i></div> <div> <h3 class="h6 fw-semibold mb-1">Answer Questions</h3> <p class="small text-muted mb-0">Help users on the <a href="/community/index.html">mailing list</a> or Slack.</p> @@ -59,7 +60,7 @@ layout: default </div> <div class="col-md-6"> <div class="d-flex align-items-start"> - <div class="feature-icon me-3" style="width:2.5rem;height:2.5rem;font-size:1rem"><i class="bi bi-file-text"></i></div> + <div class="feature-icon feature-icon-md me-3"><i class="bi bi-file-text"></i></div> <div> <h3 class="h6 fw-semibold mb-1">Improve Documentation</h3> <p class="small text-muted mb-0">Fix typos, add examples, or write new guides.</p> @@ -68,7 +69,7 @@ layout: default </div> <div class="col-md-6"> <div class="d-flex align-items-start"> - <div class="feature-icon me-3" style="width:2.5rem;height:2.5rem;font-size:1rem"><i class="bi bi-bug"></i></div> + <div class="feature-icon feature-icon-md me-3"><i class="bi bi-bug"></i></div> <div> <h3 class="h6 fw-semibold mb-1">Report Bugs</h3> <p class="small text-muted mb-0">File issues on <a href="https://issues.apache.org/jira/browse/UNOMI" target="_blank" rel="noopener">JIRA</a>.</p> @@ -77,7 +78,7 @@ layout: default </div> <div class="col-md-6"> <div class="d-flex align-items-start"> - <div class="feature-icon me-3" style="width:2.5rem;height:2.5rem;font-size:1rem"><i class="bi bi-code-slash"></i></div> + <div class="feature-icon feature-icon-md me-3"><i class="bi bi-code-slash"></i></div> <div> <h3 class="h6 fw-semibold mb-1">Submit Code</h3> <p class="small text-muted mb-0">Send pull requests with bug fixes, features, or examples.</p> @@ -86,7 +87,7 @@ layout: default </div> <div class="col-md-6"> <div class="d-flex align-items-start"> - <div class="feature-icon me-3" style="width:2.5rem;height:2.5rem;font-size:1rem"><i class="bi bi-eye"></i></div> + <div class="feature-icon feature-icon-md me-3"><i class="bi bi-eye"></i></div> <div> <h3 class="h6 fw-semibold mb-1">Review Designs</h3> <p class="small text-muted mb-0">Discuss proposals on <a href="https://lists.apache.org/[email protected]" target="_blank" rel="noopener">[email protected]</a>.</p> @@ -95,7 +96,7 @@ layout: default </div> <div class="col-md-6"> <div class="d-flex align-items-start"> - <div class="feature-icon me-3" style="width:2.5rem;height:2.5rem;font-size:1rem"><i class="bi bi-share"></i></div> + <div class="feature-icon feature-icon-md me-3"><i class="bi bi-share"></i></div> <div> <h3 class="h6 fw-semibold mb-1">Spread the Word</h3> <p class="small text-muted mb-0">Write blog posts, give talks, or share your experience.</p> diff --git a/src/main/webapp/contribute/manual-release-guide.html b/src/main/webapp/contribute/manual-release-guide.html index 5f74fb2..06ba469 100644 --- a/src/main/webapp/contribute/manual-release-guide.html +++ b/src/main/webapp/contribute/manual-release-guide.html @@ -1,6 +1,7 @@ --- title: Manual Release Guide description: "Manual release guide for Apache Unomi release managers" +keywords: "Apache Unomi release, manual release guide, Maven release, ASF release process, artifact signing" layout: default --- @@ -48,7 +49,7 @@ layout: default <p>Each release is executed by a <em>Release Manager</em>, who is selected among the Unomi committers. This document describes the process that the Release Manager follows to perform a release. Any changes to this process should be discussed and adopted on the <a href="../community/index.html">dev@ mailing list</a>.</p> - <p>Please remember that publishing software has legal consequences. This guide complements the foundation-wide <a href="https://www.apache.org/dev/release.html" target="_blank">Product Release Policy</a> and <a href="https://www.apache.org/dev/release-distribution" target="_blank">Release Distribution Policy</a>.</p> + <p>Please remember that publishing software has legal consequences. This guide complements the foundation-wide <a href="https://www.apache.org/dev/release.html" target="_blank" rel="noopener">Product Release Policy</a> and <a href="https://www.apache.org/dev/release-distribution" target="_blank" rel="noopener">Release Distribution Policy</a>.</p> <h2 id="overview">Overview</h2> @@ -77,7 +78,7 @@ layout: default <p>In general, the community prefers to have a rotating set of 3-5 Release Managers. Keeping a small core set of managers allows enough people to build expertise in this area and improve processes over time, without Release Managers needing to re-learn the processes for each release. That said, if you are a committer interested in serving the community in this way, please reach out to the community on the dev@ mailing list.</p> - <p>Basically we will be following the procedure described <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank">here</a> with a few more steps and details before and after.</p> + <p>Basically we will be following the procedure described <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank" rel="noopener">here</a> with a few more steps and details before and after.</p> <h3 id="checklist-to-proceed-to-the-next-step">Checklist to proceed to the next step</h3> @@ -117,7 +118,7 @@ gpg --verify test.txt.asc test.txt This should tell you which key was used and display the email address. </li> <li> - Make sure your public KEY is available in this files (if not add your key to the files and commit/push): + Make sure your public KEY is available in these files (if not add your key to the files and commit/push): <ol> <li><a href="https://github.com/apache/unomi/blob/master/KEYS">GIT https://github.com/apache/unomi/blob/master/KEYS (cherry-pick to the branches if necessary)</a></li> <li><a href="https://dist.apache.org/repos/dist/dev/unomi/KEYS">SVN https://dist.apache.org/repos/dist/dev/unomi/KEYS</a></li> @@ -138,7 +139,7 @@ gpg --verify test.txt.asc test.txt <li> Update all JIRAs, close the ones that are still not closed, review tickets that can be closed, postpone to another release tickets that are not managed now. You can use this JIRA page: <a href="https://issues.apache.org/jira/projects/UNOMI?selectedItem=com.atlassian.jira.jira-projects-plugin%3Arelease-page&status=unreleased">Unomi JIRA releases</a>. - Then review the list of tickets that need to be updated, also additionally you can check the list of commits since previous release and insure they are closed using fix version: {{ site.data.unomi.next.stable.version }}. + Then review the list of tickets that need to be updated, also additionally you can check the list of commits since previous release and ensure they are closed using fix version: {{ site.data.unomi.next.stable.version }}. Ideally all tickets listed for version: {{ site.data.unomi.next.stable.version }} should be closed or moved to the next version in case they are not finished/started. </li> <li> @@ -191,7 +192,7 @@ gpg: 'echec de la signature : Inappropriate ioctl for device gpg: signing failed: Inappropriate ioctl for device</code></pre> you can either try to sign a file like this: <pre class="alert alert-primary"><code>gpg -ab test.txt</code></pre> - this will ask for your password and remember it in the agent for a while, or if you want a more permanent solution: <a href="https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors" target="_blank">https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors</a> + this will ask for your password and remember it in the agent for a while, or if you want a more permanent solution: <a href="https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors" target="_blank" rel="noopener">https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors</a> </li> </ol> @@ -199,8 +200,8 @@ gpg: signing failed: Inappropriate ioctl for device</code></pre> <h3 id="publish-repository">Repository</h3> <ol> - <li>Setup server passwords for publishing as document here: - <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank">https://www.apache.org/dev/publishing-maven-artifacts.html</a> and <a href="https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords" target="_blank">https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords</a> + <li>Setup server passwords for publishing as documented here: + <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank" rel="noopener">https://www.apache.org/dev/publishing-maven-artifacts.html</a> and <a href="https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords" target="_blank" rel="noopener">https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords</a> </li> <li>Check into the target directory and unzip the source release and compile it using: <pre class="alert alert-primary"><code>pushd target @@ -228,14 +229,14 @@ popd</code></pre> <li> <pre class="alert alert-primary"><code>mvn -DskipITs=true -DskipTests=true -Drelease.arguments="-Papache-release,integration-tests -DskipITs=true -DskipTests=true" -P integration-tests,docker,\!run-tests release:perform</code></pre> </li> - <li>If something fails, make sure you first drop the staging repository created here: <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache.org/#stagingRepositories</a>.<br> + <li>If something fails, make sure you first drop the staging repository created here: <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">https://repository.apache.org/#stagingRepositories</a>.<br> If you need to relaunch the <code>release:perform</code> and don't have a release.properties, create a <code>release.properties</code> file with the following contents: <pre class="alert alert-primary"><code>scm.url=scm:git:https://gitbox.apache.org/repos/asf?p=unomi.git scm.tag=unomi-root-{{ site.data.unomi.next.stable.version }} and run mvn release:perform</code></pre> </li> - <li>Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache - .org/#stagingRepositories</a> and look for the open staging repositories, you should have two (one for everything and the other for KAR/features) for releases <= 1.2 and just one for versions >= 1.3.0 (because of changes in the Karaf plugins). Close the repositories and given a meaningful comment when closing such as:<br> + <li>Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">https://repository.apache + .org/#stagingRepositories</a> and look for the open staging repositories, you should have two (one for everything and the other for KAR/features) for releases <= 1.2 and just one for versions >= 1.3.0 (because of changes in the Karaf plugins). Close the repositories and give a meaningful comment when closing such as:<br> <strong>Apache Unomi {{ site.data.unomi.next.stable.version }} Release Candidate 1</strong> </li> </ol> @@ -251,9 +252,9 @@ mkdir {{ site.data.unomi.next.stable.version }}</code></pre> </li> <li> Copy all the Zip and Tarbars including ASC (but do not copy the SHA1 or MD5 sum) files from: - <a href="https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi/{{ site.data.unomi.next.stable.version }}/" target="_blank">https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi/{{ site.data.unomi.next.stable.version }}/</a> + <a href="https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi/{{ site.data.unomi.next.stable.version }}/" target="_blank" rel="noopener">https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi/{{ site.data.unomi.next.stable.version }}/</a> and - <a href="https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi-root/{{ site.data.unomi.next.stable.version }}/" target="_blank">https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi-root/{{ site.data.unomi.next.stable.version }}/</a> + <a href="https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi-root/{{ site.data.unomi.next.stable.version }}/" target="_blank" rel="noopener">https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi-root/{{ site.data.unomi.next.stable.version }}/</a> using commands such as : <pre class="alert alert-primary"><code>export REPO_ID=orgapacheunomi-1033 wget https://repository.apache.org/content/repositories/$REPO_ID/org/apache/unomi/unomi-root/{{ site.data.unomi.next.stable.version }}/unomi-root-{{ site.data.unomi.next.stable.version }}-source-release.zip wget https://repository.apache.org/content/repositories/$REPO_ID/org/apache/unomi/unomi-root/{{ site.data.unomi.next.stable.version }}/unomi-root-{{ site.data.unomi.next.stable.version }}-source-release.zip.asc @@ -288,9 +289,9 @@ svn add {{ site.data.unomi.next.stable.version }}</code></pre> <pre class="alert alert-primary"><code>svn commit -m "Apache {{ site.data.unomi.next.stable.version }} Release (for PMC voting)"</code></pre> </li> <li>Send out to the Unomi mailing list a mail to start the voting process, see <a href="#mail-1">[1]</a></li> - <li>If the vote is refused or cancelled, peform the following steps to restart the release process: + <li>If the vote is refused or cancelled, perform the following steps to restart the release process: <ol> - <li>Drop the release in <a href="https://repository.apache.org/#stagingRepositories" target="_blank">Nexus</a></li> + <li>Drop the release in <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">Nexus</a></li> <li>Remove the tag in Git: <pre class="alert alert-primary"><code>git push --delete origin unomi-root-{{ site.data.unomi.next.stable.version }} git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> @@ -319,7 +320,7 @@ git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> In JIRA mark the version as released and add a release date </li> <li> - Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache.org/#stagingRepositories</a> and look for the open staging repositories, you should have one. Select the staging repositoriy and click on <code>release</code>. + Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">https://repository.apache.org/#stagingRepositories</a> and look for the open staging repositories, you should have one. Select the staging repository and click on <code>release</code>. </li> <li>Update the website (in project `unomi-site`) to point to the new release on the download page by first copying the previous archive release and replacing all the version numbers with the current release @@ -330,10 +331,10 @@ git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> <pre class="alert alert-primary"><code>git clone https://gitbox.apache.org/repos/asf/unomi-site.git</code></pre> Perform any modifications, notably change the versions in the pom.xml file: <pre class="alert alert-primary"><code> <properties> - <latest.stable.version>1.5.4</latest.stable.version> - <next.development.version>1.5.5-SNAPSHOT</next.development.version> - <next.stable.version>1.5.5</next.stable.version> - <latest.development.version>2.0.0-SNAPSHOT</latest.development.version> + <latest.stable.version>3.0.0</latest.stable.version> + <next.development.version>3.1.0-SNAPSHOT</next.development.version> + <next.stable.version>3.1.0</next.stable.version> + <latest.development.version>3.1.0-SNAPSHOT</latest.development.version> </properties> </code></pre> Then modify the index.html, download.html to add the new files. For the documentation see the next step. @@ -460,12 +461,12 @@ git push origin -f</code></pre> <li>Release recorded in reporter.apache.org.</li> <li>Release announced on social media.</li> <li>Completion declared on the dev@ mailing list.</li> - <li>Check that old release where removed from the dist server</li> + <li>Check that old releases were removed from the dist server</li> </ol> <h2 id="improve-the-process">Improve the process</h2> - <p>It is important that we improve the release processes over time. Once you've finished the release, please take a step back and look what areas of this process and be improved. Perhaps some part of the process can be simplified. Perhaps parts of this guide can be clarified.</p> + <p>It is important that we improve the release processes over time. Once you've finished the release, please take a step back and look at what areas of this process can be improved. Perhaps some part of the process can be simplified. Perhaps parts of this guide can be clarified.</p> <p>If we have specific ideas, please start a discussion on the dev@ mailing list and/or propose a pull request to update this guide. Thanks!</p> @@ -568,10 +569,10 @@ designed to manage customers, leads and visitors' data and help personalize cust experiences. More details regarding Apache Unomi can be found here: -http://unomi.apache.org/ +https://unomi.apache.org/ The release artifacts can be downloaded here: -https://dist.apache.org/repos/dist/release/incubator/unomi/{{ site.data.unomi.next.stable.version }}/ +https://dist.apache.org/repos/dist/release/unomi/{{ site.data.unomi.next.stable.version }}/ All JIRAs completed for this release are tagged with 'FixVersion = {{ site.data.unomi.next.stable.version }}'; the JIRA release notes can be found here: diff --git a/src/main/webapp/contribute/post-commit-guides.html b/src/main/webapp/contribute/post-commit-guides.html index fb0cae9..92c506f 100644 --- a/src/main/webapp/contribute/post-commit-guides.html +++ b/src/main/webapp/contribute/post-commit-guides.html @@ -1,6 +1,7 @@ --- title: Post-commit Guides description: "Guides for handling post-commit test failures in Apache Unomi" +keywords: "post-commit guide, Apache Unomi, new committer, ASF procedures, committer onboarding" layout: default --- @@ -51,7 +52,7 @@ layout: default <ol> <li>If you can triage it yourself, go for it.</li> <li>Look at the GitHub blame for the files with problematic code.</li> - <li>Ask in the <a target="_blank" href="https://the-asf.slack.com/messages/CBP2Z98Q7/">Unomi Slack chat</a>.</li> + <li>Ask in the <a target="_blank" rel="noopener" href="https://the-asf.slack.com/messages/CBP2Z98Q7/">Unomi Slack chat</a>.</li> <li>Write to the dev list: [email protected]</li> </ol> diff --git a/src/main/webapp/contribute/post-commit-policies-details.html b/src/main/webapp/contribute/post-commit-policies-details.html index cfed087..78a3916 100644 --- a/src/main/webapp/contribute/post-commit-policies-details.html +++ b/src/main/webapp/contribute/post-commit-policies-details.html @@ -1,6 +1,7 @@ --- title: Post-commit Details description: "Detailed information about Apache Unomi post-commit test policies" +keywords: "Apache Unomi policies, commit policies, code review, testing requirements, ASF guidelines" layout: default --- @@ -72,7 +73,7 @@ layout: default <p>Flaky tests do not provide a reliable quality signal, so it is important to quickly fix the flakiness. If a fix will take awhile to implement, it is safer to disable the test until the fix is ready.</p> - <p>Martin Fowler has a good <a target="_blank" href="https://martinfowler.com/articles/nonDeterminism.html">article</a> about non-determinism in tests.</p> + <p>Martin Fowler has a good <a target="_blank" rel="noopener" href="https://martinfowler.com/articles/nonDeterminism.html">article</a> about non-determinism in tests.</p> <h3 id="remove_flake">Flaky tests must be fixed or removed</h3> diff --git a/src/main/webapp/contribute/post-commit-test-policies.html b/src/main/webapp/contribute/post-commit-test-policies.html index eb24219..0b030ed 100644 --- a/src/main/webapp/contribute/post-commit-test-policies.html +++ b/src/main/webapp/contribute/post-commit-test-policies.html @@ -1,6 +1,7 @@ --- title: Contribute | Post-commit test policies description: "Learn about Apache Unomi post-commit test policies and requirements." +keywords: "Apache Unomi testing, post-commit tests, test policies, CI testing, quality assurance" layout: default --- @@ -62,7 +63,7 @@ layout: default <h4>I found a test failure</h4> <ol> - <li>Create a <a target="_blank" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20UNOMI%20AND%20component%20%3D%20test-failures">JIRA issue</a> and assign it to yourself.</li> + <li>Create a <a target="_blank" rel="noopener" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20UNOMI%20AND%20component%20%3D%20test-failures">JIRA issue</a> and assign it to yourself.</li> <li>Do high level triage of the failure.</li> <li><a href="post-commit-guides.html#find_specialist">Assign the JIRA issue to a relevant person</a>.</li> </ol> diff --git a/src/main/webapp/contribute/pre-commit-test-policies.html b/src/main/webapp/contribute/pre-commit-test-policies.html index 90389ce..8391876 100644 --- a/src/main/webapp/contribute/pre-commit-test-policies.html +++ b/src/main/webapp/contribute/pre-commit-test-policies.html @@ -1,6 +1,7 @@ --- title: Contribute | Pre-commit test policies description: "Learn about Apache Unomi pre-commit test policies and requirements." +keywords: "Apache Unomi testing, pre-commit tests, test policies, code quality, testing guidelines" layout: default --- diff --git a/src/main/webapp/contribute/release-guide.html b/src/main/webapp/contribute/release-guide.html index 33b016d..33c0a57 100644 --- a/src/main/webapp/contribute/release-guide.html +++ b/src/main/webapp/contribute/release-guide.html @@ -1,6 +1,7 @@ --- title: Release Guide description: "Guide for Apache Unomi release managers on how to perform a release" +keywords: "Apache Unomi release, release guide, ASF release, Maven release, version management" layout: default --- @@ -47,7 +48,7 @@ layout: default <p>Each release is executed by a <em>Release Manager</em>, who is selected among the Unomi committers. This document describes the process that the Release Manager follows to perform a release. Any changes to this process should be discussed and adopted on the <a href="../community/index.html">dev@ mailing list</a>.</p> - <p>Please remember that publishing software has legal consequences. This guide complements the foundation-wide <a href="https://www.apache.org/dev/release.html" target="_blank">Product Release Policy</a> and <a href="https://www.apache.org/dev/release-distribution" target="_blank">Release Distribution Policy</a>.</p> + <p>Please remember that publishing software has legal consequences. This guide complements the foundation-wide <a href="https://www.apache.org/dev/release.html" target="_blank" rel="noopener">Product Release Policy</a> and <a href="https://www.apache.org/dev/release-distribution" target="_blank" rel="noopener">Release Distribution Policy</a>.</p> <h2 id="overview">Overview</h2> @@ -76,7 +77,7 @@ layout: default <p>In general, the community prefers to have a rotating set of 3-5 Release Managers. Keeping a small core set of managers allows enough people to build expertise in this area and improve processes over time, without Release Managers needing to re-learn the processes for each release. That said, if you are a committer interested in serving the community in this way, please reach out to the community on the dev@ mailing list.</p> - <p>Basically we will be following the procedure described <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank">here</a> with a few more steps and details before and after.</p> + <p>Basically we will be following the procedure described <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank" rel="noopener">here</a> with a few more steps and details before and after.</p> <h3 id="checklist-to-proceed-to-the-next-step">Checklist to proceed to the next step</h3> @@ -116,7 +117,7 @@ gpg --verify test.txt.asc test.txt This should tell you which key was used and display the email address. </li> <li> - Make sure your public KEY is available in this files (if not add your key to the files and commit/push): + Make sure your public KEY is available in these files (if not add your key to the files and commit/push): <ol> <li><a href="https://github.com/apache/unomi/blob/master/KEYS">GIT https://github.com/apache/unomi/blob/master/KEYS (cherry-pick to the branches if necessary)</a></li> <li><a href="https://dist.apache.org/repos/dist/dev/unomi/KEYS">SVN https://dist.apache.org/repos/dist/dev/unomi/KEYS</a></li> @@ -137,7 +138,7 @@ gpg --verify test.txt.asc test.txt <li> Update all JIRAs, close the ones that are still not closed, review tickets that can be closed, postpone to another release tickets that are not managed now. You can use this JIRA page: <a href="https://issues.apache.org/jira/projects/UNOMI?selectedItem=com.atlassian.jira.jira-projects-plugin%3Arelease-page&status=unreleased">Unomi JIRA releases</a>. - Then review the list of tickets that need to be updated, also additionally you can check the list of commits since previous release and insure they are closed using fix version: {{ site.data.unomi.next.stable.version }}. + Then review the list of tickets that need to be updated, also additionally you can check the list of commits since previous release and ensure they are closed using fix version: {{ site.data.unomi.next.stable.version }}. Ideally all tickets listed for version: {{ site.data.unomi.next.stable.version }} should be closed or moved to the next version in case they are not finished/started. </li> <li> @@ -158,8 +159,8 @@ gpg --verify test.txt.asc test.txt <li>Make sure you have a Docker installation properly configured on the machine building the project, as it is required to build everything. </li> - <li>Setup server passwords for publishing as document here: - <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank">https://www.apache.org/dev/publishing-maven-artifacts.html</a> and <a href="https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords" target="_blank">https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords</a> + <li>Setup server passwords for publishing as documented here: + <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank" rel="noopener">https://www.apache.org/dev/publishing-maven-artifacts.html</a> and <a href="https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords" target="_blank" rel="noopener">https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords</a> </li> <li>Launch the first build script using. <pre class="alert alert-primary"><code>./release-stage-1.sh {{ site.data.unomi.next.stable.version }} BRANCH_NAME</code></pre> @@ -181,21 +182,21 @@ gpg: 'echec de la signature : Inappropriate ioctl for device gpg: signing failed: Inappropriate ioctl for device</code></pre> you can either try to sign a file like this: <pre class="alert alert-primary"><code>gpg -ab test.txt</code></pre> - this will ask for your password and remember it in the agent for a while, or if you want a more permanent solution: <a href="https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors" target="_blank">https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors</a> + this will ask for your password and remember it in the agent for a while, or if you want a more permanent solution: <a href="https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors" target="_blank" rel="noopener">https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors</a> </li> </ol> <h2 id="publish-the-release">Publish the release</h2> <h3 id="publish-repository">Repository</h3> <ol> - <li>If something fails, make sure you first drop the staging repository created here: <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache.org/#stagingRepositories</a>.<br> + <li>If something fails, make sure you first drop the staging repository created here: <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">https://repository.apache.org/#stagingRepositories</a>.<br> If you need to relaunch the <code>release:perform</code> and don't have a release.properties, create a <code>release.properties</code> file with the following contents: <pre class="alert alert-primary"><code>scm.url=scm:git:https://gitbox.apache.org/repos/asf?p=unomi.git scm.tag=unomi-root-{{ site.data.unomi.next.stable.version }} and run mvn release:perform</code></pre> </li> - <li>Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache - .org/#stagingRepositories</a> and look for the open staging repositories, you should have two (one for everything and the other for KAR/features) for releases <= 1.2 and just one for versions >= 1.3.0 (because of changes in the Karaf plugins). Close the repositories and given a meaningful comment when closing such as:<br> + <li>Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">https://repository.apache + .org/#stagingRepositories</a> and look for the open staging repositories, you should have two (one for everything and the other for KAR/features) for releases <= 1.2 and just one for versions >= 1.3.0 (because of changes in the Karaf plugins). Close the repositories and give a meaningful comment when closing such as:<br> <strong>Apache Unomi {{ site.data.unomi.next.stable.version }} Release Candidate 1</strong>. If no artefact related to Unomi is present, something wrong happened in <code>release-stage-1.sh</code>. </li> </ol> @@ -207,9 +208,9 @@ and run mvn release:perform</code></pre> where NEXUS-UNOMI-ID is the ID generated by Nexus for the staging artifacts. </li> <li>Send out to the Unomi mailing list a mail to start the voting process, see <a href="#mail-1">[1]</a></li> - <li>If the vote is refused or cancelled, peform the following steps to restart the release process: + <li>If the vote is refused or cancelled, perform the following steps to restart the release process: <ol> - <li>Drop the release in <a href="https://repository.apache.org/#stagingRepositories" target="_blank">Nexus</a></li> + <li>Drop the release in <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">Nexus</a></li> <li>Remove the tag in Git: <pre class="alert alert-primary"><code>git push --delete origin unomi-root-{{ site.data.unomi.next.stable.version }} git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> @@ -238,7 +239,7 @@ git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> In JIRA mark the version as released and add a release date </li> <li> - Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache.org/#stagingRepositories</a> and look for the open staging repositories, you should have one. Select the staging repositoriy and click on <code>release</code>. + Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener">https://repository.apache.org/#stagingRepositories</a> and look for the open staging repositories, you should have one. Select the staging repository and click on <code>release</code>. </li> <li>Update the website (in project `unomi-site`) to point to the new release on the download page by first copying the previous archive release and replacing all the version numbers with the current release @@ -251,12 +252,12 @@ git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> <pre class="alert alert-primary"><code> latest: stable: - version: 2.3.0 - .development: - version: 2.4.0-SNAPSHOT + version: 3.0.0 + development: + version: 3.1.0-SNAPSHOT next: stable: - version: 2.4.0 + version: 3.1.0 ... </code></pre> Then modify the <code>index.html</code>, <code>download.html</code> to add the new files. For the documentation see the next step or git <a href="https://github.com/apache/unomi-site/blob/master/README.md">README</a>. @@ -274,7 +275,7 @@ git tag -d unomi-root-{{ site.data.unomi.next.stable.version }}</code></pre> This generates the site in the <code>target/site</code> folder. </li> <li> - Once the site build, deploy the web site changes using: + Once the site builds, deploy the web site changes using: <pre class="alert alert-primary"><code> mvn install scm-publish:publish-scm -Dusername=YOUR_APACHE_USERNAME -Dpassword=YOUR_APACHE_PASSWORD</code></pre> </li> @@ -300,9 +301,9 @@ LATEST_VERSION="3.0.0-SNAPSHOT" LATEST_DIR="latest" # Stable version (release branch) -STABLE_BRANCH="unomi-2.7.x" -STABLE_VERSION="2.7.0" -STABLE_DIR="2_7_x" +STABLE_BRANCH="unomi-3.0.x" +STABLE_VERSION="3.0.0" +STABLE_DIR="3_0_x" </code></pre> </li> <li> @@ -383,12 +384,12 @@ git push origin -f</code></pre> <li>Release recorded in reporter.apache.org.</li> <li>Release announced on social media.</li> <li>Completion declared on the dev@ mailing list.</li> - <li>Check that old release where removed from the dist server</li> + <li>Check that old releases were removed from the dist server</li> </ol> <h2 id="improve-the-process">Improve the process</h2> - <p>It is important that we improve the release processes over time. Once you've finished the release, please take a step back and look what areas of this process and be improved. Perhaps some part of the process can be simplified. Perhaps parts of this guide can be clarified.</p> + <p>It is important that we improve the release processes over time. Once you've finished the release, please take a step back and look at what areas of this process can be improved. Perhaps some part of the process can be simplified. Perhaps parts of this guide can be clarified.</p> <p>If we have specific ideas, please start a discussion on the dev@ mailing list and/or propose a pull request to update this guide. Thanks!</p> @@ -491,10 +492,10 @@ designed to manage customers, leads and visitors' data and help personalize cust experiences. More details regarding Apache Unomi can be found here: -http://unomi.apache.org/ +https://unomi.apache.org/ The release artifacts can be downloaded here: -https://dist.apache.org/repos/dist/release/incubator/unomi/{{ site.data.unomi.next.stable.version }}/ +https://dist.apache.org/repos/dist/release/unomi/{{ site.data.unomi.next.stable.version }}/ All JIRAs completed for this release are tagged with 'FixVersion = {{ site.data.unomi.next.stable.version }}'; the JIRA release notes can be found here: diff --git a/src/main/webapp/contribute/testing.html b/src/main/webapp/contribute/testing.html index 9ada187..7345908 100644 --- a/src/main/webapp/contribute/testing.html +++ b/src/main/webapp/contribute/testing.html @@ -1,6 +1,7 @@ --- title: Contribute | Testing description: "Learn how to write tests for Apache Unomi, which tests are appropriate where, and when tests are run." +keywords: "Apache Unomi testing, unit tests, integration tests, Pax Exam, JUnit, Maven Surefire, CI/CD, GitHub Actions" layout: default --- @@ -43,11 +44,11 @@ layout: default <h3 id="testing-scenarios">Testing Scenarios</h3> - <p>Ideally, all available tests should be run against a pull request (PR) before it's allowed to be committed to Unomi's <a target="_blank" href="https://github.com/apache/unomi">Github</a> repo. This is not possible, however, due to a combination of time and resource constraints. Running all tests for each PR would take hours or even days using available resources, which would slow down development considerably.</p> + <p>Ideally, all available tests should be run against a pull request (PR) before it's allowed to be committed to Unomi's <a target="_blank" rel="noopener" href="https://github.com/apache/unomi">Github</a> repo. This is not possible, however, due to a combination of time and resource constraints. Running all tests for each PR would take hours or even days using available resources, which would slow down development considerably.</p> <p>Thus tests are split into <em>pre-commit</em> and <em>post-commit</em> suites. Pre-commit is fast, while post-commit is comprehensive. As their names imply, pre-commit tests are run on each PR before it is committed, while post-commits run periodically against the master branch (i.e. on already committed PRs).</p> - <p>Unomi uses <a target="_blank" href="https://github.com/apache/unomi/actions/workflows/unomi-ci-build-tests.yml">GitHub Actions</a> to run pre-commit and post-commit tests.</p> + <p>Unomi uses <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/actions/workflows/unomi-ci-build-tests.yml">GitHub Actions</a> to run pre-commit and post-commit tests.</p> <h4 id="pre-commit">Pre-commit</h4> @@ -61,11 +62,11 @@ layout: default <h4 id="post-commit">Post-commit</h4> - <p>Running in post-commit removes the stringent time constraint, which gives us the ability to do more comprehensive testing. In post-commit the full integration test suite is executed against both supported search engines — <strong>Elasticsearch</strong> and <strong>OpenSearch</strong> — via the <code>-Pintegration-tests</code> Maven profile. The suite is defined in <a target="_blank" href="https://github.com/apache/unomi/blob/master/itests/src/test/java/org/apac [...] + <p>Running in post-commit removes the stringent time constraint, which gives us the ability to do more comprehensive testing. In post-commit the full integration test suite is executed against both supported search engines — <strong>Elasticsearch</strong> and <strong>OpenSearch</strong> — via the <code>-Pintegration-tests</code> Maven profile. The suite is defined in <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/blob/master/itests/src/tes [...] - <p>Adding new integration tests is generally as easy as adding a <code>*IT.java</code> file to the <code>itests/</code> module and registering it in the <code>AllITs.java</code> suite class. New tests should extend <a target="_blank" href="https://github.com/apache/unomi/blob/master/itests/src/test/java/org/apache/unomi/itests/BaseIT.java"><code>BaseIT</code></a>, which provides access to all Unomi OSGi services, an HTTP client for REST API calls, and helper methods for waiti [...] + <p>Adding new integration tests is generally as easy as adding a <code>*IT.java</code> file to the <code>itests/</code> module and registering it in the <code>AllITs.java</code> suite class. New tests should extend <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/blob/master/itests/src/test/java/org/apache/unomi/itests/BaseIT.java"><code>BaseIT</code></a>, which provides access to all Unomi OSGi services, an HTTP client for REST API calls, and helper me [...] - <p>Post-commit test results can be found in <a target="_blank" href="https://github.com/apache/unomi/actions/workflows/unomi-ci-build-tests.yml">GitHub Actions</a>.</p> + <p>Post-commit test results can be found in <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/actions/workflows/unomi-ci-build-tests.yml">GitHub Actions</a>.</p> <h3 id="testing-types">Testing Types</h3> @@ -100,18 +101,18 @@ layout: default <p>Unomi’s integration tests use the following technology stack:</p> <ul> - <li><strong><a target="_blank" href="https://ops4j1.jira.com/wiki/spaces/PAXEXAM4/overview">Pax Exam</a></strong> — An OSGi testing framework that provisions and manages the Apache Karaf container used during tests. It handles downloading the Unomi distribution, configuring features, and injecting OSGi services into test classes.</li> - <li><strong><a target="_blank" href="https://karaf.apache.org/">Apache Karaf</a> Test Support</strong> — Provides the base class (<code>KarafTestSupport</code>) for container-based integration tests, enabling Karaf shell command execution and OSGi service lookups.</li> - <li><strong><a target="_blank" href="https://maven.apache.org/surefire/maven-failsafe-plugin/">Maven Failsafe Plugin</a></strong> — Executes the integration tests during the <code>integration-test</code> phase and verifies results in the <code>verify</code> phase. Tests follow the <code>*IT.java</code> naming convention.</li> + <li><strong><a target="_blank" rel="noopener" href="https://ops4j1.jira.com/wiki/spaces/PAXEXAM4/overview">Pax Exam</a></strong> — An OSGi testing framework that provisions and manages the Apache Karaf container used during tests. It handles downloading the Unomi distribution, configuring features, and injecting OSGi services into test classes.</li> + <li><strong><a target="_blank" rel="noopener" href="https://karaf.apache.org/">Apache Karaf</a> Test Support</strong> — Provides the base class (<code>KarafTestSupport</code>) for container-based integration tests, enabling Karaf shell command execution and OSGi service lookups.</li> + <li><strong><a target="_blank" rel="noopener" href="https://maven.apache.org/surefire/maven-failsafe-plugin/">Maven Failsafe Plugin</a></strong> — Executes the integration tests during the <code>integration-test</code> phase and verifies results in the <code>verify</code> phase. Tests follow the <code>*IT.java</code> naming convention.</li> <li><strong>Embedded Elasticsearch / Docker OpenSearch</strong> — The Elasticsearch profile uses the <code>elasticsearch-maven-plugin</code> to start an embedded Elasticsearch instance, while the OpenSearch profile uses the <code>docker-maven-plugin</code> to spin up an OpenSearch container.</li> - <li><strong><a target="_blank" href="https://www.jacoco.org/">JaCoCo</a></strong> — Optionally collects code coverage data during integration test runs.</li> + <li><strong><a target="_blank" rel="noopener" href="https://www.jacoco.org/">JaCoCo</a></strong> — Optionally collects code coverage data during integration test runs.</li> </ul> - <p>All test classes extend <a target="_blank" href="https://github.com/apache/unomi/blob/master/itests/src/test/java/org/apache/unomi/itests/BaseIT.java"><code>BaseIT</code></a>, which provides access to injected Unomi services (ProfileService, RulesService, SegmentService, etc.), a pre-configured HTTP client for REST API testing, and utility methods for polling asynchronous operations.</p> + <p>All test classes extend <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/blob/master/itests/src/test/java/org/apache/unomi/itests/BaseIT.java"><code>BaseIT</code></a>, which provides access to injected Unomi services (ProfileService, RulesService, SegmentService, etc.), a pre-configured HTTP client for REST API testing, and utility methods for polling asynchronous operations.</p> <h4 id="ci">Continuous Integration</h4> - <p>Unomi uses <strong>GitHub Actions</strong> for continuous integration. The <a target="_blank" href="https://github.com/apache/unomi/blob/master/.github/workflows/unomi-ci-build-tests.yml"><code>unomi-ci-build-tests.yml</code></a> workflow is triggered on every push to <code>master</code> and on pull requests. It runs in two stages:</p> + <p>Unomi uses <strong>GitHub Actions</strong> for continuous integration. The <a target="_blank" rel="noopener" href="https://github.com/apache/unomi/blob/master/.github/workflows/unomi-ci-build-tests.yml"><code>unomi-ci-build-tests.yml</code></a> workflow is triggered on every push to <code>master</code> and on pull requests. It runs in two stages:</p> <ol> <li><strong>Unit tests</strong> — A full <code>mvn clean install</code> build with a 15-minute timeout. This must pass before integration tests begin.</li> diff --git a/src/main/webapp/contribute/website.html b/src/main/webapp/contribute/website.html index 3c1931b..30d74ad 100644 --- a/src/main/webapp/contribute/website.html +++ b/src/main/webapp/contribute/website.html @@ -1,6 +1,7 @@ --- title: Website Guide -description: "Guide for contributing to the Apache Unomi website" +description: "Guide for contributing to the Apache Unomi website, including Jekyll setup, content editing, and publishing." +keywords: "Apache Unomi website, contribute website, Jekyll, site development, documentation" layout: default --- @@ -44,13 +45,13 @@ layout: default <p>Contributions to the website require the same steps as contributions to the main repository, so start with the instructions for <a href="index.html">Contributing Code</a>.</p> - <p>The Unomi website is in the <a target="_blank" href="https://github.com/apache/unomi-site">Unomi Site GitHub mirror</a> repository in the <code>asf-site</code> branch (<em>not</em> <code>master</code>).</p> + <p>The Unomi website is in the <a target="_blank" rel="noopener" href="https://github.com/apache/unomi-site">Unomi Site GitHub mirror</a> repository in the <code>asf-site</code> branch (<em>not</em> <code>master</code>).</p> - <p>Issues are tracked in the <a target="_blank" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20UNOMI%20AND%20component%20%3D%20website">website</a> component in JIRA.</p> + <p>Issues are tracked in the <a target="_blank" rel="noopener" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20UNOMI%20AND%20component%20%3D%20website">website</a> component in JIRA.</p> <h3 id="one-time-setup">One-time Setup</h3> - <p>The <a target="_blank" href="https://github.com/apache/unomi-site/blob/asf-site/README.md">README file</a> in the website repository has more information on how to set up the required dependencies for your development environment.</p> + <p>The <a target="_blank" rel="noopener" href="https://github.com/apache/unomi-site/blob/asf-site/README.md">README file</a> in the website repository has more information on how to set up the required dependencies for your development environment.</p> <p>The general guidelines for cloning a repository can be adjusted to use the <code>asf-site</code> branch of <code>unomi-site</code>:</p> @@ -77,7 +78,7 @@ layout: default <p class="alert alert-primary"><code>$ git checkout -- content</code></p> - <p>When you are ready, submit a pull request using the <a target="_blank" href="https://github.com/apache/unomi-site">Unomi Site GitHub mirror</a>, including the JIRA issue as usual.</p> + <p>When you are ready, submit a pull request using the <a target="_blank" rel="noopener" href="https://github.com/apache/unomi-site">Unomi Site GitHub mirror</a>, including the JIRA issue as usual.</p> <p>During review, committers will patch in your PR, generate the static <code>content/</code>, and review the changes.</p> diff --git a/src/main/webapp/llms-full.txt b/src/main/webapp/llms-full.txt index 3fa5b6a..9d62e16 100644 --- a/src/main/webapp/llms-full.txt +++ b/src/main/webapp/llms-full.txt @@ -21,8 +21,8 @@ ### Runtime Stack - **Language**: Java - **Runtime Container**: Apache Karaf (OSGi framework) -- **Data Store**: ElasticSearch (currently 7.x) -- **API Protocol**: REST over HTTP/HTTPS with JSON payloads +- **Data Store**: Elasticsearch (9.x). OpenSearch support is in development (committed to main branch, expected in next release) +- **API Protocols**: REST over HTTP/HTTPS with JSON payloads; GraphQL API for flexible queries - **Extension Model**: OSGi bundles, Groovy scripting, JSON descriptors ### Core Components @@ -33,6 +33,7 @@ 5. **Scoring Service**: Calculates engagement/lead scores based on configurable scoring plans 6. **Privacy Service**: Manages consent, anonymization, data export, and profile deletion 7. **Plugin System**: OSGi-based plugins with JSON metadata for extending conditions, actions, and types +8. **GraphQL API**: Flexible query interface for profiles, events, segments, and rules with field-level selection ### Data Flow 1. External systems (web, mobile, CRM, IoT) send events to the REST API @@ -53,6 +54,8 @@ - `/cxs/definitions` - Type definitions - `/cxs/cluster` - Cluster management - `/cxs/privacy` - Privacy operations (consent, anonymize, delete) +- `/cxs/context.json` - Context servlet (main entry point for web tracking, returns personalized content) +- `/graphql` - GraphQL API endpoint for flexible queries ### Key Concepts - **Profile**: A persistent record of a visitor/customer with properties, segments, and scores @@ -78,13 +81,12 @@ Apache Unomi is the **reference implementation** of the OASIS Customer Data Plat ## Connectors & Integrations -### Built-in Connectors -- **Salesforce CRM**: Bidirectional profile/contact sync -- **MailChimp**: Mailing list and campaign integration -- **Custom Groovy**: Write connector logic in Groovy scripts +### Extending Unomi +- **Groovy Actions (recommended)**: Hot-deployable scripts for custom logic — react to events, update profiles, call external APIs, integrate with CRMs and third-party services. No compilation or restart required. Source: https://github.com/apache/unomi/tree/master/extensions/groovy-actions +- **Custom Java Plugins (OSGi)**: For advanced needs (custom conditions, persistence types, deep core integration). Full access to the Unomi API. Guide: https://github.com/apache/unomi/blob/master/manual/src/main/asciidoc/writing-plugins.adoc ### Extension Points -- Custom actions (Java, Groovy) +- Custom actions (Groovy recommended, Java for advanced cases) - Custom conditions (Java) - Custom property types - Custom event types @@ -112,10 +114,9 @@ AI models and autonomous agents require clean, unified, real-time customer data. ### Products Using Apache Unomi - **Jahia jExperience** (https://www.jahia.com): Original contributor, uses Unomi as CDP engine in their DXP +- **Ninetailed Personalization Platform** (https://ninetailed.io): Content personalization platform built on Unomi - **Dropsolid Experience Cloud** (https://dropsolid.com): Integrates Unomi for smart segmentation with Drupal CMS and Mautic -- **Unomi UI**: Open source (Apache License v2) user interface for Unomi by Inoyu (coming soon) - **Inoyu SaaS**: Fully managed cloud-hosted Unomi service (coming soon) -- **Inoyu UI**: Commercial-grade management interface for Unomi (coming soon) ### Commercial Support Providers - **Inoyu** (https://www.inoyu.dev): Founded by original Unomi developer, CDP implementations and extensions @@ -125,24 +126,33 @@ AI models and autonomous agents require clean, unified, real-time customer data. - **Users Mailing List**: [email protected] (subscribe: [email protected]) - **Dev Mailing List**: [email protected] (subscribe: [email protected]) -- **Slack**: #unomi on ASF Slack (free signup: https://s.apache.org/slack-invite) +- **Slack**: #unomi on ASF Slack (https://the-asf.slack.com) — Apache committers sign in directly; others request guest access via [email protected] (see https://infra.apache.org/slack.html) - **Monthly Meetings**: Online, alternating times for global coverage - **JIRA**: https://issues.apache.org/jira/browse/UNOMI - **GitHub**: https://github.com/apache/unomi +## Bill of Materials (BOM) + +Starting with Unomi 3.0, the project uses a two-layer BOM for dependency management: +- **unomi-bom** (https://github.com/apache/unomi/blob/master/bom/pom.xml): Main BOM importing Karaf BOM and managing all third-party dependency versions (Jackson, CXF, Elasticsearch, Groovy, GraphQL, etc.) +- **unomi-bom-artifacts** (https://github.com/apache/unomi/blob/master/bom/artifacts/pom.xml): Manages all Unomi module artifacts for consistent versioning in custom extensions + +Extension developers can import `unomi-bom` in their `pom.xml` to automatically align with tested dependency versions. + ## Quick Start (Docker) ```yaml version: '3.8' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 + image: docker.elastic.co/elasticsearch/elasticsearch:9.1.3 environment: - discovery.type=single-node + - xpack.security.enabled=false ports: - 9200:9200 unomi: - image: apache/unomi:2.7.0 + image: apache/unomi:3.0.0 environment: - UNOMI_ELASTICSEARCH_ADDRESSES=elasticsearch:9200 ports: @@ -154,10 +164,21 @@ services: Run with `docker-compose up`, verify at https://localhost:9443/cxs/cluster (credentials: karaf/karaf). +## Frequently Asked Questions + +- **What is Apache Unomi?** An open source Customer Data Platform (CDP) managed by the Apache Software Foundation. It collects customer data from any source, builds unified profiles, enables real-time segmentation and personalization, and includes built-in GDPR compliance. +- **How does Unomi differ from proprietary CDPs?** It is 100% open source (Apache License 2.0), self-hosted, vendor-neutral, and extensible through OSGi plugins. No vendor lock-in, no per-profile pricing. +- **What storage backends are supported?** Elasticsearch (9.x) in the current release. OpenSearch support has been committed to the main branch and is expected in the next release. +- **Does Unomi have a GraphQL API?** Yes, Unomi 3.0 includes a GraphQL API alongside the REST API for flexible querying of profiles, events, segments, and rules. +- **Can I use Unomi with AI systems?** Yes. Feed unified customer profiles, segments, and event streams to AI agents, LLMs, chatbots, recommendation engines, and ML models via REST or GraphQL API. Built-in consent management ensures AI only processes consented data. +- **What is the OASIS CXS standard?** A Customer Data Platform specification from OASIS. Apache Unomi is its reference implementation. +- **How do I extend Unomi?** Through OSGi bundles (Java), Groovy scripts, JSON descriptors for custom conditions/actions, and REST API extensions. +- **What is the Bill of Materials (BOM)?** Starting with Unomi 3.0, the project provides a Maven BOM (`unomi-bom`) to centralize dependency versions for extension developers. + ## History - **2014**: Project started at Jahia - **2015**: Entered Apache Incubator - **2019**: Graduated to Apache Top-Level Project - **2022**: Version 2.0.0 released (major architecture update) -- **2025**: Version 3.0.0 released (current stable, major upgrade to Karaf and ElasticSearch client) +- **2025**: Version 3.0.0 released (current stable, major upgrade to Karaf 4.4, new Elasticsearch Java client 9.x, GraphQL API, Bill of Materials for dependency management). OpenSearch support committed to main branch (expected in next release) diff --git a/src/main/webapp/llms.txt b/src/main/webapp/llms.txt index 831e46a..c0af81f 100644 --- a/src/main/webapp/llms.txt +++ b/src/main/webapp/llms.txt @@ -9,9 +9,9 @@ - **License**: Apache License 2.0 - **Language**: Java - **Runtime**: Apache Karaf (OSGi) -- **Storage**: ElasticSearch -- **API**: REST/JSON -- **Current Stable Version**: 2.7.0 +- **Storage**: Elasticsearch (9.x); OpenSearch support coming in next release +- **API**: REST/JSON & GraphQL +- **Current Stable Version**: 3.0.0 - **Website**: https://unomi.apache.org - **Source Code**: https://github.com/apache/unomi - **Issue Tracker**: https://issues.apache.org/jira/browse/UNOMI @@ -26,7 +26,9 @@ - **Rules Engine**: Built-in rule engine that triggers actions when conditions are met on events or profiles - **Privacy / GDPR**: Consent management, data anonymization, profile deletion, data portability - **Plugin Architecture**: Extend functionality through OSGi plugins, Groovy actions, and JSON descriptors -- **Connectors**: Salesforce CRM, MailChimp, and custom connectors via plugin API +- **Connectors**: MailChimp and custom connectors via plugin API (Salesforce connector was deprecated) +- **GraphQL API**: Flexible query API for profiles, events, segments, and rules +- **Multi-backend**: OpenSearch support is in development (committed to main branch, coming in next release) ## Use Cases @@ -53,7 +55,7 @@ The fastest way to try Apache Unomi is with Docker: docker-compose up ``` -Using the provided docker-compose.yml with ElasticSearch 7.10.2 and Apache Unomi. +Using the provided docker-compose.yml with Elasticsearch and Apache Unomi 3.0.0. Full getting started guide: https://unomi.apache.org/get-started.html Docker quick start: https://unomi.apache.org/get-started.html#quickstart @@ -69,7 +71,7 @@ Docker quick start: https://unomi.apache.org/get-started.html#quickstart - **Users mailing list**: [email protected] (subscribe: [email protected]) - **Dev mailing list**: [email protected] (subscribe: [email protected]) -- **Slack**: #unomi channel on ASF Slack (https://the-asf.slack.com) — anyone can create a free account at https://s.apache.org/slack-invite +- **Slack**: #unomi channel on ASF Slack (https://the-asf.slack.com) — Apache committers sign in with @apache.org email; others can request a guest invitation via [email protected] (see https://infra.apache.org/slack.html) - **Monthly meetings**: The community meets monthly online - **JIRA**: https://issues.apache.org/jira/browse/UNOMI @@ -77,10 +79,9 @@ Docker quick start: https://unomi.apache.org/get-started.html#quickstart ### Products Built on Apache Unomi - **Jahia jExperience**: CDP and Digital Experience Platform (initial contributor of Unomi) — https://www.jahia.com +- **Ninetailed Personalization Platform**: Content personalization platform using Unomi — https://ninetailed.io - **Dropsolid Experience Cloud**: DXP with Drupal CMS, Mautic, and Unomi CDP — https://dropsolid.com -- **Unomi UI**: Open source (Apache License v2) user interface for Apache Unomi by Inoyu (coming soon) - **Inoyu SaaS**: Fully managed cloud-hosted Unomi service (coming soon) -- **Inoyu UI**: Commercial-grade management interface for Unomi (coming soon) ### Commercial Support - **Inoyu**: CDP implementations, commercial extensions and support — https://www.inoyu.dev @@ -88,4 +89,14 @@ Docker quick start: https://unomi.apache.org/get-started.html#quickstart ## Architecture -Apache Unomi is a REST server. Data sources (web, mobile, CRM, IoT) send events via the REST API. The processing engine stores data in ElasticSearch, evaluates segments and rules in real-time, and outputs personalization decisions, scores, and data exports. All communication is JSON over HTTP/HTTPS. +Apache Unomi is a REST server. Data sources (web, mobile, CRM, IoT) send events via the REST API. The processing engine stores data in Elasticsearch, evaluates segments and rules in real-time, and outputs personalization decisions, scores, and data exports. All communication is JSON over HTTP/HTTPS. A GraphQL API is also available for flexible querying of profiles, events, segments, and rules. + +## Frequently Asked Questions + +- **What is Apache Unomi?** An open source Customer Data Platform (CDP) managed by the Apache Software Foundation that unifies customer data, enables real-time segmentation and personalization, and provides built-in GDPR compliance. +- **How do I get started?** Use Docker Compose for the fastest setup: https://unomi.apache.org/get-started.html#quickstart +- **What storage does it use?** Elasticsearch (9.x). OpenSearch support is in development and will be available in the next release. +- **Does it have a GraphQL API?** Yes, Unomi 3.0 includes a GraphQL API alongside the REST API. +- **Is it GDPR compliant?** Yes, with built-in consent management, data anonymization, profile deletion, and data portability. +- **Can I use it with AI?** Yes — feed unified customer profiles and event data to AI agents, LLMs, recommendation engines, and predictive models via the REST or GraphQL API. +- **What is the OASIS CXS standard?** A Customer Data Platform specification from OASIS. Apache Unomi is its reference implementation. diff --git a/src/main/webapp/privacy-policy.html b/src/main/webapp/privacy-policy.html index 74caf8c..a82e1f4 100644 --- a/src/main/webapp/privacy-policy.html +++ b/src/main/webapp/privacy-policy.html @@ -1,6 +1,7 @@ --- title: Privacy Policy description: "Apache Unomi website privacy policy. Information about data collection, analytics, and cookie usage." +keywords: "Apache Unomi privacy policy, website privacy, data collection, cookies, Matomo analytics" layout: default --- diff --git a/src/main/webapp/robots.txt b/src/main/webapp/robots.txt index c54ca2f..32c6357 100644 --- a/src/main/webapp/robots.txt +++ b/src/main/webapp/robots.txt @@ -1,8 +1,6 @@ # Apache Unomi Website - https://unomi.apache.org User-agent: * Allow: / -Disallow: /assets/js/ -Disallow: /assets/css/ # Sitemap Sitemap: https://unomi.apache.org/sitemap.xml diff --git a/src/main/webapp/sitemap.xml b/src/main/webapp/sitemap.xml index 33ba5cd..82d3c74 100644 --- a/src/main/webapp/sitemap.xml +++ b/src/main/webapp/sitemap.xml @@ -1,72 +1,185 @@ <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> + <!-- Homepage --> <url> <loc>https://unomi.apache.org/</loc> + <lastmod>2026-02-09</lastmod> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> + + <!-- Primary navigation pages --> <url> <loc>https://unomi.apache.org/get-started.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.9</priority> </url> <url> <loc>https://unomi.apache.org/documentation.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.9</priority> </url> <url> <loc>https://unomi.apache.org/download.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.9</priority> </url> <url> - <loc>https://unomi.apache.org/community/</loc> + <loc>https://unomi.apache.org/use-cases.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> <url> <loc>https://unomi.apache.org/integrations.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> <url> - <loc>https://unomi.apache.org/use-cases.html</loc> - <changefreq>monthly</changefreq> + <loc>https://unomi.apache.org/tutorial.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> <priority>0.7</priority> </url> <url> <loc>https://unomi.apache.org/resources.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>monthly</changefreq> + <priority>0.7</priority> + </url> + <url> + <loc>https://unomi.apache.org/stories.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.6</priority> </url> + + <!-- Community section --> <url> - <loc>https://unomi.apache.org/tutorial.html</loc> - <changefreq>yearly</changefreq> - <priority>0.5</priority> + <loc>https://unomi.apache.org/community/</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>monthly</changefreq> + <priority>0.8</priority> </url> <url> - <loc>https://unomi.apache.org/stories.html</loc> + <loc>https://unomi.apache.org/community/team.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> - <priority>0.5</priority> + <priority>0.6</priority> </url> <url> - <loc>https://unomi.apache.org/contribute/</loc> + <loc>https://unomi.apache.org/community/events/</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> <priority>0.6</priority> </url> <url> - <loc>https://unomi.apache.org/community/team.html</loc> + <loc>https://unomi.apache.org/community/events/apachecon/</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.4</priority> + </url> + <url> + <loc>https://unomi.apache.org/community/events/meetups/2021-11-18.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.3</priority> + </url> + <url> + <loc>https://unomi.apache.org/community/policies.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.4</priority> + </url> + <url> + <loc>https://unomi.apache.org/community/maturity-model-report.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.3</priority> + </url> + + <!-- Contribute section --> + <url> + <loc>https://unomi.apache.org/contribute/</loc> + <lastmod>2026-02-09</lastmod> <changefreq>monthly</changefreq> + <priority>0.7</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/become-a-committer.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> <priority>0.5</priority> </url> <url> - <loc>https://unomi.apache.org/community/events/</loc> - <changefreq>monthly</changefreq> + <loc>https://unomi.apache.org/contribute/committer-guide.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.5</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/testing.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.5</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/dependencies-guide.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.5</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/release-guide.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> <priority>0.4</priority> </url> + <url> + <loc>https://unomi.apache.org/contribute/manual-release-guide.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.4</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/website.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.4</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/post-commit-guides.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.3</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/post-commit-policies-details.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.3</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/post-commit-test-policies.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.3</priority> + </url> + <url> + <loc>https://unomi.apache.org/contribute/pre-commit-test-policies.html</loc> + <lastmod>2026-02-09</lastmod> + <changefreq>yearly</changefreq> + <priority>0.3</priority> + </url> + + <!-- Other pages --> <url> <loc>https://unomi.apache.org/privacy-policy.html</loc> + <lastmod>2026-02-09</lastmod> <changefreq>yearly</changefreq> <priority>0.2</priority> </url>
