This is an automated email from the ASF dual-hosted git repository.
OpenPj pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/manifoldcf-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new c1e0a24d Added blog section
c1e0a24d is described below
commit c1e0a24d7efeb7e12d3f7cd8ed9b136bd51fe7c8
Author: Piergiorgio Lucidi <[email protected]>
AuthorDate: Thu Aug 6 11:17:46 2026 +0200
Added blog section
---
content/en_US/blog-first-article.html | 482 +++++++++++++++++++
content/en_US/blog-manifoldcf-2-31-release.html | 535 +++++++++++++++++++++
.../en_US/{developer-resources.html => blog.html} | 191 +++++---
content/en_US/books-and-presentations.html | 3 +
content/en_US/developer-resources.html | 3 +
content/en_US/download.html | 3 +
content/en_US/index.html | 3 +
content/en_US/mail.html | 3 +
content/en_US/release-documentation.html | 3 +
content/en_US/security.html | 3 +
content/en_US/verify.html | 3 +
content/en_US/who.html | 3 +
content/index.html | 3 +
content/ja_JP/developer-resources.html | 3 +
content/ja_JP/download.html | 3 +
content/ja_JP/index.html | 3 +
content/ja_JP/mail.html | 3 +
content/ja_JP/release-documentation.html | 3 +
content/linkmap.html | 9 +
content/zh_CN/developer-resources.html | 3 +
content/zh_CN/download.html | 3 +
content/zh_CN/index.html | 3 +
content/zh_CN/mail.html | 3 +
content/zh_CN/release-documentation.html | 3 +
24 files changed, 1210 insertions(+), 67 deletions(-)
diff --git a/content/en_US/blog-first-article.html
b/content/en_US/blog-first-article.html
new file mode 100644
index 00000000..2928d5a0
--- /dev/null
+++ b/content/en_US/blog-first-article.html
@@ -0,0 +1,482 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.9">
+<meta name="Forrest-skin-name" content="lucene">
+<title>Welcome to the Apache ManifoldCF Blog: Connecting Enterprise Content to
Search Engines</title>
+<link type="text/css" href="../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../skin/screen.css"
rel="stylesheet">
+<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../skin/profile.css" rel="stylesheet">
+<script src="../skin/getBlank.js" language="javascript"
type="text/javascript"></script><script src="../skin/getMenu.js"
language="javascript" type="text/javascript"></script><script
src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="icon" type="image/png" href="../images/favicon.png" sizes="16x16">
+<link rel="shortcut icon" href="../images/favicon.png">
+<style type="text/css">
+.article-header {
+ border-bottom: 2px solid #0f4c81;
+ padding-bottom: 15px;
+ margin-bottom: 25px;
+}
+.article-meta {
+ background-color: #f5f7fa;
+ border-left: 4px solid #0f4c81;
+ padding: 10px 15px;
+ font-size: 0.92em;
+ color: #455a64;
+ margin-bottom: 20px;
+}
+.article-meta span {
+ margin-right: 20px;
+}
+.article-badge {
+ background-color: #00838f;
+ color: #ffffff;
+ padding: 2px 8px;
+ border-radius: 10px;
+ font-size: 0.8em;
+ font-weight: bold;
+}
+.info-box {
+ background-color: #e8f5e9;
+ border-left: 4px solid #2e7d32;
+ padding: 14px 18px;
+ margin: 18px 0;
+ border-radius: 0 4px 4px 0;
+}
+.info-box-title {
+ font-weight: bold;
+ color: #1b5e20;
+ margin-bottom: 6px;
+}
+.architecture-table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 20px 0;
+}
+.architecture-table th {
+ background-color: #0f4c81;
+ color: #ffffff;
+ padding: 10px 14px;
+ text-align: left;
+}
+.architecture-table td {
+ border: 1px solid #cfd8dc;
+ padding: 10px 14px;
+}
+.architecture-table tr:nth-child(even) {
+ background-color: #f8fafc;
+}
+.code-snippet {
+ background-color: #263238;
+ color: #eceff1;
+ padding: 14px;
+ border-radius: 6px;
+ font-family: "Courier New", Courier, monospace;
+ font-size: 0.9em;
+ overflow-x: auto;
+ margin: 16px 0;
+}
+.back-to-blog {
+ margin-top: 30px;
+ padding-top: 15px;
+ border-top: 1px solid #e0e0e0;
+}
+</style>
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="https://www.apache.org/">Apache</a> > <a
href="http://manifoldcf.apache.org">ManifoldCF</a> > <a
href="../en_US/blog.html">Blog</a><script src="../skin/breadcrumbs.js"
language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+ |header
+ +-->
+<div class="header">
+<!--+
+ |start group logo
+ +-->
+<div class="grouplogo">
+<a href="http://www.apache.org"><img class="logoImage" alt="Apache"
src="../images/SupportApache-small.png" width="128px" height="128px"
title="Apache Software Foundation"></a>
+</div>
+<!--+
+ |end group logo
+ +-->
+<!--+
+ |start Project Logo
+ +-->
+<div class="projectlogo">
+<a href="http://manifoldcf.apache.org"><img class="logoImage" alt="Apache
ManifoldCF" src="../images/ManifoldCF-logo.PNG" title="ManifoldCF"></a>
+</div>
+<!--+
+ |end Project Logo
+ +-->
+<div class="projectlogo">
+<a href="https://www.apache.org/events/current-event.html"><img
class="logoImage"
src="https://www.apache.org/events/current-event-234x60.png"></a>
+</div>
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="..">Hello!</a>
+</li>
+<li>
+<a class="unselected" href="../en_US/index.html">English</a>
+</li>
+<li class="current">
+<a class="selected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
+<a class="unselected" href="../ja_JP/index.html">日本語</a>
+</li>
+<li>
+<a class="unselected" href="../zh_CN/index.html">中文</a>
+</li>
+<li>
+<a class="unselected"
href="http://cwiki.apache.org/confluence/display/CONNECTORS/Index">Wiki</a>
+</li>
+</ul>
+<!--+
+ |end Tabs
+ +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+ |start Subtabs
+ +-->
+<div id="level2tabs"></div>
+<!--+
+ |end Endtabs
+ +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+
+
+ </div>
+<!--+
+ |start Menu, mainarea
+ +-->
+<!--+
+ |start Menu
+ +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../skin/')"
id="menu_selected_1.1Title" class="menutitle" style="background-image:
url('../skin/images/chapter_open.gif');">English</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display:
block;">
+<div class="menuitem">
+<a href="../en_US/index.html">Welcome</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/download.html">Download</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.3', '../skin/')" id="menu_1.1.3Title"
class="menutitle">License</div>
+<div id="menu_1.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://www.apache.org/licenses/">Apache License</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4', '../skin/')" id="menu_1.1.4Title"
class="menutitle">About</div>
+<div id="menu_1.1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../en_US/who.html">Who We Are</a>
+</div>
+<div class="menuitem">
+<a href="http://www.manning.com/wright/">Get the Book</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/books-and-presentations.html">Books and Presentations</a>
+</div>
+<div class="menuitem">
+<a href="http://www.cafepress.com/lucene/">Buy Stuff</a>
+</div>
+<div class="menuitem">
+<a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a>
+</div>
+<div class="menuitem">
+<a href="http://www.apache.org/foundation/thanks.html">Sponsors of Apache</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.5', '../skin/')" id="menu_1.1.5Title"
class="menutitle">Documentation</div>
+<div id="menu_1.1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../en_US/release-documentation.html">Release Documentation</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.6', '../skin/')" id="menu_1.1.6Title"
class="menutitle">Resources</div>
+<div id="menu_1.1.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../en_US/mail.html">Mailing Lists</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/developer-resources.html">Developer/Integrator Resources</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/security.html">Security Analysis</a>
+</div>
+<div class="menuitem">
+<a href="http://www.apache.org/security/">Report Security Problems</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.7', '../skin/')" id="menu_1.1.7Title"
class="menutitle">Related-Projects</div>
+<div id="menu_1.1.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://incubator.apache.org/droids/">Droids</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/core">Java</a>
+</div>
+<div class="menuitem">
+<a href="http://incubator.apache.org/lucene.net/">Lucene.Net</a>
+</div>
+<div class="menuitem">
+<a href="http://lucy.apache.org">Lucy</a>
+</div>
+<div class="menuitem">
+<a href="http://mahout.apache.org">Mahout</a>
+</div>
+<div class="menuitem">
+<a href="http://nutch.apache.org">Nutch</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/openrelevance/">Open Relevance</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/pylucene/">PyLucene</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/solr/">Solr</a>
+</div>
+<div class="menuitem">
+<a href="http://tika.apache.org">Tika</a>
+</div>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt=""
src="../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+<div id="credit2"></div>
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+
+<div class="article-header">
+ <h1>Welcome to the Apache ManifoldCF Blog: Connecting Enterprise Content to
Search Engines</h1>
+</div>
+
+<div class="article-meta">
+ <span><strong>Published:</strong> July 31, 2026</span>
+ <span><strong>Author:</strong> Apache ManifoldCF Project Team</span>
+ <span class="article-badge">Architecture</span>
+ <span class="article-badge">Security</span>
+ <span class="article-badge">Enterprise Search</span>
+</div>
+
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#intro">1. Introduction: The Enterprise Content Integration
Challenge</a>
+</li>
+<li>
+<a href="#architecture">2. Core Architecture & Connector Model</a>
+</li>
+<li>
+<a href="#security">3. Security Trimming & ACL Enforcement</a>
+</li>
+<li>
+<a href="#connectors">4. Supported Repositories & Output Targets</a>
+</li>
+<li>
+<a href="#future">5. Looking Ahead: Blog Roadmap & Community</a>
+</li>
+</ul>
+</div>
+
+<a name="N10010"></a><a name="intro"></a>
+<h2 class="h3">1. Introduction: The Enterprise Content Integration
Challenge</h2>
+<div class="section">
+<p>
+In modern enterprise environments, valuable unstructured content resides
across dozens of disparate repositories—including Microsoft SharePoint,
Atlassian Confluence, IBM FileNet, EMC Documentum, network file shares,
databases, and cloud platforms like Google Drive and Salesforce.
+</p>
+<p>
+Building an effective search experience across these repositories requires
solving two major challenges:
+</p>
+<ol>
+ <li><strong>High-performance, Incremental Ingestion:</strong> Reliably
extracting documents, metadata, and updates from diverse repositories without
placing undue load on source systems.</li>
+ <li><strong>Document-Level Security (ACL) Enforcement:</strong> Ensuring
that users only see search results for documents they have explicit permission
to access in the source repository.</li>
+</ol>
+<p>
+<strong>Apache ManifoldCF™</strong> is an open-source framework
specifically architected to solve both of these challenges seamlessly.
+</p>
+
+<div class="info-box">
+ <div class="info-box-title">Key Takeaway</div>
+ Apache ManifoldCF acts as an intelligent middleware layer that continuously
crawls source repositories, extracts metadata and security ACLs, and feeds
target search engines (like Solr, Elasticsearch, and OpenSearch) while
maintaining security trimming.
+</div>
+</div>
+
+<a name="N10030"></a><a name="architecture"></a>
+<h2 class="h3">2. Core Architecture & Connector Model</h2>
+<div class="section">
+<p>
+ManifoldCF's modular architecture relies on four distinct types of connectors:
+</p>
+
+<table class="architecture-table">
+ <thead>
+ <tr>
+ <th>Connector Type</th>
+ <th>Role & Functionality</th>
+ <th>Example Connectors</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>Repository Connectors</strong></td>
+ <td>Fetch documents, version strings, metadata, and raw content streams
from source systems.</td>
+ <td>SharePoint, FileNet, Documentum, Jira, Confluence, Web, File System,
HDFS, Google Drive</td>
+ </tr>
+ <tr>
+ <td><strong>Authority Connectors</strong></td>
+ <td>Query authentication systems to retrieve active user and group
security tokens for search-time ACL filtering.</td>
+ <td>Active Directory, LDAP, SharePoint Authority, Salesforce
Authority</td>
+ </tr>
+ <tr>
+ <td><strong>Transformation Connectors</strong></td>
+ <td>Process document streams between extraction and indexing (e.g., text
extraction, metadata mapping).</td>
+ <td>Apache Tika, Metadata Extractor, OpenNLP, Content Limiter</td>
+ </tr>
+ <tr>
+ <td><strong>Output Connectors</strong></td>
+ <td>Receive processed document streams and push indexed data and
security tokens to target repositories.</td>
+ <td>Apache Solr, Elasticsearch, OpenSearch, Amazon CloudSearch, Open
Pipeline</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>
+A typical ManifoldCF ingestion job configures a <em>Repository Connector</em>
to pull documents, optional <em>Transformation Connectors</em> to extract text,
and an <em>Output Connector</em> to index data into Solr or Elasticsearch.
+</p>
+</div>
+
+<a name="N10060"></a><a name="security"></a>
+<h2 class="h3">3. Security Trimming & ACL Enforcement</h2>
+<div class="section">
+<p>
+Unlike naive crawlers that ignore document permissions, ManifoldCF captures
the exact Access Control Lists (ACLs) associated with each document.
+</p>
+<p>
+When indexing a document, ManifoldCF attaches security tokens representing:
+</p>
+<ul>
+ <li><strong>Allow Tokens:</strong> Groups/Users allowed to view the
document.</li>
+ <li><strong>Deny Tokens:</strong> Groups/Users explicitly restricted from
viewing the document.</li>
+ <li><strong>Parent/Folder Tokens:</strong> Hierarchical permission
inheritance.</li>
+</ul>
+
+<p>
+At search time, the application queries ManifoldCF's <strong>Authority
Service</strong> using the logged-in user's identity. The Authority Service
returns the user's active security tokens, which are appended to the search
query (e.g., in Apache Solr or Elasticsearch filters):
+</p>
+
+<div class="code-snippet">
+// Example Solr Filter Query generated by ManifoldCF Authority Service
+fq=(allow_token_document:"group_engineering" OR
allow_token_document:"user_john_doe")
+ AND NOT (deny_token_document:"group_restricted")
+</div>
+
+<p>
+This ensures instant, security-trimmed search results with zero latency impact
during query time.
+</p>
+</div>
+
+<a name="N10090"></a><a name="connectors"></a>
+<h2 class="h3">4. Supported Repositories & Output Targets</h2>
+<div class="section">
+<p>
+Apache ManifoldCF ships out-of-the-box support for a vast ecosystem of
enterprise systems:
+</p>
+<ul>
+ <li><strong>Enterprise Content Management (ECM):</strong> EMC Documentum,
IBM FileNet P8, OpenText LiveLink, Microsoft SharePoint.</li>
+ <li><strong>Collaboration & Social:</strong> Atlassian Confluence,
Atlassian Jira, Salesforce, Google Drive.</li>
+ <li><strong>Data Stores & Files:</strong> Windows/Linux File Systems,
HDFS, JDBC/SQL Databases, Web Crawling, RSS feeds.</li>
+ <li><strong>Search & Storage Destinations:</strong> Apache Solr,
Elasticsearch, OpenSearch, Amazon CloudSearch, File Output.</li>
+</ul>
+</div>
+
+<a name="N100B0"></a><a name="future"></a>
+<h2 class="h3">5. Looking Ahead: Blog Roadmap & Community</h2>
+<div class="section">
+<p>
+This first article marks the beginning of our ongoing blog series. In upcoming
posts, we will dive deep into:
+</p>
+<ul>
+ <li>Configuring high-throughput crawling for 10M+ document repositories.</li>
+ <li>Building custom Repository and Output Connectors in Java.</li>
+ <li>Deploying ManifoldCF on Kubernetes & Docker container
environments.</li>
+ <li>Case studies of real-world enterprise search deployments.</li>
+</ul>
+<p>
+We invite you to get involved with Apache ManifoldCF! Download the latest
release from our <a href="../en_US/download.html">Download Page</a>, subscribe
to our <a href="../en_US/mail.html">Mailing Lists</a>, or contribute on GitHub.
+</p>
+
+<div class="back-to-blog">
+ <a href="../en_US/blog.html">← Back to Main Blog Section</a>
+</div>
+</div>
+
+</div>
+<!--+
+ |end content
+ +-->
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<!--+
+ |start bottomstrip
+ +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2009-2026 <a href="http://www.apache.org/licenses/">The Apache
Software Foundation.</a>
+</div>
+<div class="copyright">
+ Apache ManifoldCF, ManifoldCF, Apache Forrest, Forrest, Apache Solr, Solr,
Apache, the Apache feather logo, the Apache Forrest
+ logo, and the Apache ManifoldCF logo are trademarks of The Apache Software
Foundation.
+ Documentum and EMC are a trademarks of EMC Corporation.
+ SharePoint, Windows, and Microsoft are trademarks of Microsoft, Inc.
+ FileNet P8 and IBM are trademarks of IBM, Inc.
+ LiveLink and OpenText are trademarks of OpenText, Inc.
+ QBase, MetaCarta, and GTS are trademarks of QBase, Inc.
+ Meridio and Autonomy are trademarks of Hewlett Packard, Inc.
+ Alfresco is a trademark of Alfresco Software, Inc.
+ </div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
diff --git a/content/en_US/blog-manifoldcf-2-31-release.html
b/content/en_US/blog-manifoldcf-2-31-release.html
new file mode 100644
index 00000000..19422d04
--- /dev/null
+++ b/content/en_US/blog-manifoldcf-2-31-release.html
@@ -0,0 +1,535 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.9">
+<meta name="Forrest-skin-name" content="lucene">
+<title>Apache ManifoldCF 2.31 Released: The Java 25 Leap, Virtual Threads, and
Next-Gen Core Modernization</title>
+<link type="text/css" href="../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../skin/screen.css"
rel="stylesheet">
+<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../skin/profile.css" rel="stylesheet">
+<script src="../skin/getBlank.js" language="javascript"
type="text/javascript"></script><script src="../skin/getMenu.js"
language="javascript" type="text/javascript"></script><script
src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="icon" type="image/png" href="../images/favicon.png" sizes="16x16">
+<link rel="shortcut icon" href="../images/favicon.png">
+<style type="text/css">
+.article-header {
+ border-bottom: 2px solid #0f4c81;
+ padding-bottom: 15px;
+ margin-bottom: 25px;
+}
+.article-meta {
+ background-color: #f5f7fa;
+ border-left: 4px solid #0f4c81;
+ padding: 10px 15px;
+ font-size: 0.92em;
+ color: #455a64;
+ margin-bottom: 20px;
+}
+.article-meta span {
+ margin-right: 20px;
+}
+.article-badge {
+ background-color: #00838f;
+ color: #ffffff;
+ padding: 2px 8px;
+ border-radius: 10px;
+ font-size: 0.8em;
+ font-weight: bold;
+}
+.info-box {
+ background-color: #e8f5e9;
+ border-left: 4px solid #2e7d32;
+ padding: 14px 18px;
+ margin: 18px 0;
+ border-radius: 0 4px 4px 0;
+}
+.info-box-title {
+ font-weight: bold;
+ color: #1b5e20;
+ margin-bottom: 6px;
+}
+.architecture-table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 20px 0;
+}
+.architecture-table th {
+ background-color: #0f4c81;
+ color: #ffffff;
+ padding: 10px 14px;
+ text-align: left;
+}
+.architecture-table td {
+ border: 1px solid #cfd8dc;
+ padding: 10px 14px;
+}
+.architecture-table tr:nth-child(even) {
+ background-color: #f8fafc;
+}
+.code-snippet {
+ background-color: #263238;
+ color: #eceff1;
+ padding: 14px;
+ border-radius: 6px;
+ font-family: "Courier New", Courier, monospace;
+ font-size: 0.9em;
+ overflow-x: auto;
+ margin: 16px 0;
+}
+.back-to-blog {
+ margin-top: 30px;
+ padding-top: 15px;
+ border-top: 1px solid #e0e0e0;
+}
+</style>
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="https://www.apache.org/">Apache</a> > <a
href="http://manifoldcf.apache.org">ManifoldCF</a> > <a
href="../en_US/blog.html">Blog</a><script src="../skin/breadcrumbs.js"
language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+ |header
+ +-->
+<div class="header">
+<!--+
+ |start group logo
+ +-->
+<div class="grouplogo">
+<a href="http://www.apache.org"><img class="logoImage" alt="Apache"
src="../images/SupportApache-small.png" width="128px" height="128px"
title="Apache Software Foundation"></a>
+</div>
+<!--+
+ |end group logo
+ +-->
+<!--+
+ |start Project Logo
+ +-->
+<div class="projectlogo">
+<a href="http://manifoldcf.apache.org"><img class="logoImage" alt="Apache
ManifoldCF" src="../images/ManifoldCF-logo.PNG" title="ManifoldCF"></a>
+</div>
+<!--+
+ |end Project Logo
+ +-->
+<div class="projectlogo">
+<a href="https://www.apache.org/events/current-event.html"><img
class="logoImage"
src="https://www.apache.org/events/current-event-234x60.png"></a>
+</div>
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="..">Hello!</a>
+</li>
+<li>
+<a class="unselected" href="../en_US/index.html">English</a>
+</li>
+<li class="current">
+<a class="selected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
+<a class="unselected" href="../ja_JP/index.html">日本語</a>
+</li>
+<li>
+<a class="unselected" href="../zh_CN/index.html">中文</a>
+</li>
+<li>
+<a class="unselected"
href="http://cwiki.apache.org/confluence/display/CONNECTORS/Index">Wiki</a>
+</li>
+</ul>
+<!--+
+ |end Tabs
+ +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+ |start Subtabs
+ +-->
+<div id="level2tabs"></div>
+<!--+
+ |end Endtabs
+ +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+
+
+ </div>
+<!--+
+ |start Menu, mainarea
+ +-->
+<!--+
+ |start Menu
+ +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../skin/')"
id="menu_selected_1.1Title" class="menutitle" style="background-image:
url('../skin/images/chapter_open.gif');">English</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display:
block;">
+<div class="menuitem">
+<a href="../en_US/index.html">Welcome</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/download.html">Download</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.3', '../skin/')" id="menu_1.1.3Title"
class="menutitle">License</div>
+<div id="menu_1.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://www.apache.org/licenses/">Apache License</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4', '../skin/')" id="menu_1.1.4Title"
class="menutitle">About</div>
+<div id="menu_1.1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../en_US/who.html">Who We Are</a>
+</div>
+<div class="menuitem">
+<a href="http://www.manning.com/wright/">Get the Book</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/books-and-presentations.html">Books and Presentations</a>
+</div>
+<div class="menuitem">
+<a href="http://www.cafepress.com/lucene/">Buy Stuff</a>
+</div>
+<div class="menuitem">
+<a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a>
+</div>
+<div class="menuitem">
+<a href="http://www.apache.org/foundation/thanks.html">Sponsors of Apache</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.5', '../skin/')" id="menu_1.1.5Title"
class="menutitle">Documentation</div>
+<div id="menu_1.1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../en_US/release-documentation.html">Release Documentation</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.6', '../skin/')" id="menu_1.1.6Title"
class="menutitle">Resources</div>
+<div id="menu_1.1.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../en_US/mail.html">Mailing Lists</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/developer-resources.html">Developer/Integrator Resources</a>
+</div>
+<div class="menuitem">
+<a href="../en_US/security.html">Security Analysis</a>
+</div>
+<div class="menuitem">
+<a href="http://www.apache.org/security/">Report Security Problems</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.7', '../skin/')" id="menu_1.1.7Title"
class="menutitle">Related-Projects</div>
+<div id="menu_1.1.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://incubator.apache.org/droids/">Droids</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/core">Java</a>
+</div>
+<div class="menuitem">
+<a href="http://incubator.apache.org/lucene.net/">Lucene.Net</a>
+</div>
+<div class="menuitem">
+<a href="http://lucy.apache.org">Lucy</a>
+</div>
+<div class="menuitem">
+<a href="http://mahout.apache.org">Mahout</a>
+</div>
+<div class="menuitem">
+<a href="http://nutch.apache.org">Nutch</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/openrelevance/">Open Relevance</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/pylucene/">PyLucene</a>
+</div>
+<div class="menuitem">
+<a href="http://lucene.apache.org/solr/">Solr</a>
+</div>
+<div class="menuitem">
+<a href="http://tika.apache.org">Tika</a>
+</div>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt=""
src="../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+<div id="credit2"></div>
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+
+<div class="article-header">
+ <h1>Apache ManifoldCF 2.31 Released: The Java 25 Leap, Virtual Threads, and
Next-Gen Core Modernization</h1>
+</div>
+
+<div class="article-meta">
+ <span><strong>Published:</strong> July 31, 2026</span>
+ <span><strong>Author:</strong> Piergiorgio Lucidi</span>
+ <span class="article-badge">Release</span>
+ <span class="article-badge">Java 25</span>
+ <span class="article-badge">Virtual Threads</span>
+ <span class="article-badge">Performance</span>
+</div>
+
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#highlights">1. Key Highlights at a Glance</a>
+</li>
+<li>
+<a href="#java25-virtual-threads">2. The Java 25 Leap & Virtual Thread
Concurrency</a>
+</li>
+<li>
+<a href="#jetty12">3. Web Stack Modernization: Jetty 12.1 Integration</a>
+</li>
+<li>
+<a href="#pruning">4. Codebase Pruning: Streamlining Legacy Connectors</a>
+</li>
+<li>
+<a href="#logging">5. Logging & Startup Diagnostics Cleanup</a>
+</li>
+<li>
+<a href="#cicd">6. Container-First & CI/CD Enhancements</a>
+</li>
+<li>
+<a href="#upgrade">7. How to Upgrade to Apache ManifoldCF 2.31</a>
+</li>
+<li>
+<a href="#community">8. Acknowledgments & Community</a>
+</li>
+</ul>
+</div>
+
+<a name="N10010"></a><a name="highlights"></a>
+<h2 class="h3">1. Key Highlights at a Glance</h2>
+<div class="section">
+<p>
+We are thrilled to announce the official release of <strong>Apache ManifoldCF
2.31</strong>! 🚀
+</p>
+<p>
+This release marks one of the most significant architectural milestones in the
history of the Apache ManifoldCF project under issue
<strong>CONNECTORS-1784</strong> (<em>Core Performance & Modernization: The
Java 25 Leap</em>).
+</p>
+<p>
+With ManifoldCF 2.31, we have embraced modern Java runtime capabilities,
adopting <strong>Java 25</strong>, introducing native support for
<strong>Virtual Threads (Project Loom)</strong> across the crawling engine,
upgrading our embedded web server stack to <strong>Jetty 12.1</strong>, pruning
tens of thousands of lines of legacy code, and streamlining our Docker and
CI/CD pipelines.
+</p>
+
+<table class="architecture-table">
+ <thead>
+ <tr>
+ <th>Feature / Area</th>
+ <th>Upgrade / Change</th>
+ <th>Key Benefit</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>Java Baseline</strong></td>
+ <td><strong>Java 25</strong> (with <code>--enable-preview</code>)</td>
+ <td>Modern JVM features, updated class formats, long-term stability</td>
+ </tr>
+ <tr>
+ <td><strong>Concurrency Engine</strong></td>
+ <td><strong>Virtual Threads</strong> (Project Loom)</td>
+ <td>Massively scalable concurrency with low OS thread & memory
overhead</td>
+ </tr>
+ <tr>
+ <td><strong>Embedded Web Server</strong></td>
+ <td><strong>Jetty 12.1</strong></td>
+ <td>Modern HTTP server stack, native virtual thread integration</td>
+ </tr>
+ <tr>
+ <td><strong>Codebase Pruning</strong></td>
+ <td>Removed Legacy Connectors (~88K lines deleted)</td>
+ <td>Leaner build, zero legacy bloat, smaller attack surface</td>
+ </tr>
+ <tr>
+ <td><strong>Logging System</strong></td>
+ <td>Log4j & SLF4J startup optimizations</td>
+ <td>Silenced startup warnings, package-scan deprecations fixed</td>
+ </tr>
+ <tr>
+ <td><strong>DevOps & Testing</strong></td>
+ <td>Docker Integration Test Suite & GitHub Workflows</td>
+ <td>Automated Docker builds, continuous container testing</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<a name="N10030"></a><a name="java25-virtual-threads"></a>
+<h2 class="h3">2. The Java 25 Leap & Virtual Thread Concurrency</h2>
+<div class="section">
+<p>
+Enterprise content integration engines spend a substantial portion of their
execution lifecycle waiting on I/O operations—network latency from HTTP calls,
REST endpoints, database queries, and repository API responses. In traditional
architectures, each worker thread maps directly to an OS platform thread,
consuming significant system memory (stack allocation) and causing expensive
context switching when thousands of concurrent documents are fetched.
+</p>
+
+<div class="info-box">
+ <div class="info-box-title">What Changed in Core Architecture
(CONNECTORS-1784)</div>
+ <ul>
+ <li><strong>CrawlerAgent & Worker Threads:</strong> Document
processing workers and queue dispatchers now utilize lightweight Java 25
Virtual Threads (<code>Executors.newVirtualThreadPerTaskExecutor()</code>).</li>
+ <li><strong>AgentsDaemon:</strong> Central service management converted to
virtual thread execution.</li>
+ <li><strong>Network & Socket Handlers:</strong>
<code>InterruptibleSocketFactory</code>, <code>ThrottledFetcher</code>, and
<code>CommonsHTTPSender</code> were reworked to ensure socket read/write
operations unmount virtual threads cleanly without pinning carrier threads.</li>
+ <li><strong>Authority Servlets:</strong> <code>UserACLServlet</code> now
serves high-concurrency permission check requests using virtual threads.</li>
+ </ul>
+</div>
+
+<p>
+<strong>Performance Impact:</strong> Virtual threads allow ManifoldCF to scale
worker concurrency into thousands of simultaneous fetching operations per node
without experiencing thread starvation or excessive memory growth.
+</p>
+</div>
+
+<a name="N10050"></a><a name="jetty12"></a>
+<h2 class="h3">3. Web Stack Modernization: Jetty 12.1 Integration</h2>
+<div class="section">
+<p>
+To support Java 25 and modern HTTP protocols, the embedded application
container and test harnesses have been updated to <strong>Jetty 12.1</strong>.
+</p>
+<ul>
+ <li><strong>Virtual Thread Connector Engine:</strong> Jetty 12 natively
supports Virtual Thread executors for handling incoming HTTP requests to the
ManifoldCF UI and REST APIs.</li>
+ <li><strong>Updated Servlet Specs:</strong> Aligning with modern Java EE /
Jakarta EE standards.</li>
+ <li><strong>Improved Security & Performance:</strong> Lower connection
latency and better resource cleanup during connector shutdown cycles.</li>
+</ul>
+</div>
+
+<a name="N10070"></a><a name="pruning"></a>
+<h2 class="h3">4. Codebase Pruning: Streamlining Legacy Connectors</h2>
+<div class="section">
+<p>
+Over the years, ManifoldCF accumulated legacy connectors for obsolete or
proprietary systems (e.g., legacy Documentum, FileNet, and Meridio integration
code) requiring legacy third-party SDKs that are no longer available in public
repositories.
+</p>
+<p>
+In 2.31, we conducted a major cleanup, removing <strong>over 88,000 lines of
unmaintained legacy code</strong>:
+</p>
+<ul>
+ <li><strong>Removed:</strong> Legacy Documentum, FileNet, and Meridio
connector modules.</li>
+ <li><strong>Result:</strong> Faster build times with Apache Ant and Apache
Maven, simplified dependency graph, reduced CVE risks, and a smaller Docker
image footprint.</li>
+</ul>
+<div class="info-box">
+ <div class="info-box-title">Active Enterprise Connectors Preserved</div>
+ Active enterprise connectors (such as Solr, OpenSearch, Elasticsearch, CMIS,
Web, JDBC, Google Drive, Amazon S3, SharePoint, Nuxeo, and Generic REST/JSON)
remain fully supported and updated.
+</div>
+</div>
+
+<a name="N10090"></a><a name="logging"></a>
+<h2 class="h3">5. Logging & Startup Diagnostics Cleanup</h2>
+<div class="section">
+<p>
+Starting up enterprise daemons should produce clean, predictable log output.
In 2.31, we addressed two persistent logging friction points:
+</p>
+<ul>
+ <li><strong>Log4j Package Scanning:</strong> Resolved deprecation warnings
regarding package scanning in Log4j configuration
(<code>logging.xml</code>).</li>
+ <li><strong>SLF4J Provider Selection:</strong> Fixed missing SLF4J provider
warnings at startup across single-process, multi-process, and Docker
environments.</li>
+</ul>
+</div>
+
+<a name="N100B0"></a><a name="cicd"></a>
+<h2 class="h3">6. Container-First & CI/CD Enhancements</h2>
+<div class="section">
+<p>
+With ManifoldCF increasingly deployed in modern Cloud Native environments
(Kubernetes, AWS ECS, OpenShift), release 2.31 upgrades our infrastructure
stack:
+</p>
+<ul>
+ <li><strong>Official Java 25 Dockerfile:</strong> Updated base images to
Java 25 runtimes.</li>
+ <li><strong>Automated Docker Integration Tests:</strong> Added
<code>docker-integration-test</code> module and GitHub Workflows to validate
end-to-end containerized deployments automatically on every pull request and
release build.</li>
+ <li><strong>Maven & Release Workflows:</strong> Streamlined GitHub
Actions for generating Release Candidates and publishing artifacts to Maven
Central.</li>
+</ul>
+</div>
+
+<a name="N100D0"></a><a name="upgrade"></a>
+<h2 class="h3">7. How to Upgrade to Apache ManifoldCF 2.31</h2>
+<div class="section">
+<p><strong>Prerequisites:</strong> OpenJDK 25 or higher (with
<code>--enable-preview</code> flag passed to JVM).</p>
+
+<p><strong>Ant Build & Execution:</strong></p>
+<div class="code-snippet">
+# Build the complete release package
+ant clean build
+
+# Run single-process example with Java 25
+cd dist/example
+java --enable-preview -jar start.jar
+</div>
+
+<p><strong>Docker Quickstart:</strong></p>
+<div class="code-snippet">
+docker pull apache/manifoldcf:2.31
+docker run -d -p 8345:8345 --name manifoldcf apache/manifoldcf:2.31
+</div>
+</div>
+
+<a name="N100F0"></a><a name="community"></a>
+<h2 class="h3">8. Acknowledgments & Community</h2>
+<div class="section">
+<p>
+This release was made possible by the dedicated work of the Apache ManifoldCF
PMC and community contributors. Special thanks to all developers, testers, and
users who provided feedback during the 2.31 development cycle!
+</p>
+<ul>
+ <li><strong>Website:</strong> <a
href="https://manifoldcf.apache.org/">https://manifoldcf.apache.org/</a></li>
+ <li><strong>GitHub Repository:</strong> <a
href="https://github.com/apache/manifoldcf">https://github.com/apache/manifoldcf</a></li>
+ <li><strong>Issue Tracker:</strong> <a
href="https://issues.apache.org/jira/projects/CONNECTORS">Apache JIRA
(CONNECTORS)</a></li>
+ <li><strong>Mailing Lists:</strong> <code>[email protected]</code>
/ <code>[email protected]</code></li>
+</ul>
+
+<div class="back-to-blog">
+ <a href="../en_US/blog.html">← Back to Main Blog Section</a>
+</div>
+</div>
+
+</div>
+<!--+
+ |end content
+ +-->
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<!--+
+ |start bottomstrip
+ +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2009-2026 <a href="http://www.apache.org/licenses/">The Apache
Software Foundation.</a>
+</div>
+<div class="copyright">
+ Apache ManifoldCF, ManifoldCF, Apache Forrest, Forrest, Apache Solr, Solr,
Apache, the Apache feather logo, the Apache Forrest
+ logo, and the Apache ManifoldCF logo are trademarks of The Apache Software
Foundation.
+ Documentum and EMC are a trademarks of EMC Corporation.
+ SharePoint, Windows, and Microsoft are trademarks of Microsoft, Inc.
+ FileNet P8 and IBM are trademarks of IBM, Inc.
+ LiveLink and OpenText are trademarks of OpenText, Inc.
+ QBase, MetaCarta, and GTS are trademarks of QBase, Inc.
+ Meridio and Autonomy are trademarks of Hewlett Packard, Inc.
+ Alfresco is a trademark of Alfresco Software, Inc.
+ </div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
diff --git a/content/en_US/developer-resources.html b/content/en_US/blog.html
similarity index 60%
copy from content/en_US/developer-resources.html
copy to content/en_US/blog.html
index ed36f5bf..b1ac4bd8 100644
--- a/content/en_US/developer-resources.html
+++ b/content/en_US/blog.html
@@ -5,7 +5,7 @@
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.9">
<meta name="Forrest-skin-name" content="lucene">
-<title>ManifoldCF - Developer Resources</title>
+<title>ManifoldCF - Blog</title>
<link type="text/css" href="../skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="../skin/screen.css"
rel="stylesheet">
<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
@@ -13,6 +13,70 @@
<script src="../skin/getBlank.js" language="javascript"
type="text/javascript"></script><script src="../skin/getMenu.js"
language="javascript" type="text/javascript"></script><script
src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="icon" type="image/png" href="../images/favicon.png" sizes="16x16">
<link rel="shortcut icon" href="../images/favicon.png">
+<style type="text/css">
+.blog-post-card {
+ border: 1px solid #cfd8dc;
+ border-radius: 6px;
+ padding: 18px 22px;
+ margin-bottom: 24px;
+ background-color: #ffffff;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.04);
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
+}
+.blog-post-card:hover {
+ border-color: #29b6f6;
+ box-shadow: 0 4px 12px rgba(41,182,246,0.15);
+}
+.blog-title {
+ margin-top: 0;
+ margin-bottom: 8px;
+ font-size: 1.35em;
+}
+.blog-title a {
+ color: #0f4c81;
+ text-decoration: none;
+ font-weight: bold;
+}
+.blog-title a:hover {
+ text-decoration: underline;
+ color: #0277bd;
+}
+.blog-meta {
+ font-size: 0.88em;
+ color: #607d8b;
+ margin-bottom: 12px;
+}
+.blog-meta span {
+ margin-right: 15px;
+}
+.blog-badge {
+ background-color: #e1f5fe;
+ color: #0288d1;
+ padding: 2px 8px;
+ border-radius: 12px;
+ font-size: 0.82em;
+ font-weight: bold;
+}
+.blog-summary {
+ line-height: 1.55;
+ color: #37474f;
+ margin-bottom: 14px;
+}
+.read-more-btn {
+ display: inline-block;
+ background-color: #0f4c81;
+ color: #ffffff !important;
+ padding: 6px 14px;
+ border-radius: 4px;
+ text-decoration: none;
+ font-size: 0.9em;
+ font-weight: bold;
+}
+.read-more-btn:hover {
+ background-color: #0277bd;
+ text-decoration: none;
+}
+</style>
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
@@ -55,8 +119,11 @@
<li>
<a class="unselected" href="..">Hello!</a>
</li>
+<li>
+<a class="unselected" href="../en_US/index.html">English</a>
+</li>
<li class="current">
-<a class="selected" href="../en_US/index.html">English</a>
+<a class="selected" href="../en_US/blog.html">Blog</a>
</li>
<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
@@ -141,13 +208,13 @@ document.write("Last Published: " +
document.lastModified);
<a href="../en_US/release-documentation.html">Release Documentation</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_selected_1.1.6', '../skin/')"
id="menu_selected_1.1.6Title" class="menutitle" style="background-image:
url('../skin/images/chapter_open.gif');">Resources</div>
-<div id="menu_selected_1.1.6" class="selectedmenuitemgroup" style="display:
block;">
+<div onclick="SwitchMenu('menu_1.1.6', '../skin/')" id="menu_1.1.6Title"
class="menutitle">Resources</div>
+<div id="menu_1.1.6" class="menuitemgroup">
<div class="menuitem">
<a href="../en_US/mail.html">Mailing Lists</a>
</div>
-<div class="menupage">
-<div class="menupagetitle">Developer/Integrator Resources</div>
+<div class="menuitem">
+<a href="../en_US/developer-resources.html">Developer/Integrator Resources</a>
</div>
<div class="menuitem">
<a href="../en_US/security.html">Security Analysis</a>
@@ -205,83 +272,73 @@ document.write("Last Published: " +
document.lastModified);
|start content
+-->
<div id="content">
-<h1>ManifoldCF - Developer Resources</h1>
+<h1>Apache ManifoldCF™ Blog</h1>
<div id="minitoc-area">
<ul class="minitoc">
<li>
-<a href="#source">Source Code</a>
-</li>
-<li>
-<a href="#debugging">Debugging Connections</a>
-</li>
-<li>
-<a href="#Changes">Changes List</a>
+<a href="#articles">Latest Articles</a>
</li>
<li>
-<a href="#Bugs">Reporting a Bug, Problem, or Feature Request</a>
-</li>
-<li>
-<a href="#Making a Contribution">Making a Contribution</a>
+<a href="#about-blog">About This Blog</a>
</li>
</ul>
</div>
-
-<a name="N1000E"></a><a name="source"></a>
-<h2 class="h3">Source Code</h2>
+<a name="N1000D"></a><a name="articles"></a>
+<h2 class="h3">Latest Articles</h2>
+<div class="section">
+
+<div class="blog-post-card">
+ <h3 class="blog-title"><a
href="../en_US/blog-manifoldcf-2-31-release.html">Apache ManifoldCF 2.31
Released: The Java 25 Leap, Virtual Threads, and Next-Gen Core
Modernization</a></h3>
+ <div class="blog-meta">
+ <span><strong>Date:</strong> July 31, 2026</span>
+ <span><strong>Author:</strong> Piergiorgio Lucidi</span>
+ <span class="blog-badge">Release</span>
+ <span class="blog-badge">Java 25</span>
+ <span class="blog-badge">Virtual Threads</span>
+ <span class="blog-badge">Performance</span>
+ </div>
+ <div class="blog-summary">
+ We are thrilled to announce the official release of Apache ManifoldCF
2.31! Key highlights under CONNECTORS-1784 include adopting Java 25 runtime
capabilities, Virtual Threads (Project Loom) across the crawling engine, Jetty
12.1 web stack modernization, deleting over 88,000 lines of legacy connector
code, and automated Docker CI/CD testing.
+ </div>
+ <a class="read-more-btn"
href="../en_US/blog-manifoldcf-2-31-release.html">Read Full Article →</a>
+</div>
+
+<div class="blog-post-card">
+ <h3 class="blog-title"><a href="../en_US/blog-first-article.html">Welcome to
the Apache ManifoldCF Blog: Connecting Enterprise Content to Search
Engines</a></h3>
+ <div class="blog-meta">
+ <span><strong>Date:</strong> July 31, 2026</span>
+ <span><strong>Author:</strong> Apache ManifoldCF Team</span>
+ <span class="blog-badge">Architecture</span>
+ <span class="blog-badge">Security</span>
+ <span class="blog-badge">Connectors</span>
+ </div>
+ <div class="blog-summary">
+ Welcome to the official Apache ManifoldCF blog! In this introductory
article, we explore how ManifoldCF bridges diverse enterprise content
repositories—such as SharePoint, Confluence, FileNet, Documentum, HDFS, and
Google Drive—with target search indexes like Apache Solr, Elasticsearch, and
OpenSearch while enforcing fine-grained security ACLs.
+ </div>
+ <a class="read-more-btn" href="../en_US/blog-first-article.html">Read Full
Article →</a>
+</div>
+
+</div>
+
+<a name="N1002A"></a><a name="about-blog"></a>
+<h2 class="h3">About This Blog</h2>
<div class="section">
-<p>The source files are stored using Subversion (see <a
href="http://subversion.tigris.org/">http://subversion.tigris.org/</a> and
- <a
href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a>)</p>
<p>
-
-<span class="codefrag">svn checkout
http://svn.apache.org/repos/asf/manifoldcf/trunk mcf-trunk</span>
-
+The Apache ManifoldCF Blog is the official platform for technical articles,
architectural deep dives, release announcements, and integration guides written
by the ManifoldCF committers and community.
</p>
-<p>A read-only Git hub is also available for those who use Git. The URL for
Git is:</p>
+<p>Here is what you can expect to find on this blog:</p>
+<ul>
+ <li><strong>Release Highlights & Roadmap:</strong> Overview of new
features, performance improvements, and connector updates.</li>
+ <li><strong>Connector Deep Dives:</strong> In-depth articles on configuring
and customizing repository, authority, and output connectors.</li>
+ <li><strong>Security Trimming Best Practices:</strong> How to properly
configure Authority Services to maintain strict document-level security across
enterprise search systems.</li>
+ <li><strong>Community Spotlights & Tutorials:</strong> Step-by-step
guides for extending ManifoldCF and developing custom plugins.</li>
+</ul>
<p>
-
-<span class="codefrag">git://git.apache.org/manifoldcf.git</span>
-
+Have a topic you would like us to cover, or want to contribute an article?
Reach out to our team on the <a href="../en_US/mail.html">Mailing Lists</a>!
</p>
</div>
-
-<a name="N1002F"></a><a name="debugging"></a>
-<h2 class="h3">Debugging Connections</h2>
-<div class="section">
-<p>Sooner or later, you will encounter a repository that should be supported,
but doesn't seem to want to connect properly to ManifoldCF. When that happens,
you will need all the help you
- can get. Start <a
href="https://cwiki.apache.org/confluence/display/CONNECTORS/Debugging+Connections">here</a>,
and if you find a new hint, technique,
- or trick, don't forget to add it to the page!</p>
-</div>
-
-
-<a name="N1003D"></a><a name="Changes"></a>
-<h2 class="h3">Changes List</h2>
-<div class="section">
-<p>Current changes list (as of the most recent nightly build) is available
- <a
href="http://svn.apache.org/repos/asf/manifoldcf/trunk/CHANGES.txt">here</a>.
- </p>
-</div>
-
-
-<a name="N1004B"></a><a name="Bugs"></a>
-<h2 class="h3">Reporting a Bug, Problem, or Feature Request</h2>
-<div class="section">
-<p>If you think you've found a problem, or you just have a good idea for an
improvement, you can create a JIRA ticket <a
href="https://issues.apache.org/jira/browse/CONNECTORS/">here</a>. You may
need to create yourself an account.
- </p>
-<p>Please make every effort to search through the current issues list before
creating a new ticket. Your problem might already have been logged!</p>
-</div>
-
-
-<a name="N1005C"></a><a name="Making a Contribution"></a>
-<h2 class="h3">Making a Contribution</h2>
-<div class="section">
-<p>ManifoldCF is always looking for contributions. See the <a
href="http://cwiki.apache.org/confluence/display/CONNECTORS/HowToContribute">Wiki</a>
for details on contributing. </p>
-<p>We're also looking for logo ideas. Here are the <a
href="http://cwiki.apache.org/confluence/display/CONNECTORS/Logo+Criteria">guidelines</a>.
- </p>
-</div>
-
-
</div>
<!--+
|end content
diff --git a/content/en_US/books-and-presentations.html
b/content/en_US/books-and-presentations.html
index 0f87fdcb..08689fd4 100644
--- a/content/en_US/books-and-presentations.html
+++ b/content/en_US/books-and-presentations.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/developer-resources.html
b/content/en_US/developer-resources.html
index ed36f5bf..c03641d7 100644
--- a/content/en_US/developer-resources.html
+++ b/content/en_US/developer-resources.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/download.html b/content/en_US/download.html
index 9d750f0b..6e954be6 100644
--- a/content/en_US/download.html
+++ b/content/en_US/download.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/index.html b/content/en_US/index.html
index c8fb5d7c..c167431b 100644
--- a/content/en_US/index.html
+++ b/content/en_US/index.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/mail.html b/content/en_US/mail.html
index 12c44c79..cd4ae6cc 100644
--- a/content/en_US/mail.html
+++ b/content/en_US/mail.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/release-documentation.html
b/content/en_US/release-documentation.html
index ba5a1f3c..145f48dc 100644
--- a/content/en_US/release-documentation.html
+++ b/content/en_US/release-documentation.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/security.html b/content/en_US/security.html
index 21fe9ea5..05f8a17a 100644
--- a/content/en_US/security.html
+++ b/content/en_US/security.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/verify.html b/content/en_US/verify.html
index e2565599..4998513d 100644
--- a/content/en_US/verify.html
+++ b/content/en_US/verify.html
@@ -59,6 +59,9 @@
<a class="unselected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/en_US/who.html b/content/en_US/who.html
index 58108617..88b71baf 100644
--- a/content/en_US/who.html
+++ b/content/en_US/who.html
@@ -59,6 +59,9 @@
<a class="selected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/index.html b/content/index.html
index 7f0c03e1..96ab7a0a 100644
--- a/content/index.html
+++ b/content/index.html
@@ -59,6 +59,9 @@
<a class="unselected" href="en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="ja_JP/index.html">日本語</a>
</li>
<li>
diff --git a/content/ja_JP/developer-resources.html
b/content/ja_JP/developer-resources.html
index c78ee366..7a8682f4 100644
--- a/content/ja_JP/developer-resources.html
+++ b/content/ja_JP/developer-resources.html
@@ -58,6 +58,9 @@
<li>
<a class="unselected" href="../en_US/index.html">English</a>
</li>
+<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
<li class="current">
<a class="selected" href="../ja_JP/index.html">日本語</a>
</li>
diff --git a/content/ja_JP/download.html b/content/ja_JP/download.html
index 4275d839..bfe1cc4a 100644
--- a/content/ja_JP/download.html
+++ b/content/ja_JP/download.html
@@ -58,6 +58,9 @@
<li>
<a class="unselected" href="../en_US/index.html">English</a>
</li>
+<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
<li class="current">
<a class="selected" href="../ja_JP/index.html">日本語</a>
</li>
diff --git a/content/ja_JP/index.html b/content/ja_JP/index.html
index d622b408..5a7db396 100644
--- a/content/ja_JP/index.html
+++ b/content/ja_JP/index.html
@@ -58,6 +58,9 @@
<li>
<a class="unselected" href="../en_US/index.html">English</a>
</li>
+<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
<li class="current">
<a class="selected" href="../ja_JP/index.html">日本語</a>
</li>
diff --git a/content/ja_JP/mail.html b/content/ja_JP/mail.html
index c8cfba05..6227fc06 100644
--- a/content/ja_JP/mail.html
+++ b/content/ja_JP/mail.html
@@ -58,6 +58,9 @@
<li>
<a class="unselected" href="../en_US/index.html">English</a>
</li>
+<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
<li class="current">
<a class="selected" href="../ja_JP/index.html">日本語</a>
</li>
diff --git a/content/ja_JP/release-documentation.html
b/content/ja_JP/release-documentation.html
index e99f19a4..d1384c36 100644
--- a/content/ja_JP/release-documentation.html
+++ b/content/ja_JP/release-documentation.html
@@ -58,6 +58,9 @@
<li>
<a class="unselected" href="../en_US/index.html">English</a>
</li>
+<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
<li class="current">
<a class="selected" href="../ja_JP/index.html">日本語</a>
</li>
diff --git a/content/linkmap.html b/content/linkmap.html
index 44dda4f2..af95baf4 100644
--- a/content/linkmap.html
+++ b/content/linkmap.html
@@ -59,6 +59,9 @@
<a class="unselected" href="en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="ja_JP/index.html">日本語</a>
</li>
<li>
@@ -313,6 +316,12 @@ document.write("Last Published: " + document.lastModified);
</li>
</ul>
+<ul>
+<li>
+<a
href="en_US/blog.html">Blog</a> ___________________ <em>blog</em>
+</li>
+</ul>
+
<ul>
<li>
<a href="http://www.manning.com/wright/">Get the
Book</a> ___________________ <em>book</em>
diff --git a/content/zh_CN/developer-resources.html
b/content/zh_CN/developer-resources.html
index 8b60056c..8b3ebdcf 100644
--- a/content/zh_CN/developer-resources.html
+++ b/content/zh_CN/developer-resources.html
@@ -59,6 +59,9 @@
<a class="unselected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li class="current">
diff --git a/content/zh_CN/download.html b/content/zh_CN/download.html
index 0976059c..fc931a2f 100644
--- a/content/zh_CN/download.html
+++ b/content/zh_CN/download.html
@@ -59,6 +59,9 @@
<a class="unselected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li class="current">
diff --git a/content/zh_CN/index.html b/content/zh_CN/index.html
index 806e8658..4b1fc40a 100644
--- a/content/zh_CN/index.html
+++ b/content/zh_CN/index.html
@@ -59,6 +59,9 @@
<a class="unselected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li class="current">
diff --git a/content/zh_CN/mail.html b/content/zh_CN/mail.html
index ca72cc3d..6d9b904b 100644
--- a/content/zh_CN/mail.html
+++ b/content/zh_CN/mail.html
@@ -59,6 +59,9 @@
<a class="unselected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li class="current">
diff --git a/content/zh_CN/release-documentation.html
b/content/zh_CN/release-documentation.html
index dfc04d52..a00d85e4 100644
--- a/content/zh_CN/release-documentation.html
+++ b/content/zh_CN/release-documentation.html
@@ -59,6 +59,9 @@
<a class="unselected" href="../en_US/index.html">English</a>
</li>
<li>
+<a class="unselected" href="../en_US/blog.html">Blog</a>
+</li>
+<li>
<a class="unselected" href="../ja_JP/index.html">日本語</a>
</li>
<li class="current">