// 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;
  dv -> ats;
  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 [style=dotted,color=blue];
  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 -> identity;
  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;
  dv [shape=egg];
  dv -> transport [color=blue,style=dotted];
  dv -> core;
  dv -> set;
  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,style=dashed];
  multicast [style=dashed];
  psyc [style=dashed];
  social -> psyc [style=dashed];
  social -> gns [style=dashed];
  psyc -> psycstore [style=dashed];
  psycstore;
  social [style=dashed];
  secushare -> social [style=dashed];
  secushare -> identity [style=dashed];
  psyc -> multicast [style=dashed];
  multicast -> cadet [style=dashed];

  reuters [shape=house,style=dashed];
  reuters -> scalarproduct [style=dashed];

  rps [style=dashed];
  topology -> rps [style=dashed];
  rps -> core [style=dashed];
}


// this is what we have, excluding libs and stores
digraph dependencies_no_libs {
splines = true;

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

  fs [shape=house];
  fs -> dht;
  fs -> core;
  fs -> cadet;
  fs -> ats;
  fs -> identity;
  exit [shape=box];
  exit -> cadet;
  vpn -> cadet;
  vpn -> regex;
  pt [shape=house];
  pt -> cadet;
  pt -> vpn;
  pt -> dns;
  dv -> ats;
  gns [shape=house];
  gns -> dns;
  gns -> dht;
  gns -> revocation;
  gns -> vpn;
  gns -> identity;
  revocation -> core;
  revocation -> set;
  dht -> core;
  dht -> nse;
  nse -> core;
  cadet -> core [weight=2];
  cadet -> dht;
  conversation [shape=house];
  conversation -> cadet;
  conversation -> gns;
  conversation -> identity;
  regex -> dht;
  core -> transport;
  topology [shape=box];
  topology -> transport;
  topology -> core;
  hostlist [shape=box];
  hostlist -> core;
  transport -> ats;
  dv [shape=egg];
  dv -> transport [color=blue,style=dotted];
  dv -> core;
  dv -> set;
  consensus -> set;
  consensus -> cadet;
  scalarproduct -> set;
  scalarproduct -> cadet;
  set -> cadet;


  secushare [shape=house,style=dashed];
  multicast [style=dashed];
  psyc [style=dashed];
  social -> psyc [style=dashed];
  social -> gns [style=dashed];
  social [style=dashed];
  secushare -> social [style=dashed];
  secushare -> identity [style=dashed];
  psyc -> multicast [style=dashed];
  multicast -> cadet [style=dashed];

  reuters [shape=house,style=dashed];
  reuters -> scalarproduct [style=dashed];

  rps [style=dashed];
  topology -> rps [style=dashed];
  rps -> core [style=dashed];
}


// this is what we have, excluding and details
digraph dependencies_no_details {
splines = true;

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

  fs [shape=house];
  fs -> dht;
  fs -> core;
  fs -> cadet;
  vpn -> cadet;
  vpn -> dht;
  pt [shape=house];
  pt -> cadet;
  pt -> vpn;
  gns [shape=house];
  gns -> dht;
  gns -> revocation;
  gns -> vpn;
  revocation -> core;
  revocation -> set;
  dht -> core;
  dht -> nse;
  nse -> core;
  cadet -> core [weight=2];
  cadet -> dht;
  conversation [shape=house];
  conversation -> cadet;
  conversation -> gns;
  core -> transport;
  consensus -> set;
  consensus -> cadet;
  scalarproduct -> set;
  scalarproduct -> cadet;
  set -> cadet;


  secushare [shape=house,style=dashed];
  multicast [style=dashed];
  psyc [style=dashed];
  social -> psyc [style=dashed];
  social -> gns [style=dashed];
  social [style=dashed];
  secushare -> social [style=dashed];
  psyc -> multicast [style=dashed];
  multicast -> cadet [style=dashed];

  reuters [shape=house,style=dashed];
  reuters -> scalarproduct [style=dashed];
}


