Skip to content

Commit

Permalink
Create new architecture docs
Browse files Browse the repository at this point in the history
  • Loading branch information
emilk committed Aug 22, 2023
1 parent 76a4444 commit f4baf6f
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 8 deletions.
2 changes: 1 addition & 1 deletion BUILD.md
Expand Up @@ -4,7 +4,7 @@ This is a guide to how to build Rerun.

## See also
* [`rerun_py/README.md`](rerun_py/README.md) - build instructions for Python SDK
* [`ARCHITECTURE.md`](ARCHITECTURE.md)
* [Architecture](docs/content/architecture.md)
* [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
* [`CODE_STYLE.md`](CODE_STYLE.md)
* [`CONTRIBUTING.md`](CONTRIBUTING.md)
Expand Down
2 changes: 1 addition & 1 deletion CODE_STYLE.md
@@ -1,7 +1,7 @@
# Rerun code style

## See also
* [`ARCHITECTURE.md`](ARCHITECTURE.md)
* [Architecture](docs/content/architecture.md)
* [`BUILD.md`](BUILD.md)
* [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
* [`CONTRIBUTING.md`](CONTRIBUTING.md)
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Expand Up @@ -3,7 +3,7 @@ This is written for anyone who wants to contribute to the Rerun repository.


## See also
* [`ARCHITECTURE.md`](ARCHITECTURE.md)
* [Architecture](docs/content/architecture.md)
* [`BUILD.md`](BUILD.md)
* [`rerun_py/README.md`](rerun_py/README.md) - build instructions for Python SDK
* [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -75,7 +75,7 @@ The commercial product targets the needs specific to teams that build and run co


# Development
* [`ARCHITECTURE.md`](ARCHITECTURE.md)
* [Architecture](docs/content/architecture.md)
* [`BUILD.md`](BUILD.md)
* [`rerun_py/README.md`](rerun_py/README.md) - build instructions for Python SDK
* [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
Expand Down
2 changes: 1 addition & 1 deletion RELEASES.md
Expand Up @@ -3,7 +3,7 @@ This document describes the current release and versioning strategy. This strate


## See also
* [`ARCHITECTURE.md`](ARCHITECTURE.md)
* [Architecture](docs/content/architecture.md)
* [`BUILD.md`](BUILD.md)
* [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
* [`CODE_STYLE.md`](CODE_STYLE.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
@@ -1,4 +1,4 @@
This is the high-level documentation for rerun that is hosted at https://www.rerun.io/docs
This is the high-level documentation for rerun that is hosted at <https://www.rerun.io/docs>.

## Other documentation
API-level documentation is built from source-code. Python lives at [rerun_py](https://github.com/rerun-io/rerun/tree/main/rerun_py) and Rust in the individual [crates](https://github.com/rerun-io/rerun/tree/main/crates).
Expand Down
56 changes: 56 additions & 0 deletions docs/content/architecture.md
@@ -0,0 +1,56 @@
---
title: Architecture
order: -1
---

## Overview

Rerun provides a fast and extensible data visualization infrastructure for all kinds of data: 2D, 3D, timeseries, and any permutation thereof.

Check warning on line 8 in docs/content/architecture.md

View workflow job for this annotation

GitHub Actions / Spellcheck

Unknown word (timeseries)

It is designed to be fast, flexible, extensible, and easily integrated anywhere.

The Rerun Viewer can be compiled to Wasm, allowing it to [run in a browser](https://demo.rerun.io/version/0.8.1) and be embedded anywhere you can put a web-view [(e.g. in Jupyter Notebook)](https://colab.research.google.com/drive/1R9I7s4o6wydQC_zkybqaSRFTtlEaked_).

Use one of out logging SDKs to produce log data that is then either live-streamed to the Rerun Viewer, or stored in a file for later viewing.

Rerun is open-source, being built in the open on GitHub.

## Architecture Overview

*Message: we address each of our solution’s building bocks in a thorough manner, laying ground infrastructure for any future needs.*

**SDK:** you can log using C++, Python and Rust. The bulk of our SDKs are code-generated from a simple [IDL](https://en.wikipedia.org/wiki/IDL_(programming_language)), making it easy to extend in the future. The SDK produces [Arrow](https://arrow.apache.org/overview/) data.

The **Communication Layer** abstract the transport layers and enables the Rerun Viewer to ingest data from various sources, including files, TCP, and WebSocket.

The **Data Layer** provides a queryable store for arbitrary structured time-dependant data.

The **Vizualisation Layer** is made of composable, extensible collection building blocks covering 2D and 3D renderers, plotting widgets, and textual data display. We have written our own high-level renderer (link: re_rendered) on top of wgpu [LINK: wgpu anchor below]

Check warning on line 28 in docs/content/architecture.md

View workflow job for this annotation

GitHub Actions / Spellcheck

Unknown word (Vizualisation)

Check warning on line 28 in docs/content/architecture.md

View workflow job for this annotation

GitHub Actions / Checks / Spell Check

"Vizualisation" should be "Visualisation".

**GUI:** We use [egui](https://www.egui.rs/) (made by our CTO), an easy-to-use [immediate mode GUI](https://github.com/emilk/egui#why-immediate-mode).

**3D Rendering:** We have written our own high-level renderer `[re_renderer](notion://www.notion.so/rerunio/crates/re_renderer/README.md)` on top of `wgpu`.

Data can be logged using C++, Python and Rust. The bulk of our SDKs are code-generated from a simple [IDL](https://en.wikipedia.org/wiki/IDL_(programming_language)), making it easy to extend in the future. The SDK produces [Arrow](https://arrow.apache.org/overview/) data.

Users can extend the builtin datatypes by logging arbitrary Arrow data.

Data is then stored and queried from a custom datastore built specifically to match our data model (timeseries of arbitrarily complex Arrow data).

Check warning on line 38 in docs/content/architecture.md

View workflow job for this annotation

GitHub Actions / Spellcheck

Unknown word (timeseries)

Internally, the data model is implemented as a special purpose entity-component-system where time is a first-class citizen.

The Rerun viewer handles all visualization tasks. It is built atop egui (made by our CTO), an easy-to-use immediate mode GUI as well as `re_renderer`, a purpose-built 2D & 3D renderer built on top of `wgpu`.

Users can extend the Viewer with arbitrary visualizations of their own making.

## Extensibility

## Technology stack

*Message: show future-proofness by showing strong foundations and strong reasons to use them.*

Check warning on line 50 in docs/content/architecture.md

View workflow job for this annotation

GitHub Actions / Spellcheck

Unknown word (proofness)

- [Apache Arrow](https://arrow.apache.org)
- **Rust**: the only mainstream language that is both fast and safe. https://www.rerun.io/blog/why-rust
- We use [WebAssembly](https://webassembly.org) to get the viewer running at high speeds inside a browser or anywhere you can embed a web-view. For the native viewer we compile natively (no need for Electron!)
- [egui](https://www.egui.rs)
- [wgpu](https://wgpu.rs)
2 changes: 1 addition & 1 deletion docs/content/development/architecture.md
@@ -1,5 +1,5 @@
---
title: Architecture
order: 0
redirect: https://github.com/rerun-io/rerun/blob/main/ARCHITECTURE.md
redirect: https://www.rerun.io/docs/architecture
---
2 changes: 1 addition & 1 deletion docs/content/reference/about.md
Expand Up @@ -23,5 +23,5 @@ We depend on a number of third party libraries, most notably:
* [PyO3](https://github.com/PyO3/pyo3) for python bindings

If you want to learn more about the different parts of the SDK & viewer and how they work, check out
[this architecture overview](https://github.com/rerun-io/rerun/blob/latest/ARCHITECTURE.md)
[this architecture overview](../architecture.md)
for an introduction.

0 comments on commit f4baf6f

Please sign in to comment.