-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo.txt
78 lines (61 loc) · 1.99 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// TODOs
Dgraph
// delete graph
// update graph
// clear database/ init
// undo and redo in indra and cloud??
// unit tests
// ui initialization
// read config from command line
//
// Basic search
// https://crates.io/crates/pathfinding
// 1. given a root node, get all children
// a. breath-first
// b. depth-first , e.g. 3 levels
// maybe example of algorithm https://crates.io/crates/graphsearch
// 2. query with multiple hops/pipe edge query
// optimization
// clones and Strings
// Multiplayer
// what libraries exists
// CRDT? message queue?
// optimal way to implement?
// quick and dirty?
// https://hex.tech/blog/a-pragmatic-approach-to-live-collaboration
// https://www.figma.com/blog/how-figmas-multiplayer-technology-works/
//
// https://github.com/davidrusu/bft-crdts
// https://github.com/automerge/automerge-rs
// https://wiki.nikitavoloboev.xyz/distributed-systems/crdt
//
// how other projects implement it
// pijul
// xi-editor
// Learn more about Indra
// Pipe queries
// https://crates.io/crates/indradb-proto
// github/ozgrakkurt
// Use types for namespacing. For seperating projects, versions of the same project and for unit testing.
// Every document has a counter and messages are sent with a counter value, if the count is lower than count on the current document update is rejected.
// We keep last X number of messages in a buffer so we can do undo operations. Every message should have a reverse type.
// open project1.graph
// type: project1 vertex, edges
//
// root node : project1
// children nodes
// undo/redo - do you delete or do you make a new state without?
// saved_ops: HashMap<"name of op", Vec<Msg, Msg, Msg,>>,
// timemachine slider
// record every activity in timeseries db
// templating
// node, edge, node
// ...
// back in time, select node, edge, node, paste
// create vertex
// undo delete vertex / add redo
// copy/paste
// template
// graph state using unique id uuid v4
// hash == E-Tag Arangodb
// load file, check specialhash, if equal, got version