User Guide

For developers building applications on top of ZeroDDS. Eight-section condensed handbook.

What is ZeroDDS

Pure-Rust implementation of the OMG Data Distribution Service. Wire-byte-identical to Cyclone DDS, OpenDDS, Fast DDS, RTI Connext on RTPS 2.5. Comes with bridges to MQTT, AMQP, CoAP, gRPC, CORBA, ROS-2, WebSocket and bindings for nine languages.

Install

For the 1.0.0-rc.1 release-candidate phase the supported install paths are:

# 1. Cargo (any platform with rustc 1.88+)
cargo add zerodds-dcps zerodds-rtps zerodds-discovery

# 2. Build from source
git clone https://github.com/zero-objects/zero-dds
cd zero-dds && cargo build --release

# 3. Pre-built CLI binaries — coming with the rc.1 binary release
#    (Homebrew tap, APT/DNF repos, MSI, Scoop, AppImage, Docker
#    multi-arch). See "Distro & native installer roadmap" below.

Distro & native installer roadmap

Native installers and distro repos roll out in stages. Track progress on the project's GitHub releases page.

ChannelStageStatus
crates.io (cargo install / cargo add)1publishing in progress with the rc.1 tag
GitHub Releases (static binaries, AppImage)1built by the rc.1 release pipeline
ghcr.io multi-arch Docker1built by the rc.1 release pipeline
Homebrew tap (zero-objects/homebrew-tap)2tap repo published with rc.1; brew tap zero-objects/tap && brew install zerodds
Scoop bucket (zero-objects/scoop-bucket)2bucket repo published with rc.1
Arch User Repository (AUR)2PKGBUILD submission targeted for rc.1
Self-hosted APT repo (packages.zerodds.org)2signed .deb packages, GPG key on the website
Self-hosted RPM repo2signed .rpm packages on the same domain
Ubuntu PPA (Launchpad)3after rc.1 stabilises
Fedora COPR3after rc.1 stabilises
Chocolatey community feed3after rc.1 stabilises
Debian official, Fedora official, Homebrew core4long-lead; targeted post 1.0 stable

First Pub/Sub

Publisher:

use dds_dcps::{Factory, QosProfileBuilder};

let factory = Factory::default();
let participant = factory.create_participant(0)?;
let topic = participant.create_topic::<String>("Greetings")?;
let publisher = participant.create_publisher()?;
let writer = publisher.create_writer(&topic, &QosProfileBuilder::reliable())?;

writer.write(&"Hello, DDS!".to_string())?;

Subscriber pattern is symmetric. Full 15-chapter walk-through with cross-language ports lives in examples/tutorials/dds-chat.

QoS Cheatsheet

PolicyOne-line
ReliabilityReliable retransmits lost samples; BestEffort drops them.
DurabilityVolatile (no replay); TransientLocal (writer cache replay); Transient; Persistent.
HistoryKeepLast(n) per instance vs. KeepAll.
DeadlineMaximum interval between samples per instance; missed deadlines fire a status.
LifespanHow long a sample remains valid after publication.
LivelinessAutomatic (DCPS-managed) vs. Manual (application asserts).
OwnershipShared (multi-writer) vs. Exclusive (highest-strength wins).
ResourceLimitsMax samples / max instances / max samples per instance caps.
DestinationOrderByReceptionTimestamp vs. BySourceTimestamp.
ContentFilterSQL-like filter on the subscriber side.

Bridges

Pick the bridge for your protocol:

BridgeUse case
zerodds-ws-bridgedWebSocket clients, browser SPAs.
zerodds-mqtt-bridgedIoT MQTT broker integration.
zerodds-coap-bridgedConstrained-device CoAP.
zerodds-amqp-bridgedRabbitMQ / ActiveMQ enterprise queueing.
zerodds-grpc-bridgedgRPC service-mesh integration with auto-generated services per topic.
zerodds-corba-bridgedLegacy CORBA mainframes (financial-industry drop-in).
zerodds-ros2-shimROS-2 RMW plugin (REP-2007 / 2008 / 2009).

Security

Two layers:

Troubleshooting

Spec Mapping

Which OMG spec covers which feature:

Full handbook on GitHub →