Skip to content

Commit 50b1da7

Browse files
committed
doc: Add mermaid dependency graph
When inspecting/auditing a Rust project, I find it helpful to get a nice overview of dependencies before doing so. Therefore, this commit introduces a dependency graph in the form of a mermaid diagram. The graph itself was generated using [cargo-structure](https://github.com/ramon54321/cargo-structure) alongside a trivial ad-hoc fix implementing Mermaid output for it. It uses the fix from signalapp#667 for this. Right now, the `mdbook` does not render this but the GitHub UI does.
1 parent 98915c4 commit 50b1da7

3 files changed

Lines changed: 131 additions & 0 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ as a Java, Swift, or TypeScript library. The underlying implementations are writ
1616
- usernames: Functionality for username generation, hashing, and proofs.
1717
- media: Utilities for manipulating media.
1818

19+
A crate graph can be found in [doc/overview/README.md][].
20+
1921
This repository is used by the Signal client apps ([Android][], [iOS][], and [Desktop][]) as well as
2022
server-side. Use outside of Signal is unsupported. In particular, the products of this repository
2123
are the Java, Swift, and TypeScript libraries that wrap the underlying Rust implementations. All

doc/src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[Introduction](README.md)
44

5+
- [Overview](overview/README.md)
56
- [Backups](backups/README.md)
67
- [Networking](net/README.md)
78
- [CDS]()

doc/src/overview/README.md

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# Overview
2+
3+
The Rust project is structured in several crates, with the README.md at the
4+
root of the repository providing a quick explanation of the purpose of each
5+
of these crates.
6+
7+
Below is a Mermaid diagram showing the dependency chain of these crates.
8+
Right now, `mdbook` does not render this diagram, but you can view it in the
9+
[GitHub web view](https://github.com/signalapp/libsignal/blob/main/doc/src/overview/README.md) instead.
10+
```mermaid
11+
graph TD;
12+
libsignal-account-keys --> libsignal-core;
13+
libsignal-account-keys --> signal-crypto;
14+
libsignal-ffi --> libsignal-bridge;
15+
libsignal-ffi --> libsignal-bridge-macros;
16+
libsignal-ffi --> libsignal-bridge-testing;
17+
libsignal-ffi --> libsignal-core;
18+
libsignal-ffi --> libsignal-net;
19+
libsignal-ffi --> libsignal-net-chat;
20+
libsignal-ffi --> libsignal-protocol;
21+
libsignal-ffi --> signal-media;
22+
libsignal-jni --> libsignal-debug;
23+
libsignal-jni --> libsignal-jni-impl;
24+
libsignal-jni-impl --> libsignal-bridge;
25+
libsignal-jni-impl --> libsignal-core;
26+
libsignal-jni-impl --> libsignal-protocol;
27+
libsignal-jni-impl --> signal-crypto;
28+
libsignal-jni-testing --> libsignal-bridge-testing;
29+
libsignal-jni-testing --> libsignal-bridge-types;
30+
libsignal-jni-testing --> libsignal-jni-impl;
31+
libsignal-node --> libsignal-bridge;
32+
libsignal-node --> libsignal-bridge-macros;
33+
libsignal-node --> libsignal-bridge-testing;
34+
libsignal-node --> libsignal-protocol;
35+
signal-neon-futures-tests --> signal-neon-futures;
36+
libsignal-bridge --> attest;
37+
libsignal-bridge --> device-transfer;
38+
libsignal-bridge --> libsignal-account-keys;
39+
libsignal-bridge --> libsignal-bridge-macros;
40+
libsignal-bridge --> libsignal-bridge-types;
41+
libsignal-bridge --> libsignal-core;
42+
libsignal-bridge --> libsignal-debug;
43+
libsignal-bridge --> libsignal-keytrans;
44+
libsignal-bridge --> libsignal-message-backup;
45+
libsignal-bridge --> libsignal-net;
46+
libsignal-bridge --> libsignal-net-chat;
47+
libsignal-bridge --> libsignal-protocol;
48+
libsignal-bridge --> signal-crypto;
49+
libsignal-bridge --> signal-media;
50+
libsignal-bridge --> usernames;
51+
libsignal-bridge --> zkgroup;
52+
libsignal-bridge-testing --> attest;
53+
libsignal-bridge-testing --> libsignal-bridge-macros;
54+
libsignal-bridge-testing --> libsignal-bridge-types;
55+
libsignal-bridge-testing --> libsignal-core;
56+
libsignal-bridge-testing --> libsignal-debug;
57+
libsignal-bridge-testing --> libsignal-keytrans;
58+
libsignal-bridge-testing --> libsignal-message-backup;
59+
libsignal-bridge-testing --> libsignal-net;
60+
libsignal-bridge-testing --> libsignal-net-chat;
61+
libsignal-bridge-testing --> libsignal-protocol;
62+
libsignal-bridge-testing --> zkgroup;
63+
libsignal-bridge-types --> attest;
64+
libsignal-bridge-types --> device-transfer;
65+
libsignal-bridge-types --> libsignal-account-keys;
66+
libsignal-bridge-types --> libsignal-bridge-macros;
67+
libsignal-bridge-types --> libsignal-core;
68+
libsignal-bridge-types --> libsignal-debug;
69+
libsignal-bridge-types --> libsignal-keytrans;
70+
libsignal-bridge-types --> libsignal-message-backup;
71+
libsignal-bridge-types --> libsignal-net;
72+
libsignal-bridge-types --> libsignal-net-chat;
73+
libsignal-bridge-types --> libsignal-protocol;
74+
libsignal-bridge-types --> libsignal-svrb;
75+
libsignal-bridge-types --> signal-crypto;
76+
libsignal-bridge-types --> signal-media;
77+
libsignal-bridge-types --> signal-neon-futures;
78+
libsignal-bridge-types --> usernames;
79+
libsignal-bridge-types --> zkgroup;
80+
libsignal-cli-utils --> libsignal-core;
81+
libsignal-core --> libsignal-debug;
82+
signal-crypto --> libsignal-core;
83+
signal-crypto --> libsignal-debug;
84+
libsignal-message-backup --> libsignal-account-keys;
85+
libsignal-message-backup --> libsignal-core;
86+
libsignal-message-backup --> libsignal-message-backup-macros;
87+
libsignal-message-backup --> libsignal-protocol;
88+
libsignal-message-backup --> libsignal-svrb;
89+
libsignal-message-backup --> signal-crypto;
90+
libsignal-message-backup --> usernames;
91+
libsignal-message-backup --> zkcredential;
92+
libsignal-message-backup --> zkgroup;
93+
libsignal-net --> attest;
94+
libsignal-net --> libsignal-account-keys;
95+
libsignal-net --> libsignal-core;
96+
libsignal-net --> libsignal-keytrans;
97+
libsignal-net --> libsignal-net-infra;
98+
libsignal-net --> libsignal-protocol;
99+
libsignal-net --> libsignal-svrb;
100+
libsignal-net --> signal-crypto;
101+
libsignal-net-infra --> attest;
102+
libsignal-net-infra --> libsignal-core;
103+
libsignal-net-chat --> libsignal-core;
104+
libsignal-net-chat --> libsignal-keytrans;
105+
libsignal-net-chat --> libsignal-net;
106+
libsignal-net-chat --> libsignal-net-grpc;
107+
libsignal-net-chat --> libsignal-protocol;
108+
libsignal-net-chat --> usernames;
109+
libsignal-net-chat --> zkgroup;
110+
libsignal-net-grpc --> libsignal-core;
111+
libsignal-net-infra --> attest;
112+
libsignal-net-infra --> libsignal-core;
113+
libsignal-protocol --> libsignal-core;
114+
libsignal-protocol --> libsignal-debug;
115+
libsignal-protocol --> signal-crypto;
116+
libsignal-protocol-test-support --> libsignal-protocol;
117+
libsignal-protocol --> libsignal-core;
118+
libsignal-protocol --> libsignal-debug;
119+
libsignal-protocol --> signal-crypto;
120+
libsignal-svrb --> signal-crypto;
121+
usernames --> poksho;
122+
usernames --> signal-crypto;
123+
zkcredential --> poksho;
124+
zkgroup --> libsignal-account-keys;
125+
zkgroup --> libsignal-core;
126+
zkgroup --> poksho;
127+
zkgroup --> zkcredential;
128+
```

0 commit comments

Comments
 (0)