This is an automated email from the ASF dual-hosted git repository.

popduke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bifromq-sites.git


The following commit(s) were added to refs/heads/master by this push:
     new f1a465c2 1. enable blog 2. add two blog drafts 3. archived 
pre-incubation blogs(needs to be re-edited before re-publishing) 4. update 
Download page
f1a465c2 is described below

commit f1a465c2752f5ed912f8dde90e8479f381c8a334
Author: Yonny Hao <[email protected]>
AuthorDate: Wed Dec 10 14:18:26 2025 +0800

    1. enable blog
    2. add two blog drafts
    3. archived pre-incubation blogs(needs to be re-edited before re-publishing)
    4. update Download page
---
 .gitignore                                         |   3 +-
 .../2023-07-07-bifromq-opensource-pr.md            |   0
 .../2023-09-04-bifromq-auth-plugin.mdx             |   0
 .../2023-09-06-bifromq-architecture-overview.md    |   0
 .../2023-10-24-bifromq-standardcluster.mdx         |   0
 .../2023-12-01-bifromq-high-availability.mdx       |   0
 ...-12-04-bifromq-topic-subscription-mechanism.mdx |   0
 .../2024-03-14-bifromq-3.0.0.mdx                   |   0
 .../bifromq-architecture-1.png                     | Bin
 .../bifromq-architecture-2-1.png                   | Bin
 .../bifromq-architecture-2-2.png                   | Bin
 .../bifromq-architecture-3.png                     | Bin
 .../BifroMQ-API-Service.png                        | Bin
 .../BifroMQ-Dist-SubCluster.png                    | Bin
 .../BifroMQ-Inbox-LoadBasedSplitter.png            | Bin
 .../BifroMQ-Inbox-SubCluster.png                   | Bin
 .../BifroMQ-StandardCluster.png                    | Bin
 .../BifroMQ-AutoEviction.png                       | Bin
 .../BifroMQ-BrainSplit.png                         | Bin
 .../BifroMQ-Domain.png                             | Bin
 .../BifroMQ-DynamicConfig.png                      | Bin
 .../BifroMQ-IndependentWorkload.png                | Bin
 .../BifroMQ-Join.png                               | Bin
 .../BifroMQ-LeaderBalance.png                      | Bin
 .../BifroMQ-RPCCluster.png                         | Bin
 .../BifroMQ-RangeBalancer.png                      | Bin
 .../BifroMQ-RangeLeaderBalancer.png                | Bin
 .../BifroMQ-RangeSplit.png                         | Bin
 .../BifroMQ-RangeSplitBalancer.png                 | Bin
 .../BifroMQ-RecoveryBalancer.png                   | Bin
 .../BifroMQ-ReplicaCntBalancer.png                 | Bin
 .../DistService.png                                | Bin
 .../MQTT_Topic_TopicFilter.png                     | Bin
 .../OnePass.png                                    | Bin
 .../TopicExpansionSet.png                          | Bin
 blog/2025-12-10-introducing-apache-bifromq.mdx     | 177 +++++++++++++++++++++
 ...-announcing-apache-bifromq-4-0-0-incubating.mdx |  47 ++++++
 blog/authors.yml                                   |   8 -
 .../mqtt-at-the-frontline.png                      | Bin 0 -> 110505 bytes
 .../two-tier-clustering.png                        | Bin 0 -> 336013 bytes
 .../workload-independent-architecture.png          | Bin 0 -> 195480 bytes
 .../workload-migration.png                         | Bin 0 -> 226639 bytes
 docs/cluster/standardcluster.md                    |   2 +-
 docusaurus.config.ts                               |  10 +-
 src/pages/download.mdx                             |  16 +-
 45 files changed, 240 insertions(+), 23 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5bb8efc9..3a6d257d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,4 +10,5 @@ package-lock.json
 yarn.lock
 .yarn
 pnpm-lock.yaml
