# WAMP Projects Overview

## The Group of Projects and WAMP

This project is member of a group of projects all related to WAMP, and it is crucial to understand the interelation and dependencies between the projects in the group.

This is because those project “all fit together” not by accident, but because they were designed for this from the very beginning. That’s the whole reason they exist. WAMP.

It all starts from

- WAMP: The Web Application Messaging Protocol (the protocol specification and website)

The WAMP protocol is the umbrella project, and compliance to its specification is a top-priority for the WAMP Client Library implementation projects in the group of projects:

- Autobahn|Python: WebSocket & WAMP for Python on Twisted and asyncio.

- Autobahn|JS: WAMP for Browsers and NodeJS.

- Autobahn|Java: WebSocket & WAMP in Java for Android and Java 8

- Autobahn|C++: WAMP for C++ in Boost/Asio

The only WAMP Router implementation project (currently) in the group of projects is

- Crossbar.io: Crossbar.io is an open source networking platform for distributed and microservice applications. It implements the open Web Application Messaging Protocol (WAMP)

Again, compliance to the WAMP protocol implementation is a top-priority for Crossbar.io, as is compatibility with all WAMP Client Library implementation projects in the group of projects.

Further, it is crucial to understand that Crossbar.io is a Python project which builds on Autobahn|Python, and more so, it builds on Twisted.

While Crossbar.io only runs on Twisted, Autobahn|Python itself crucially supports both Twisted and asyncio (in the Python standard library) - by design.

This flexibility to allow users of Autobahn|Python to switch the underlying networking framework in Autobahn|Python between Twisted and asyncio seamlessly, and with almost zero code changes on the user side, is also crucial, and this capability is provided by

- txaio: txaio is a helper library for writing code that runs unmodified on both Twisted and asyncio / Trollius.

Autobahn|Python further provides both WebSocket Client and Server implementations, another crucial capability used in Crossbar.io, the groups WAMP Router implementation project, and in Autobahn|Python, the groups WAMP Client Library implementation project for Python application code.

Stemming from the participation of the original developer (Tobias Oberstein) of the group of projects in the IETF HyBi working group during the RFC6455 specification, Autobahn|Python is also the basis for

- Autobahn|Testsuite: The Autobahn|Testsuite provides a fully automated test suite to verify client and server implementations of The WebSocket Protocol (and WAMP) for specification conformance and implementation robustness.

Autobahn|Python fully conforms to RFC6455 and passes all of the hundreds of WebSocket implementation tests in Autobahn|Testsuite.

Finally, Crossbar.io has a number of advanced features requiring persistence, for example WAMP Event History (see WAMP Avanced Profile) and others, and these capabilities build on

- zLMDB: Object-relational transactional in-memory database layer based on LMDB

which in turn is then used for the Crossbar.io specific embedded database features

- cfxdb: cfxdb is a Crossbar.io Python support package with core database access classes written in native Python.

## Important Files

Overview of Project Development Process, Release Process, User & Developer Documentation, Contribution Policies, Audit Evidence, and related Files.

### Files Unified across Projects

List of Files which are Synchronized (copied) across repositories:

File | Format | Purpose | Where Rendered / Used
--- | --- | --- | ---
OVERVIEW.md | MD | Project Overview - this file | GitHub, Sphinx (MyST)
AI_POLICY.md | MD | AI policy for contributors | GitHub, Sphinx (MyST)
AI_AUDIT_PROCESS.md | MD | Hard-evidence audit process | GitHub, Sphinx (MyST)
AI_AUDIT_PROCESS_REVIEW.md | MD | Hard-evidence audit process review | GitHub, Sphinx (MyST)
CLAUDE.md | MD | AI policy for AI assistants | Used by AI assistants
.github/pull_request_template.md | MD | GitHub pull request template | GitHub UI
.github/ISSUE_TEMPLATE/config.yml | MD | GitHub issue template configuration | GitHub UI
.github/ISSUE_TEMPLATE/bug_report.md | MD | GitHub bug issue template | GitHub UI
.github/ISSUE_TEMPLATE/feature_request.md | MD | GitHub feature issue template | GitHub UI
sync_templates.py | Python | Synchronizes above files to repos | Project Maintainer

### Files Specific to each Project

List of Files which are Project- or Repository-specific (not synchronized or copied):

File | Format | Purpose | Where Rendered / Used
--- | --- | --- | ---
README.md | MD | Project intro, quick links | GitHub, Sphinx (MyST)
CONTRIBUTING.md | MD | Project development process, quick links | GitHub, Sphinx (MyST)
RELEASING.md | MD | Project release process, quick links | GitHub, Sphinx (MyST)
docs/ | RST | User/dev docs (with MD includes) | Sphinx
.audit/ | MD | Audit evidence files (per PR) directory | Git, GitHub UI
.audit/README.md | MD | Description of disclosure file contents | Git, GitHub UI