Ticket #21942: tpo-old.dot.m4

File tpo-old.dot.m4, 11.5 KB (added by linda, 3 years ago)

the file used to generate the digraph

Line 
1/*
2This is a directed graph representation of www.torproject.org
3and its respective subpages as of April 2017. This is to
4illustrate its current structure and information architecture.
5
6To run this: m4 < tpo-old.dot.m4 | dot -Tpdf -otpo-old.pdf
7
8I use dot, a language for drawing directed graphs. It is
9an open source visualization software (http://www.graphviz.org/).
10
11I use the m4 macroprocessor to create "classes," since the .dot
12language does not have this capability, only allowing for global
13node attributes. (A macro processor is a program that copies
14a stream of text from one place to another, making a systematic
15set of replacements  as it does so.) I also use this for shorthanding
16other things, too.
17*/
18
19/* use m4 to define styling abstractedly */
20define(EXT, [color=grey50 fontcolor=grey50 style="dotted"])dnl #external edge or node styling
21define(DUP, [color=salmon fontcolor=salmon style="dotted"])dnl #duplicate edge or node styling
22define(SUB, fontcolor=lightblue color=lightblue)dnl #subgroup styling
23define(TREE, [shape=tripleoctagon])dnl #subtree
24
25/* use dot to draw a directed graph of tpo.org */
26digraph website {
27        # the graph we will use for ranking
28    node [color=lightblue fontcolor=lightblue] edge [color=lightblue];
29        "tpo.org" -> "1 click" -> "2 clicks" -> "3 clicks";
30        rankdir=LR;
31    node [color=black fontcolor=black] edge [color=black];
32
33    {rank = same; "tpo.org"; "home";}
34
35    # pages you can get to in one click (aka subpages)
36        subgraph cluster0 {
37                label = "header" SUB;
38                "home" -> "home"; #https://www.torproject.org/
39                "home" -> "about tor"; #https://www.torproject.org/about/overview.html.en
40                "home" -> "documentation"; #https://www.torproject.org/docs/documentation.html.en
41        "home" -> "press"; #https://www.torproject.org/press/press.html.en
42                "home" -> "blog" EXT; "blog" EXT; #https://blog.torproject.org/blog/
43                "home" -> "contact"; #https://www.torproject.org/about/contact.html.en
44        }
45
46        subgraph cluster1 {
47        label = "subheader" SUB;           
48        "home" -> "download tbb"; #https://www.torproject.org/download/download-easy.html.en
49                "home" -> "volunteer"; #https://www.torproject.org/getinvolved/volunteer.html.en
50                "home" -> "donate" EXT; "donate" EXT; #https://www.torproject.org/donate/donate-button.html.en
51    }   
52
53    "home" -> "download tbb'" DUP; "download tbb'" DUP; #https://www.torproject.org/download/download-easy.html.en
54        "home" -> "tor users"; #https://www.torproject.org/about/torusers.html.en#normalusers
55    "home" -> "about tor'" DUP; "about tor'" DUP; #https://www.torproject.org/about/overview.html.en
56    "home" -> "volunteer'" DUP; "volunteer'" DUP; #https://www.torproject.org/getinvolved/volunteer.html.en
57
58        subgraph cluster2 {
59        label = "blog posts" SUB;
60        # the first EXT styles the node, the second styles the edge.
61        "home" -> "post 1" EXT; "post 1" EXT; #https://blog.torproject.org/blog/...
62        "home" -> "post 2" EXT; "post 2" EXT; #https://blog.torproject.org/blog/...
63        "home" -> "post 3" EXT; "post 3" EXT; #https://blog.torproject.org/blog/...
64        "home" -> "post 4" EXT; "post 4" EXT; #https://blog.torproject.org/blog/...
65        "home" -> "post 5" EXT; "post 5" EXT; #https://blog.torproject.org/blog/...
66    }
67
68    subgraph cluster3 {
69        label = "projects" SUB;
70        "home" -> "download tbb''" DUP; "download tbb''" DUP;#https://www.torproject.org/projects/torbrowser.html.en
71                "home" -> "tails" EXT; "tails" EXT; #https://tails.boum.org/
72                "home" -> "atlas" EXT; "atlas" EXT; #https://atlas.torproject.org/
73                "home" -> "stem" EXT; "stem" EXT; #https://stem.torproject.org/
74                "home" -> "orbot" EXT; "orbot" EXT; #https://guardianproject.info/apps/orbot/
75                "home" -> "arm" EXT; "arm" EXT; #https://www.atagar.com/arm/
76                "home" -> "pluggable transports"; #https://www.torproject.org/docs/pluggable-transports.html.en
77                "home" -> "OONI" EXT; "OONI" EXT; #https://ooni.torproject.org/
78    }
79
80    subgraph cluster4 {
81        label = "footer" SUB;   
82        "home" -> "trademark FAQ"; #https://www.torproject.org/docs/trademark-faq.html.en               
83                # about tor
84                "home" -> "about tor''" DUP; "about tor''" DUP; #https://www.torproject.org/about/overview.html.en
85                "home" -> "tor users'" DUP; "tor users'" DUP; #https://www.torproject.org/about/torusers.html.en
86        "home" -> "core Tor people"; #https://www.torproject.org/about/corepeople.html.en
87        "home" -> "sponsors"; #https://www.torproject.org/about/sponsors.html.en
88        "home" -> "contact'" DUP; "contact'" DUP; #https://www.torproject.org/about/contact.html.en
89        # get involved
90        "home" -> "donate'" DUP; "donate'" DUP; #https://www.torproject.org/donate/donate-foot.html.en
91        "home" -> "mailing lists"; #https://www.torproject.org/docs/documentation.html.en#MailingLists
92        "home" -> "hidden services"; #https://www.torproject.org/docs/hidden-services.html.en
93        "home" -> "translations"; #https://www.torproject.org/getinvolved/translation.html.en
94        # documentation
95        "home" -> "manuals"; #https://www.torproject.org/docs/tor-manual.html.en
96        "home" -> "documentation'" DUP; "documentation'" DUP;#https://www.torproject.org/docs/documentation.html.en
97        "wiki" EXT; "home" -> "wiki" EXT; #https://trac.torproject.org/projects/tor/wiki/
98        "home" -> "FAQ"; #https://www.torproject.org/docs/faq.html.en
99    }
100
101    # pages you can get to in 2 clicks
102    subgraph cluster5 {
103        label = "about side header" SUB;
104        "about tor" -> "about tor";
105        "about tor" -> "about tor'''" DUP; "about tor'''" DUP; #https://www.torproject.org/about/overview.html.en
106        "about tor" -> "tor users''" DUP; "tor users''" DUP; #https://www.torproject.org/about/torusers.html.en
107        "about tor" -> "core Tor people'" DUP; "core Tor people'" DUP; #https://www.torproject.org/about/corepeople.html.en
108        "about tor" -> "jobs" #https://www.torproject.org/about/jobs.html.en
109        "about tor" -> "sponsors'" DUP; "sponsors'" DUP; #https://www.torproject.org/about/sponsors.html.en
110        "about tor" -> "financial reports"; #https://www.torproject.org/about/financials.html.en
111        "about tor" -> "projects"; #https://www.torproject.org/projects/projects.html.en
112        "about tor" -> "documentation''" DUP; "documentation''" DUP; #https://www.torproject.org/docs/documentation.html.en
113    }
114
115    "documentation" -> "documentation";
116    subgraph cluster6 {
117        label = "documentation side header" SUB;
118        "documentation" -> "download tbb''''" DUP; "download tbb''''" DUP; #https://www.torproject.org/projects/torbrowser.html.en
119        "documentation" -> "orbot''" DUP; "orbot''" DUP; #https://guardianproject.info/apps/orbot/
120        "documentation" -> "projects'" DUP; "projects'" DUP; #https://www.torproject.org/projects/projects.html.en
121        "documentation" -> "expert guides"; #https://www.torproject.org/docs/installguide.html.en
122        "documentation" -> "manuals'" DUP; "manuals'" DUP; #https://www.torproject.org/docs/manual.html.en
123        "documentation" -> "wiki'" DUP; "wiki'" DUP; #https://trac.torproject.org/projects/tor/wiki/
124        "documentation" -> "FAQ''" DUP; "FAQ''" DUP; #https://www.torproject.org/docs/faq.html.en
125        "documentation" -> "abuse FAQ"; #https://www.torproject.org/docs/faq-abuse.html.en
126        "documentation" -> "trademark FAQ'" DUP; "trademark FAQ'" DUP; #https://www.torproject.org/docs/trademark-faq.html.en
127        "documentation" -> "legal FAQ"; #https://www.torproject.org/eff/tor-legal-faq.html.en
128    }
129
130    subgraph cluster7 {
131        label = "volunteer side header" SUB;
132        "volunteer" -> "volunteer"; #https://www.torproject.org/getinvolved/volunteer.html.en
133        "volunteer" -> "set up relays"; #https://www.torproject.org/getinvolved/relays.html.en
134        "volunteer" -> "research" EXT; #https://research.torproject.org/
135        "volunteer" -> "donate''" DUP; "donate''" DUP; #https://www.torproject.org/donate/donate.html.en
136    }
137
138    "sponsors" -> "a bunch of sponsors";
139    "press" -> "a bunch of press articles" EXT; "a bunch of press articles" EXT;
140
141    "trademark FAQ" -> "documentation side header subtree" DUP; "documentation side header subtree" DUP TREE;
142    "documentation'" -> "documentation side header subtree" DUP;
143    "FAQ" -> "documentation side header subtree" DUP;
144    "mailing lists" -> "documentation side header subtree" DUP;
145    "hidden services" -> "documentation side header subtree" DUP;
146    "core Tor people" -> "about side header: people submenu subtree" DUP; "about side header: people submenu subtree" DUP TREE;
147    "translations" -> "volunteer side header subtree" DUP; "volunteer side header subtree" DUP TREE;   
148    "manuals" -> "tor stable manual";
149
150
151    # pages you can get to in 3 clicks
152    "core Tor people'" -> "core Tor people'" DUP;
153    subgraph cluster8 {
154        label = "about side header: people submenu" SUB;
155        "core Tor people'" -> "board of directors"; #https://www.torproject.org/about/board.html.en
156        "core Tor people'" -> "past contributors"; #https://www.torproject.org/about/contributors.html.en
157    }
158
159    "sponsors'" -> "a bunch of sponsors'" DUP; "a bunch of sponsors'" DUP;
160    "jobs" -> "a bunch of jobs";
161    "documentation''" -> "documentation side header subtree'" DUP; "documentation side header subtree'" DUP TREE;
162    "set up relays" -> "a bunch of links";
163
164    subgraph cluster9 {
165        label = "projects side header" SUB;
166        "projects" -> "download tbb'''" DUP; "download tbb'''" DUP; #https://www.torproject.org/projects/torbrowser.html.en
167        "projects" -> "arm project page"; #https://www.torproject.org/projects/arm.html.en
168        "projects" -> "orbot'" DUP; "orbot'" DUP; #https://guardianproject.info/apps/orbot/
169        "projects" -> "tails'" DUP; "tails'" DUP; #https://tails.boum.org/
170        "projects" -> "tor birdy"; #https://trac.torproject.org/projects/tor/wiki/torbirdy
171        "projects" -> "onionoo" EXT; "onionoo" EXT; #https://onionoo.torproject.org/
172        "projects" -> "metrics" EXT; "metrics" EXT; #https://metrics.torproject.org/
173        "projects" -> "pluggable transports'" DUP; "pluggable transports'" DUP; #https://www.torproject.org/docs/pluggable-transports.html.en
174        "projects" -> "shadow"; #https://shadow.cs.umn.edu/
175    }
176
177    subgraph cluster10{
178        label = "documentation side header: guides submenu" SUB;
179        "expert guides" -> "install on debian/ubuntu"; #https://www.torproject.org/docs/debian.html.en
180        "expert guides" -> "install on fedora/centOS"; #https://www.torproject.org/docs/rpms.html.en
181        "expert guides" -> "installing tor source"; #https://www.torproject.org/docs/tor-doc-unix.html.en
182        "expert guides" -> "mactports"; #https://www.torproject.org/docs/tor-doc-osx.html.en
183        "expert guides" -> "configuring a relay manually"; #https://www.torproject.org/docs/tor-relay-debian.html.en
184        "expert guides" -> "configuring a relay graphically"; #https://www.torproject.org/docs/tor-doc-relay.html.en
185        "expert guides" -> "configuring a hidden service"; #https://www.torproject.org/docs/tor-hidden-service.html.en
186        "expert guides" -> "understanding bridges"; #https://www.torproject.org/docs/bridges.html.en
187        "expert guides" -> "verify signatures"; #https://www.torproject.org/docs/verifying-signatures.html.en
188    }
189
190    #"manuals'" -> "documentation side header: submenu 2 subtree" DUP; "documentation side header: submenu 2 subtree" DUP TREE;
191    subgraph cluster11{
192        label = "documentation side header: manuals submenu" SUB;
193        "manuals'" -> "tor stable manual'" DUP; "tor stable manual'" DUP; #https://www.torproject.org/docs/tor-manual.html.en
194        "manuals'" -> "tor alpha manual"; #https://www.torproject.org/docs/tor-manual-dev.html.en
195    }
196}