-build/
\ No newline at end of file
+build/
+AGENTS.md
\ No newline at end of file
diff --git a/blog/2023-07-07-bifromq-opensource-pr.md 
b/archived_blogs/2023-07-07-bifromq-opensource-pr.md
similarity index 100%
rename from blog/2023-07-07-bifromq-opensource-pr.md
rename to archived_blogs/2023-07-07-bifromq-opensource-pr.md
diff --git a/blog/2023-09-04-bifromq-auth-plugin.mdx 
b/archived_blogs/2023-09-04-bifromq-auth-plugin.mdx
similarity index 100%
rename from blog/2023-09-04-bifromq-auth-plugin.mdx
rename to archived_blogs/2023-09-04-bifromq-auth-plugin.mdx
diff --git a/blog/2023-09-06-bifromq-architecture-overview.md 
b/archived_blogs/2023-09-06-bifromq-architecture-overview.md
similarity index 100%
rename from blog/2023-09-06-bifromq-architecture-overview.md
rename to archived_blogs/2023-09-06-bifromq-architecture-overview.md
diff --git a/blog/2023-10-24-bifromq-standardcluster.mdx 
b/archived_blogs/2023-10-24-bifromq-standardcluster.mdx
similarity index 100%
rename from blog/2023-10-24-bifromq-standardcluster.mdx
rename to archived_blogs/2023-10-24-bifromq-standardcluster.mdx
diff --git a/blog/2023-12-01-bifromq-high-availability.mdx 
b/archived_blogs/2023-12-01-bifromq-high-availability.mdx
similarity index 100%
rename from blog/2023-12-01-bifromq-high-availability.mdx
rename to archived_blogs/2023-12-01-bifromq-high-availability.mdx
diff --git a/blog/2023-12-04-bifromq-topic-subscription-mechanism.mdx 
b/archived_blogs/2023-12-04-bifromq-topic-subscription-mechanism.mdx
similarity index 100%
rename from blog/2023-12-04-bifromq-topic-subscription-mechanism.mdx
rename to archived_blogs/2023-12-04-bifromq-topic-subscription-mechanism.mdx
diff --git a/blog/2024-03-14-bifromq-3.0.0.mdx 
b/archived_blogs/2024-03-14-bifromq-3.0.0.mdx
similarity index 100%
rename from blog/2024-03-14-bifromq-3.0.0.mdx
rename to archived_blogs/2024-03-14-bifromq-3.0.0.mdx
diff --git 
a/blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-1.png
 
b/archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-1.png
similarity index 100%
rename from 
blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-1.png
rename to 
archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-1.png
diff --git 
a/blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-1.png
 
b/archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-1.png
similarity index 100%
rename from 
blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-1.png
rename to 
archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-1.png
diff --git 
a/blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-2.png
 
b/archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-2.png
similarity index 100%
rename from 
blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-2.png
rename to 
archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-2-2.png
diff --git 
a/blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-3.png
 
b/archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-3.png
similarity index 100%
rename from 
blog/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-3.png
rename to 
archived_blogs/images/2023-09-06-bifromq-architecture-overview/bifromq-architecture-3.png
diff --git 
a/blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-API-Service.png 
b/archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-API-Service.png
similarity index 100%
rename from 
blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-API-Service.png
rename to 
archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-API-Service.png
diff --git 
a/blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-Dist-SubCluster.png 
b/archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-Dist-SubCluster.png
similarity index 100%
rename from 
blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-Dist-SubCluster.png
rename to 
archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-Dist-SubCluster.png
diff --git 
a/blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-LoadBasedSplitter.png
 
b/archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-LoadBasedSplitter.png
similarity index 100%
rename from 
blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-LoadBasedSplitter.png
rename to 
archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-LoadBasedSplitter.png
diff --git 
a/blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-SubCluster.png 
b/archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-SubCluster.png
similarity index 100%
rename from 
blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-SubCluster.png
rename to 
archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-Inbox-SubCluster.png
diff --git 
a/blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-StandardCluster.png 
b/archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-StandardCluster.png
similarity index 100%
rename from 
blog/images/2023-10-24-bifromq-standardcluster/BifroMQ-StandardCluster.png
rename to 
archived_blogs/images/2023-10-24-bifromq-standardcluster/BifroMQ-StandardCluster.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-AutoEviction.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-AutoEviction.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-AutoEviction.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-AutoEviction.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-BrainSplit.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-BrainSplit.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-BrainSplit.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-BrainSplit.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-Domain.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-Domain.png
similarity index 100%
rename from blog/images/2023-12-01-bifromq-high-availability/BifroMQ-Domain.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-Domain.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-DynamicConfig.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-DynamicConfig.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-DynamicConfig.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-DynamicConfig.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-IndependentWorkload.png
 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-IndependentWorkload.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-IndependentWorkload.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-IndependentWorkload.png
