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