... | @@ -6,5 +6,183 @@ in order to export SVG files. |
... | @@ -6,5 +6,183 @@ in order to export SVG files. |
|
Note that the subgraphs are rendered in reverse order, the last subgraph in the file appears at the top.
|
|
Note that the subgraphs are rendered in reverse order, the last subgraph in the file appears at the top.
|
|
|
|
|
|
```mermaid
|
|
```mermaid
|
|
|
|
flowchart LR
|
|
|
|
|
|
|
|
classDef devel color:#000,fill:#ffd,stroke:#000,stroke-width:4px;
|
|
|
|
classDef misc color:#000,fill:#ccf,stroke:#000,stroke-width:4px;
|
|
|
|
|
|
|
|
classDef default color:#000,fill:#fff,stroke:#000,stroke-width:2px;
|
|
|
|
classDef done color:#000,fill:#6e0,stroke:#000,stroke-width:2px;
|
|
|
|
classDef prog color:#000,fill:#fd0,stroke:#000,stroke-width:2px;
|
|
|
|
|
|
|
|
linkStyle default stroke:#000,stroke-width:2px;
|
|
|
|
|
|
|
|
funding:::misc
|
|
|
|
subgraph funding [Funding]
|
|
|
|
f1(Acquire funding for further<br>development and maintenance)
|
|
|
|
f1 --> f2
|
|
|
|
f2(Write proposal<br>for some program)
|
|
|
|
f2 --> f3
|
|
|
|
f3(Identify promising<br>funding opportunities)
|
|
|
|
end
|
|
|
|
|
|
|
|
docs:::misc
|
|
|
|
subgraph docs [Documentation]
|
|
|
|
doc1(All our work<br>is nicely documented)
|
|
|
|
doc1 --> doc2 & doc3
|
|
|
|
doc2(We have published<br>installation instructions<br>for all platforms)
|
|
|
|
doc3(There is a seciton<br>on the website<br>with screenshots<br>demonstrating the app)
|
|
|
|
end
|
|
|
|
|
|
|
|
distribution:::misc
|
|
|
|
subgraph distribution [Distribution]
|
|
|
|
dist1(Distribution to all<br>desired Operating System)
|
|
|
|
dist1 --> dist2 & dist3 & dist4 & dist5
|
|
|
|
dist2(Distribution to<br>Windows is working)
|
|
|
|
dist2 --> dist21 & dist22
|
|
|
|
dist21(Building MSI files<br>works)
|
|
|
|
dist22(MSI file is<br>published on server)
|
|
|
|
dist22 --> dist21
|
|
|
|
dist3(Distribution to<br>arbitrary Linux<br>distros<br>is working)
|
|
|
|
dist3 --> dist31 & dist32
|
|
|
|
dist31(Building flatpak packages works)
|
|
|
|
dist32(flatpak packages<br> are available via<br>central package<br>distribution)
|
|
|
|
dist32 --> dist31
|
|
|
|
dist4(Distribution to<br>Debian<br>is working)
|
|
|
|
dist4 --> dist41 & dist42
|
|
|
|
dist41(Building Debian<br>packages works)
|
|
|
|
dist42(Debian packages<br>are available in<br>official repos<br>a.k.a. 'apt install briar')
|
|
|
|
dist42 --> dist41
|
|
|
|
dist5(Distribution to<br>macOS is working)
|
|
|
|
dist5 --> dist51 & dist52
|
|
|
|
dist51(Building DMG<br>files works)
|
|
|
|
dist52(MSI file is<br>published on server)
|
|
|
|
dist52 --> dist51
|
|
|
|
dist6(Installation instructions<br>published)
|
|
|
|
dist6 --> dist2 & dist3 & dist4 & dist5
|
|
|
|
end
|
|
|
|
|
|
|
|
testing:::misc
|
|
|
|
subgraph testing [Testing]
|
|
|
|
testing1(test database<br>is available)
|
|
|
|
testing2(integration tests)
|
|
|
|
testing3(special test mode)
|
|
|
|
testing3 --> testing31
|
|
|
|
testing31(ability to add<br>testing contacts)
|
|
|
|
testing4(ability to run<br>multiple clients<br>at the same time<br>on a single machine)
|
|
|
|
testing4 --> testing41
|
|
|
|
testing41(tor port can<br>be specified as<br>command line option)
|
|
|
|
end
|
|
|
|
|
|
|
|
sdm:::devel
|
|
|
|
subgraph sdm [disappearing messages]
|
|
|
|
sdm1(disappearing messages work in private chats)
|
|
|
|
sdm1-->sdm2 & sdm3 & sdm4
|
|
|
|
sdm2(user can manager<br>disappearing messages<br>settings)
|
|
|
|
sdm3(chat recognizes<br>and properly displays<br>disappearing messages<br>settings configured<br>by contact)
|
|
|
|
sdm4(chat properly<br>displays disappearing<br>messages as such)
|
|
|
|
sdm4("special bubbles"<br>appear in chat<br>history to visualize<br>which messages are<br>going to disappear)
|
|
|
|
end
|
|
|
|
|
|
|
|
fo:::devel
|
|
|
|
subgraph fo [forums]
|
|
|
|
fo1(forums work<br>as expected)
|
|
|
|
end
|
|
|
|
|
|
|
|
gc:::devel
|
|
|
|
subgraph gc [group chats]
|
|
|
|
gc1(group chats work<br>as expected)
|
|
|
|
gc1-->gc2 & gc3 & gc4 & gc5
|
|
|
|
gc2(user can<br>send group messages)
|
|
|
|
gc3(user can<br>receive group messages)
|
|
|
|
gc4(owner can manage<br>group members)
|
|
|
|
gc4-->gc41 & gc42 & gc43
|
|
|
|
gc41(owner can<br>invite users to group)
|
|
|
|
gc42(owner can see<br>pending group<br>invitations)
|
|
|
|
gc43(owner can revoke<br>pending group<br>invitations)
|
|
|
|
gc5(user can manage<br>group membership)
|
|
|
|
gc5-->gc51 & gc52 & gc53 & gc54 & gc55
|
|
|
|
gc51(user gets notified<br>about new group<br>invitations)
|
|
|
|
gc52(user can see<br>pending group<br>invitations)
|
|
|
|
gc53(user can<br>accept group invitations)
|
|
|
|
gc54(user can<br>decline group invitations)
|
|
|
|
gc55(user can<br>leave a group)
|
|
|
|
end
|
|
|
|
|
|
|
|
mp:::devel
|
|
|
|
subgraph mp [multiplatform setup]
|
|
|
|
mp1(app is able<br>to run on all target<br>platforms)
|
|
|
|
mp2(tor is available<br>for all target<br>platforms)
|
|
|
|
mp1 --> mp2
|
|
|
|
mp2 --> mp21 & mp22 & mp23
|
|
|
|
mp21(tor is available<br>for Linux)
|
|
|
|
mp21:::done
|
|
|
|
mp22(tor is available<br>for Windows)
|
|
|
|
mp22:::prog
|
|
|
|
mp23(tor is available<br>for macOS)
|
|
|
|
end
|
|
|
|
|
|
|
|
pc:::devel
|
|
|
|
subgraph pc [private chats]
|
|
|
|
pc1(private chats work<br>as expected)
|
|
|
|
pc1:::prog
|
|
|
|
pc1-->pc2 & pc3 & pc4 & pc5 & pc6 & pc7
|
|
|
|
pc2(basic chat history<br>gets displayed and<br>updated properly)
|
|
|
|
pc2:::prog
|
|
|
|
pc3(user can<br>receive messages)
|
|
|
|
pc3:::done
|
|
|
|
pc4(user can<br>send messages)
|
|
|
|
pc5(user can<br>delete messages<br>on their device)
|
|
|
|
pc5-->pc51 & pc52
|
|
|
|
pc51(user can delete all messages)
|
|
|
|
pc52(user can delete a single message)
|
|
|
|
pc6(user can<br>receive image<br>attachments)
|
|
|
|
pc7(user can<br>send image<br>attachments)
|
|
|
|
end
|
|
|
|
|
|
|
|
mc:::devel
|
|
|
|
subgraph mc [managing contacts]
|
|
|
|
mc0(managing contacts works)
|
|
|
|
mc0 --> mc1 & mc2 & mc3 & mc8 & mc11 & mc7
|
|
|
|
mc1(contact list<br>displays existing contacts)
|
|
|
|
mc1:::done
|
|
|
|
mc2(user gets informed<br>about new contacts)
|
|
|
|
mc2-->mc21 & mc22
|
|
|
|
mc21(newly added contacts<br>appear in contact list)
|
|
|
|
mc22(notifications are shown)
|
|
|
|
mc3(user can add<br>other contacts remotely)
|
|
|
|
mc3:::prog
|
|
|
|
mc3-->mc4 & mc5 & mc6 & mc9
|
|
|
|
mc4(entering remote<br>briar link works)
|
|
|
|
mc4:::done
|
|
|
|
mc5(user can copy<br>their own remote<br>briar link)
|
|
|
|
mc5:::done
|
|
|
|
mc9(errors and potential<br>attacks while adding<br>contacts are handled)
|
|
|
|
mc6(pending contacts<br>are displayed<br>somewhere)
|
|
|
|
mc6-->mc10
|
|
|
|
mc10(timeout/other errors are handled)
|
|
|
|
mc7(introducing contacts works)
|
|
|
|
mc7 --> mc71 & mc72 & mc73 & mc74 & mc75
|
|
|
|
mc71("user can introduce<br>contact (introducee)<br>to other contacts")
|
|
|
|
mc72(introducee can<br>accept/decline<br>introduction)
|
|
|
|
mc73(contact can<br>accept/decline<br>introduction)
|
|
|
|
mc74(successful introduction<br>works as expected)
|
|
|
|
mc75(failed introduction<br>works as expected)
|
|
|
|
mc8(user can delete contact)
|
|
|
|
mc11(contact's alias can be changed)
|
|
|
|
end
|
|
|
|
|
|
|
|
gs:::devel
|
|
|
|
subgraph gs [general setup]
|
|
|
|
gs1(app lifecycle<br>is working)
|
|
|
|
gs1:::prog
|
|
|
|
gs1 --> gs2 & gs3 & gs4 & gs5
|
|
|
|
gs2(user can run<br>the application)
|
|
|
|
gs2:::done
|
|
|
|
gs3(user can login<br>to existing account)
|
|
|
|
gs3:::done
|
|
|
|
gs4(user can create<br>new account<br>if none exists yet)
|
|
|
|
gs4:::done
|
|
|
|
gs5(user can delete<br>current account)
|
|
|
|
end
|
|
``` |
|
``` |