// house = application
// circle (default) = service
// box = daemon
// diamond = library
// black line = dependency
// blue line = extension via plugin
// red line = possibly useful
// dashed = in planning

// this is what we have...o
digraph dependencies {
splines = true;

  voting [shape=house];
  voting -> consensus;
  voting -> identity;
  voting -> cadet;
  voting -> secretsharing;
  secretsharing -> consensus;

  fs [shape=house];
  fs -> dht;
  fs -> core;
  fs -> datastore;
  fs -> cadet;
  fs -> ats;
  fs -> block [style=dotted,color=blue];
  fs -> identity;
  exit [shape=box];
  exit -> cadet;
  exit -> tun;
  exit -> dnsstub;
  vpn -> cadet;
  vpn -> regex;
  vpn -> tun;
  pt [shape=house];
  pt -> cadet;
  pt -> vpn;
  pt -> dns;
  pt -> dnsparser;
  dns -> tun;
  dns -> dnsstub;
  zonemaster [shape=house];
  zonemaster -> namestore;
  zonemaster -> dht;
  gns -> dns;
  gns -> dht;
  gns -> block [style=dotted,color=blue];
  gns -> revocation;
  gns -> vpn;
  gns -> dnsparser;
  gns -> dnsstub;
  gns -> identity;
  revocation -> core;
  revocation -> set;
  namestore -> identity;
  namestore -> gnsrecord;
  dnsparser -> gnsrecord [style=dotted,color=blue];
  conversation -> gnsrecord [style=dotted,color=blue];
  gns -> gnsrecord;
  dht -> core;
  dht -> nse;
  dht -> block;
  dht -> datacache;
  dht -> peerinfo;
  dht -> hello;
  nse -> core;
  regex -> block [style=dotted,color=blue];
  block [shape=diamond];
  datacache [shape=diamond];
  cadet -> core [weight=2];
  cadet -> dht;
  cadet -> block [style=dotted,color=blue];
  conversation [shape=house];
  conversation -> cadet;
  conversation -> gns;
  conversation -> speaker;
  conversation -> microphone;
  speaker [shape=diamond];
  microphone [shape=diamond];
  regex -> dht;
  core -> transport;
  topology [shape=box];
  topology -> peerinfo;
  topology -> transport;
  topology -> core;
  topology -> hello;
  hostlist [shape=box];
  hostlist -> core;
  hostlist -> peerinfo;
  hostlist -> hello;
  transport -> ats;
  transport -> hello;
  transport -> peerinfo;
  transport -> nat;
  transport -> fragmentation;
  consensus -> set;
  consensus -> cadet;
  scalarproduct -> set;
  scalarproduct -> cadet;
  set -> cadet;
  peerinfo -> hello;
  fragmentation [shape=diamond];
  hello [shape=diamond];
  nat [shape=diamond];
  tun [shape=diamond];
  dnsparser [shape=diamond];
  dnsstub [shape=diamond];

  secushare [shape=house];
  multicast;
  psyc;
  social -> psyc;
  social -> gns;
  psyc -> psycstore;
  psycstore;
  social;
  secushare -> social;
  psyc -> multicast;
  multicast -> cadet;

  rps;
  rps -> core;
}