diff --git a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-Join.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-Join.png
similarity index 100%
rename from blog/images/2023-12-01-bifromq-high-availability/BifroMQ-Join.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-Join.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-LeaderBalance.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-LeaderBalance.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-LeaderBalance.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-LeaderBalance.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RPCCluster.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RPCCluster.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RPCCluster.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RPCCluster.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeBalancer.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeBalancer.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeBalancer.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeBalancer.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeLeaderBalancer.png
 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeLeaderBalancer.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeLeaderBalancer.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeLeaderBalancer.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplit.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplit.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplit.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplit.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplitBalancer.png
 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplitBalancer.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplitBalancer.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RangeSplitBalancer.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RecoveryBalancer.png 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RecoveryBalancer.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-RecoveryBalancer.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-RecoveryBalancer.png
diff --git 
a/blog/images/2023-12-01-bifromq-high-availability/BifroMQ-ReplicaCntBalancer.png
 
b/archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-ReplicaCntBalancer.png
similarity index 100%
rename from 
blog/images/2023-12-01-bifromq-high-availability/BifroMQ-ReplicaCntBalancer.png
rename to 
archived_blogs/images/2023-12-01-bifromq-high-availability/BifroMQ-ReplicaCntBalancer.png
diff --git 
a/blog/images/2023-12-03-bifromq-topic-subscription-mechanism/DistService.png 
b/archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/DistService.png
similarity index 100%
rename from 
blog/images/2023-12-03-bifromq-topic-subscription-mechanism/DistService.png
rename to 
archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/DistService.png
diff --git 
a/blog/images/2023-12-03-bifromq-topic-subscription-mechanism/MQTT_Topic_TopicFilter.png
 
b/archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/MQTT_Topic_TopicFilter.png
similarity index 100%
rename from 
blog/images/2023-12-03-bifromq-topic-subscription-mechanism/MQTT_Topic_TopicFilter.png
rename to 
archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/MQTT_Topic_TopicFilter.png
diff --git 
a/blog/images/2023-12-03-bifromq-topic-subscription-mechanism/OnePass.png 
b/archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/OnePass.png
similarity index 100%
rename from 
blog/images/2023-12-03-bifromq-topic-subscription-mechanism/OnePass.png
rename to 
archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/OnePass.png
diff --git 
a/blog/images/2023-12-03-bifromq-topic-subscription-mechanism/TopicExpansionSet.png
 
