World Wide Web Who's Who
The "nodes" directory contains YAML files describing nodes, with the name of the node the file contains data for (with spaces replaced with underscores) followed by ".yaml". (A node can specify its name with a "name" property in the file if its name doesn't map cleanly to a filename: in this case, the filename is merely a best-effort attempt to describe the node's name, for human consumers.)
Properties on nodes:
At the high level, node types basically break down into person
nodes, and
all other nodes.
The other types of nodes have looser types that can be vaguely broken down into two different kinds:
project
spec
, standard
(standard
is basically a body of spec
nodes)browser
library
location
(physical location)company
, organization
(closed or semi-closed membership)network
(open membership)forum
(closer-knit community)issues
(bug tracker)site
(static domain)The identifier for the node's subject on Wikidata, if available.
A short bio or description of the node's subject.
The URL of an image that can represent that node. (Should work when cropped to a circle.)
A canonical URL for the node's subject.
A map of other URLs related to the node, by subject (ie. "Twitter" for a person's Twitter account, "crbug" for a specification's implementation issue on the Chromium issue tracker).
Edges from this node to others, as a map of names or arrays of names. See the guidelines below for how to structure rels.
These are just some rules of thumb to follow when defining nodes to keep the graph meaningful.
There should only really be a divergence from the existing nomenclature when the divergent property could be used in several other cases to better understand the meaning in the graph on the aggregate (eg. showing all companies)
Directed edges generally go from smaller nodes to bigger ones, keeping the
number of edges out from each node roughly on the same order of magnitude. If
a rels
property is a very large array, it's probably the wrong way around.
Edges come from the point of concern: it's a bigger deal for a spec to be "implemented by" a browser than a browser to "implement" a spec (although people do implement specs). Similarly, "forked from" goes from the fork to the source.
These concerns are usually active rather than passive: "requires" is a rel, "is required by" is just "requires" backwards.
"GitHub, Inc." is different from GitHub the website, and working using GitHub is different from working to develop GitHub.
Since the goal of this is to visualize connections, companies have distinct nodes separate from their flagship products, and those products are only listed if they have a significant role in the communication and development activities of the people on the graph (so Google-the-search-engine doesn't have a node).
For situations where the set of people working on a product is a significant subset of emplyees within the company, they should be grouped based on what component of the project they work on (eg. the frontend or backend).