ec13c93b025c6c4ffa3888435720fbd5a0683eec
[oweals/gnunet.git] / doc / structure.dot
1 // house = application
2 // circle (default) = service
3 // box = daemon
4 // diamond = library
5 // black line = dependency
6 // blue line = extension via plugin
7 // red line = possibly useful
8 // dashed = in planning
9
10 // this is what we have...o
11 digraph dependencies {
12 splines = true;
13
14   voting [shape=house];
15   voting -> consensus;
16   voting -> identity;
17   voting -> mesh;
18   voting -> secretsharing;
19   secretsharing -> consensus;
20
21   fs [shape=house];
22   fs -> dht;
23   fs -> core;
24   fs -> datastore;
25   fs -> mesh;
26   fs -> ats;
27   fs -> block [style=dotted,color=blue];
28   fs -> identity;
29   exit [shape=box];
30   exit -> mesh;
31   exit -> tun;
32   exit -> dnsstub;
33   vpn -> mesh;
34   vpn -> regex;
35   vpn -> tun;
36   pt [shape=house];
37   pt -> mesh;
38   pt -> vpn;
39   pt -> dns;
40   pt -> dnsparser;
41   dv -> ats;
42   dns -> tun;
43   dns -> dnsstub;
44   gns [shape=house];
45   gns -> namestore;
46   gns -> dns;
47   gns -> dht;
48   gns -> block [style=dotted,color=blue];
49   gns -> revocation;
50   gns -> vpn;
51   gns -> dnsparser;
52   gns -> dnsstub;
53   gns -> identity;
54   revocation -> core;
55   revocation -> set;
56   namestore -> identity;
57   namestore -> gnsrecord;
58   dnsparser -> gnsrecord [style=dotted,color=blue];
59   conversation -> gnsrecord [style=dotted,color=blue];
60   gns -> gnsrecord [style=dotted,color=blue];
61   dht -> core;
62   dht -> nse;
63   dht -> block;
64   dht -> datacache;
65   dht -> peerinfo;
66   dht -> hello;
67   nse -> core;
68   regex -> block [style=dotted,color=blue];
69   block [shape=diamond];
70   datacache [shape=diamond];
71   mesh -> core [weight=2];
72   mesh -> dht;
73   mesh -> block [style=dotted,color=blue];
74   conversation [shape=house];
75   conversation -> mesh;
76   conversation -> gns;
77   conversation -> identity;
78   conversation -> speaker;
79   conversation -> microphone;
80   speaker [shape=diamond];
81   microphone [shape=diamond];
82   regex -> dht;
83   core -> transport;
84   topology [shape=box];
85   topology -> peerinfo;
86   topology -> transport;
87   topology -> core;
88   topology -> hello;
89   hostlist [shape=box];
90   hostlist -> core;
91   hostlist -> peerinfo;
92   hostlist -> hello;
93   transport -> ats;
94   transport -> hello;
95   transport -> peerinfo;
96   transport -> nat;
97   transport -> fragmentation;
98   dv [shape=egg];
99   dv -> transport [color=blue,style=dotted];
100   dv -> core;
101   dv -> set;
102   consensus -> set;
103   consensus -> mesh;
104   scalarproduct -> set;
105   scalarproduct -> mesh;
106   set -> mesh;
107   peerinfo -> hello;
108   fragmentation [shape=diamond];
109   hello [shape=diamond];
110   nat [shape=diamond];
111   tun [shape=diamond];
112   dnsparser [shape=diamond];
113   dnsstub [shape=diamond];
114 }
115
116
117 // this is what we have, excluding libs
118 digraph dependencies_no_libs {
119 splines = true;
120
121   voting [shape=house];
122   voting -> consensus;
123   voting -> identity;
124   voting -> mesh;
125   voting -> secretsharing;
126   secretsharing -> consensus;
127
128   fs [shape=house];
129   fs -> dht;
130   fs -> core;
131   fs -> datastore;
132   fs -> mesh;
133   fs -> ats;
134   fs -> identity;
135   exit [shape=box];
136   exit -> mesh;
137   vpn -> mesh;
138   vpn -> regex;
139   pt [shape=house];
140   pt -> mesh;
141   pt -> vpn;
142   pt -> dns;
143   dv -> ats;
144   gns [shape=house];
145   gns -> namestore;
146   gns -> dns;
147   gns -> dht;
148   gns -> revocation;
149   gns -> vpn;
150   gns -> identity;
151   gns -> gnsrecord;
152   revocation -> core;
153   revocation -> set;
154   namestore -> identity;
155   dht -> core;
156   dht -> nse;
157   dht -> peerinfo;
158   nse -> core;
159   mesh -> core [weight=2];
160   mesh -> dht;
161   conversation [shape=house];
162   conversation -> mesh;
163   conversation -> gns;
164   conversation -> identity;
165   regex -> dht;
166   core -> transport;
167   topology [shape=box];
168   topology -> peerinfo;
169   topology -> transport;
170   topology -> core;
171   hostlist [shape=box];
172   hostlist -> core;
173   hostlist -> peerinfo;
174   transport -> ats;
175   transport -> peerinfo;
176   dv [shape=egg];
177   dv -> transport [color=blue,style=dotted];
178   dv -> core;
179   dv -> set;
180   consensus -> set;
181   consensus -> mesh;
182   scalarproduct -> set;
183   scalarproduct -> mesh;
184   set -> mesh;
185 }
186
187
188 // this is what might happen...
189 digraph plan {
190 splines = true;
191
192 // // secushare roadmap:
193   secushare [shape=house,style=dashed];
194   psyc [style=dashed];
195   social -> psyc [style=dashed];
196   psyc -> psycstore [style=dashed];
197   psycstore;
198   social [style=dashed];
199   secushare -> social [style=dashed];
200   secushare -> voting [style=dashed,color=red];
201   secushare -> gns [style=dashed];
202   secushare -> fs [style=dashed,color=red];
203   secushare -> reuters [style=dashed,color=red];
204   secushare -> identity [style=dashed,color=red];
205   secushare -> messaging [style=dashed,color=red];
206   secushare -> conversation [style=dashed,color=red];
207   psyc -> multicast [style=dashed];
208
209 // // reuters roadmap:
210   reuters [shape=house,style=dashed];
211   scalarproduct [style=dashed];
212   reuters -> scalarproduct [style=dashed];
213   reuters -> identity [style=dashed];
214   scalarproduct -> set [style=dashed];
215   scalarproduct -> mesh [style=dashed];
216   messaging [style=dashed];
217   messaging -> regex [style=dashed];
218   messaging -> mesh [style=dashed];
219   messaging -> dht [style=dashed];
220   reuters -> messaging [style=dashed,color=red];
221   reuters -> multicast [style=dashed,color=red];
222   reuters -> mesh [style=dashed,color=red];
223   reuters -> core [style=dashed,color=red];
224
225
226 // // core roadmap:
227   dht -> ats [style=dashed,color=red];
228   mesh -> ats [style=dashed,color=red];
229   vpn -> multicast [style=dashed,color=red];
230   exit -> multicast [style=dashed,color=red];
231   multicast [style=dashed];
232   multicast -> mesh [style=dashed];
233
234   fs [shape=house];
235   gns [shape=house];
236   conversation [shape=house];
237   exit [shape=box];
238 }