b/archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/TopicExpansionSet.png
similarity index 100%
rename from 
blog/images/2023-12-03-bifromq-topic-subscription-mechanism/TopicExpansionSet.png
rename to 
archived_blogs/images/2023-12-03-bifromq-topic-subscription-mechanism/TopicExpansionSet.png
diff --git a/blog/2025-12-10-introducing-apache-bifromq.mdx 
b/blog/2025-12-10-introducing-apache-bifromq.mdx
new file mode 100644
index 00000000..c510ea1c
--- /dev/null
+++ b/blog/2025-12-10-introducing-apache-bifromq.mdx
@@ -0,0 +1,177 @@
+---
+slug: introducing-apache-bifromq
+title: "Introducing Apache BifroMQ (Incubating)"
+authors: [HaoYu]
+tags: [MQTT, Multi-Tenant, Serverless, Decentralized Cluster]
+---
+
+import MQTTAtTheFrontline from 
'./images/2025-12-10-introducing-apache-bifromq/mqtt-at-the-frontline.png';
+import TwoTierClustering from 
'./images/2025-12-10-introducing-apache-bifromq/two-tier-clustering.png';
+import WorkloadIndependentArchitecture from 
'./images/2025-12-10-introducing-apache-bifromq/workload-independent-architecture.png';
+import WorkloadMigration from 
'./images/2025-12-10-introducing-apache-bifromq/workload-migration.png';
+
+# Introducing Apache BifroMQ (Incubating): A High-Performance, Multi-Tenant 
MQTT Broker
+
+When teams move from a few thousand devices to millions of always-on 
connections, MQTT usually becomes a key piece of infrastructure. It offers a 
simple publish/subscribe model, works well on constrained networks, and has 
wide client support.
+
+But at cloud scale, the broker itself turns into frontline infrastructure: it 
is the entry point for business traffic, it must handle massive numbers of 
long-lived connections, and it has to remain reliable under bursty and 
unpredictable workloads.
+
+Apache BifroMQ (Incubating) was built in this environment. In this post, we 
give a high-level overview of what BifroMQ is, why another MQTT broker is 
needed, and how its architecture is shaped by real large-scale IoT deployments.
+
+<!--truncate-->
+
+## What is Apache BifroMQ (Incubating)?
+
+Apache BifroMQ (Incubating) is a high-performance, distributed, Java-based 
MQTT broker, designed from the ground up for cloud systems rather than 
single-node or small-cluster deployments.
+
+At a glance:
+
+* **Standards-compliant MQTT**  
+  Full support for MQTT 3.1, 3.1.1, and 5.0.
+
+* **Native multi-tenancy**  
+  Resource and workload isolation for multiple tenants sharing the same 
physical cluster.
+
+* **Elastic scalability**  
+  Horizontally scalable for both concurrent connections and message throughput.
+
+* **Built-in distributed state store**  
+  A storage layer optimized for MQTT-specific workloads such as persistent 
sessions, inflight messages, and retained data.
+
+BifroMQ currently resides in the Apache Incubator. As an incubating project, 
it follows the Apache way: open governance, community-driven decision-making, 
and formal release processes.
+
+## Why another MQTT broker?
+
+While existing brokers serve a wide range of scenarios, BifroMQ is built 
around a particular architectural viewpoint: the MQTT broker itself can and 
should be engineered as a dedicated, distributed system with clear boundaries 
and responsibilities.
+
+### MQTT at the frontline
+
+<img src={MQTTAtTheFrontline} style={{width: '100%'}} />
+
+In large deployments, the MQTT broker is not simply a protocol endpoint. It 
sits at the frontline between the internet or intranet and downstream systems:
+
+* It must sustain massive numbers of long-lived client connections.
+* It must provide low-latency, bidirectional communication.
+* It must tolerate sudden bursts of traffic, such as when a large fleet 
reconnects after an outage or a firmware rollout.
+
+In this role, the broker behaves more like a core piece of cloud 
infrastructure than a traditional message queue.
+
+### Limitations of common approaches
+
+In practice, platform teams often try three patterns:
+
+1. **MQTT adapters over something else**  
+   Implement MQTT as an adapter on top of another protocol or messaging 
system.  
+   *Pros*: reuses existing infrastructure.  
+   *Cons*: protocol translation friction, limited control over 
connection-level behavior, and an impedance mismatch between MQTT workloads and 
the underlying system.
+
+2. **All-in-one IoT platforms**  
+   Use a monolithic platform where MQTT is tightly embedded.  
+   *Pros*: integrated feature set.  
+   *Cons*: strong coupling makes it harder to evolve the MQTT layer 
independently and often increases operational burden.
+
+3. **Non-clustered or single-tenant brokers**  
+   Run multiple broker instances for different products or tenants.  
+   *Pros*: simple to start.  
+   *Cons*: lack of multi-tenant support, weak or absent clustering, and 
difficulty in managing shared capacity at scale.
+
+These approaches often fall short when multiple tenants need to share the same 
infrastructure with clear isolation, fleets grow into tens of millions of 
devices, or operational teams aim for serverless-like elasticity on the data 
plane while the control plane (identity, billing, policy) remains decoupled.
+
+BifroMQ takes a different angle: it is **MQTT-only**, **designed for 
integration**, and **operations-oriented**.
+
+## The broker-first approach
+
+BifroMQ is built as a broker-first system:
+
+* **MQTT-only, purpose-built**  
+  The system focuses on MQTT workloads instead of being a generic message bus. 
This allows optimizations that are difficult in multi-protocol systems.
+
+* **Multi-tenancy as a core design**  
+  Tenants share physical resources but have isolated workloads, making it 
easier to host many customers or internal business units on the same cluster.
+
+* **Designed for integration**  
+  Control-plane concerns (authentication, authorization, tenant management, 
billing) are integrated through plugins and APIs, rather than hard-coded into 
the broker. The data plane remains focused on MQTT.
+
+* **Operations-aware**  
+  Self-healing mechanisms, customizable load-scheduling strategies, and 
decentralized control help keep the system available under failure and load 
spikes.
+
+The goal is to make BifroMQ a strong building block for IoT platforms and 
internal device backbones, rather than a monolithic platform itself.
+
+## Architecture highlights
+
+BifroMQ's architecture reflects its focus on scale, multi-tenancy, and 
operations.
+
+### Decentralized two-tier clustering
+
+<img src={TwoTierClustering} style={{width: '40%'}} />
+
+At a high level, BifroMQ distinguishes between two logical layers:
+
+1. **Host cluster (underlay)**  
+   Represents the physical cluster composed of BifroMQ processes. It uses 
gossip-based failure detection to track node health and CRDT-based anti-entropy 
for membership and metadata convergence. The underlay provides a logically 
addressable substrate on which services run.
+
+2. **Agent clusters (overlay)**  
+   Represent logical service clusters that run within each BifroMQ process 
(for example, MQTT service, distribution service, inbox service, retain 
service). They communicate using a mix of peer-to-peer and broadcast patterns 
and also employ CRDT-based metadata synchronization.
+
+This separation decouples engineering logic from the runtime environment. 
Deployment becomes flexible: you can run different services together or apart, 
depending on workload. There is no single point of failure for control; the 
system favors decentralized coordination and self-healing.
+
+### Workload-independent architecture
+<img src={WorkloadIndependentArchitecture} style={{width: '50%'}} />
+Several internal services correspond to different aspects of MQTT behavior:
+
+* **MQTT Service**  
+  Handles client connections, protocol parsing, and basic session management.
+
+* **Distribution Service**  
+  Manages routing of published messages to subscribers across nodes and 
tenants.
+
+* **Inbox Service**  
+  Deals with queued messages and persistent sessions.
+
+* **Retain Service**  
+  Handles retained messages and their lifecycle.
+
+A key design goal is workload independence: each service can scale and evolve 
based on the specific resource profile it needs (CPU, memory, storage, 
network). 
+
+This enables deployment patterns such as on-demand workload scale-out, hybrid 
workload deployments, and independent workload clusters with dedicated 
resources and lifecycle.
+<img src={WorkloadMigration} style={{width: '75%'}} />
+
+### Extensibility: plugins, SPIs, and APIs
+
+In real deployments, the MQTT broker must be integrated into a broader 
ecosystem:
+
+* Device identity and credential management
+* Authorization and policy engines
+* Billing, quota, and tenant administration
+* External control planes and automation tools
+
+BifroMQ addresses this with a set of extension mechanisms:
+
+* **Plugins** provide integration points for authentication, authorization, 
client balancing, and other behaviors that vary between environments.
+* **SPIs** are the primary mechanism for deep customization and secondary 
development, allowing advanced users to plug in their own implementations for 
key behaviors without modifying the broker core.
+* **HTTP APIs and control endpoints** allow external systems such as a cloud 
control panel or internal platform to manage tenants, configurations, and 
operational actions through well-defined interfaces.
+
+The intent is to keep the MQTT data plane stable and focused, while still 
making it straightforward to adapt BifroMQ to different organizational and 
business requirements.
+
+### Roadmap and what is next
+
+The project roadmap can be viewed in two dimensions:
+
+1. **Core project**  
+   Runtime efficiency and performance tuning, integration and extensibility 
improvements, and operational resilience including self-healing and adaptive 
scheduling.
+
+2. **Satellite projects**  
+   Website, documentation, and blog content; tooling such as GUI or CLI for 
operations; load simulation and benchmarking tools; and plugins for specific 
industry scenarios.
+
+As an Apache Incubator project, BifroMQ's roadmap is expected to evolve with 
community input. Early adopters, operators, and contributors can have a 
significant impact on priorities.
+
+## Getting involved
+
+If BifroMQ matches challenges you face in your own IoT or device connectivity 
platform, there are several ways to get involved:
+
+* Try out the latest Apache Incubator release in a test environment.
+* Explore the architecture and design documents to see how it fits your stack.
+* Join the mailing lists to ask questions, share experience, or propose 
improvements.
+* Contribute bug reports, documentation, tests, or code.
+
+Apache BifroMQ (Incubating) aims to be a practical, operations-friendly MQTT 
broker for large-scale, multi-tenant workloads. We look forward to feedback and 
collaboration from the wider community as the project grows.
diff --git a/blog/2025-12-31-announcing-apache-bifromq-4-0-0-incubating.mdx 
b/blog/2025-12-31-announcing-apache-bifromq-4-0-0-incubating.mdx
new file mode 100644
index 00000000..8a0d6244
--- /dev/null
+++ b/blog/2025-12-31-announcing-apache-bifromq-4-0-0-incubating.mdx
@@ -0,0 +1,47 @@
+---
+slug: announcing-apache-bifromq-4-0-0-incubating
+title: "Announcing Apache BifroMQ 4.0.0-incubating"
+authors: [HaoYu]
+tags: [BifroMQ, Apache, Incubator, Release, MQTT]
+---
+
+# Announcing Apache BifroMQ 4.0.0-incubating: The First Release in the Apache 
Incubator
+
+We are pleased to announce the availability of Apache BifroMQ 
4.0.0-incubating, the project's first release in the Apache Incubator.
+
+This release marks an important milestone: it represents the transition of 
BifroMQ's pre-Apache development history and production experience into an 
Apache-governed project, with community-driven development, transparent 
processes, and formal release procedures.
+
+This blog post provides a high-level overview of the release. For full 
details, please refer to the official release notes and latest online documents.
+
+<!--truncate-->
+
+## What this release represents
+
+Before entering the Apache Incubator, BifroMQ evolved as an internal system 
and later as an open-source project driven by a small group of maintainers. 
Joining the Apache Incubator changes the project in several important ways:
+
+- **Community over individuals or organizations:** Development, design 
decisions, and releases are discussed and decided on public mailing lists under 
the Apache way.
+- **Formalized release process:** Artifacts are produced, voted on, and 
published according to Apache's policies, with clear provenance and 
verification procedures.
+- **Clear licensing and branding:** The project adopts Apache License 2.0 and 
aligns with Apache's branding and trademark guidelines.
+
+Version 4.0.0-incubating is the first release that fully reflects this 
transition. It continues the technical lineage of earlier versions but should 
be considered a major upgrade from a user's perspective.
+
+## Highlights in 4.0.0-incubating
+
+This release focuses on consolidating the architecture, improving operational 
capabilities, and preparing the project for broader adoption. Key highlights 
include:
+
+- **Independent workload cluster deployment mode:** MQTT frontends, 
distribution services, session storage, and other components can run as 
separate workload clusters so operators can scale and allocate resources 
independently based on workload characteristics.
+- **Extensible client balancing:** A new client balancer plugin interface 
enables custom strategies for distributing client connections across nodes or 
clusters, which is particularly useful in multi-region and multi-tenant 
environments.
+- **Additional extension points for deep customization:** More SPIs and hook 
points have been introduced across the stack to support deep customization and 
secondary development within BifroMQ.
+- **Operational improvements:** Enhancements to metrics, logging, and 
administrative APIs support observability, troubleshooting, and automation.
+
+## Compatibility and upgrade notes
+
+Due to substantial internal refactoring and adjustments required to meet 
Apache Incubator requirements, 4.0.0-incubating is not backward-compatible with 
previous non-Apache releases of BifroMQ. If you are running a pre-Incubator 
version of BifroMQ, treat this as a major upgrade:
+
+- Test 4.0.0-incubating in a separate environment first.
+- Review the release notes for behavior changes that affect your deployment.
+- Plan any configuration or operational adjustments before switching 
production traffic.
+
+## Acknowledgements
+
+We would like to thank everyone who contributed code, reviews, testing, and 
feedback, as well as the Apache Incubator mentors and community members who 
helped guide the project through the initial steps of incubation.
diff --git a/blog/authors.yml b/blog/authors.yml
index 88459a67..4bcf4840 100644
--- a/blog/authors.yml
+++ b/blog/authors.yml
@@ -2,11 +2,3 @@ HaoYu:
   name: Yonny(Yu) Hao
   url: https://github.com/popduke
   image_url: https://github.com/popduke.png
-MaFei:
-  name: Ma Fei
-  url: https://github.com/mafei6827
-  image_url: https://github.com/mafei6827.png
-Jiawei:
-  name: Gu Jiawei
-  url: https://github.com/Gujiawei-Edinburgh
-  image_url: https://github.com/Gujiawei-Edinburgh.png
diff --git 
a/blog/images/2025-12-10-introducing-apache-bifromq/mqtt-at-the-frontline.png 
b/blog/images/2025-12-10-introducing-apache-bifromq/mqtt-at-the-frontline.png
new file mode 100644
index 00000000..c134f0c2
Binary files /dev/null and 
b/blog/images/2025-12-10-introducing-apache-bifromq/mqtt-at-the-frontline.png 
differ
diff --git 
a/blog/images/2025-12-10-introducing-apache-bifromq/two-tier-clustering.png 
b/blog/images/2025-12-10-introducing-apache-bifromq/two-tier-clustering.png
new file mode 100644
index 00000000..3cbb3dfe
Binary files /dev/null and 
b/blog/images/2025-12-10-introducing-apache-bifromq/two-tier-clustering.png 
differ
diff --git 
a/blog/images/2025-12-10-introducing-apache-bifromq/workload-independent-architecture.png
 
b/blog/images/2025-12-10-introducing-apache-bifromq/workload-independent-architecture.png
new file mode 100644
index 00000000..b46d9e72
Binary files /dev/null and 
b/blog/images/2025-12-10-introducing-apache-bifromq/workload-independent-architecture.png
 differ
diff --git 
a/blog/images/2025-12-10-introducing-apache-bifromq/workload-migration.png 
b/blog/images/2025-12-10-introducing-apache-bifromq/workload-migration.png
new file mode 100644
index 00000000..9815f2b2
Binary files /dev/null and 
b/blog/images/2025-12-10-introducing-apache-bifromq/workload-migration.png 
differ
diff --git a/docs/cluster/standardcluster.md b/docs/cluster/standardcluster.md
index 8a90466d..c35e3b70 100644
--- a/docs/cluster/standardcluster.md
+++ b/docs/cluster/standardcluster.md
@@ -3,7 +3,7 @@ sidebar_position: 1
 title: "StandardCluster"
 ---
 
-This section illustrates the deployment process for a 3-node cluster. Similar 
to [deployment on Linux](../installation/linux.md), you need to extract the 
downloaded tar file first.
+This section illustrates the deployment process for a 3-node cluster. Similar 
to [deployment on Linux](../installation/linux.mdx), you need to extract the 
downloaded tar file first.
 
 ### Configurations
 
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 22eeb9d0..cbc780c3 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -113,11 +113,11 @@ const config = {
           position: "right",
           label: "Docs",
         },
-        // {
-        //   to: "/blog",
-        //   label: "Blog",
-        //   position: "right",
-        // },
+        {
+          to: "/blog",
+          label: "Blog",
+          position: "right",
+        },
         {
           to: "/community",
           label: "Community",
diff --git a/src/pages/download.mdx b/src/pages/download.mdx
index 9df9cb73..9aa47fa9 100644
--- a/src/pages/download.mdx
+++ b/src/pages/download.mdx
@@ -76,26 +76,26 @@ Current release: **{releaseVersion}**(<a 
href={releaseNoteUrl}>Release Note</a>)
 
 If verification fails, discard the artifact and contact 
`[email protected]`.
 
-## Docker image (convenience)
+## Docker image 
 
 Run quickly with the published image (source release remains authoritative):
 
-<CodeBlock language="bash">{`docker run -d --name bifromq -p 1883:1883 
bifromq/bifromq:latest`}</CodeBlock>
+<CodeBlock language="bash">{`docker run -d --name bifromq -p 1883:1883 
apache/bifromq:${releaseVersion}`}</CodeBlock>
 
 Set memory limits:
 
-<CodeBlock language="bash">{`docker run -d -m 10G -e MEM_LIMIT='10737418240' 
--name bifromq -p 1883:1883 bifromq/bifromq:latest`}</CodeBlock>
+<CodeBlock language="bash">{`docker run -d -m 2G -e MEM_LIMIT='2147483648' 
--name bifromq -p 1883:1883 apache/bifromq:${releaseVersion}`}</CodeBlock>
 
 Pass custom JVM options with `JVM_HEAP_OPTS` as needed.
 
-## Plugin packages (Maven Central)
+## Plugin Interface Modules (Maven Central)
 
-Java plugins are published under `org.apache.bifromq`. Match the plugin 
version to your BifroMQ deployment:
+Java plugins interface modules are published under `org.apache.bifromq`. Match 
the plugin version to your BifroMQ deployment:
 
 <CodeBlock language="xml">{`<dependency>
-  <groupId>org.apache.bifromq</groupId>
-  <artifactId>bifromq-plugin-[NAME]</artifactId>
-  <version>${releaseVersion}</version>
+    <groupId>org.apache.bifromq</groupId>
+    <artifactId>bifromq-plugin-[NAME]</artifactId>
+    <version>${releaseVersion}</version>
 </dependency>`}</CodeBlock>
 
 [Browse on Maven 
Central](https://search.maven.org/search?q=g:org.apache.bifromq%20AND%20a:bifromq-plugin-*)


Reply via email to