All you need is links
When Tim Berners Lee talks about how he designed the web, he uses an analogy from physics, describing his process as a quest to find “fundamental laws” which can generate a desired system:
One of the beautiful things about physics is its ongoing quest to find simple rules that describe the behavior of very small, simple objects. Once found, these rules can often be scaled up to describe the behavior of monumental systems in the real world. […]
If the rules governing hypertext links between servers and browsers stayed simple, then our web of a few documents could grow to a global web. The art was to define the few basic, common rules of “protocol” that would allow one computer to talk to another, in such a way that when all computers everywhere did it, the system would thrive, not break down.
Tim Berner’s Lee, 2000, “Weaving the Web”
I like this description of design as a quest to discover a simple set of primitives, a small alphabet for generating a system. To paraphrase Gall’s Law:
Simple rules produce complex behavior. Complex rules produce stupid behavior.
What if we applied this lens to designing tools for thought? What are some examples of simple features with extremely broad ranges of motion? I’d like to put forward one candidate…
Links.
A surprising number of other features can be expressed in terms of links.
What is a tag? What is its structure? What is its function?
When you tag something, it gets added to a collection of other things with the same tag. So, this is a one-to-many relationship, where one tag points to many pages.
Let’s think about a link. Many pages can point to a single page. Many-to-one. One-to-many. So, we could achieve tagging with links by listing all backlinks to a given page. Tags are just backlinks to pages that don’t exist.
Folders are a place to put things. Like most of the desktop paradigm, folders use a familiar object borrowed from the office as a metaphor to communicate an abstract relationship. You put multiple documents into a paper folder for filing, you put multiple documents into a digital folder for filing. Object metaphors are powerful, both because they leverage something familiar to introduce something new, and because they lean into our natural cognitive strengths for spatial reasoning and object manipulation.
Hmm, many documents, one folder. It seems that underneath this object metaphor is another one-to-many relationship. So, a folder could be expressed in terms of a page full of links.
What information consumes is rather obvious: it consumes the attention of its recipients. Hence a wealth of information creates a poverty of attention, and a need to allocate that attention efficiently among the overabundance of information sources that might consume it.
Herbert Simon
Social media, search, spam, recommendations — when faced with an abundance of information, we often find ourselves needing to separate wheat from the chaff. Many systems reach for stars, hearts, upvotes, and downvotes as quick fixes for user-generated quality signals. But what if we just used links?
Inbound links can be used as a signal of quality. People are more likely to link to things that matter, and less likely to link to things that don’t. Sum up the backlinks to a page and you have a quality signal. This is the key insight behind Google Pagerank.
Comments are one of the core interaction primitives of today’s web. I can comment on your Facebook post, your Google Doc, your blog.
What is a comment? What is its structure? What is its function? It’s a bit of content that is conceptually related to a parent post. We could say that the comment points to the post, or something in the post. That’s a directional relationship.
Links also point to something. They describe a directional relationship. It’s not much of a leap to consider an inbound link a comment on the thing it links to. If we implement some form of transclusion, we can express comments in terms of links. In fact, WordPress already does this with Pingbacks.
Outliners are tools for thought that conceive of documents as a hierarchy, or tree, or nested bulleted list. They’re one of those simple ideas, like spreadsheets that have an almost inexhaustible range of applications.
Outliners have a rich and interesting history, from Dave Winer’s outliner programs for command line and Mac Classic, through to today’s Roam Research.
So, but what is an outliner? What is its structure? What is its function? An outliner lets you break a document up into discrete nodes, nest those nodes under other nodes, hide branches, focus in on branches. The structure formed by an outliner is a tree, with parent and child nodes.
In an outliner, one parent may have many children. One-to-many. Links again. We can express an outliner in terms of links by nesting inbound links underneath the document they point to. So an outliner could be thought of as one view over a network of linked documents.
Semantic triples are one of those ideas you run into if you poke around the “tools for thought” space long enough. A semantic triple is a simple idea with some powerful properties. The basic idea is to construct a network made up of:
Subject - Predicate - Object
For example, “Xerxes is the parent of Brook” can be expressed as a triple:
Xerxes - Parent - Brook
Objects can themselves be subject-predicate-object triples, so you can build up complex networks of relationships this way.
Triples allow computers to do complex automated reasoning. You can even use them to derive relationships that aren’t explicitly stated. You know those answer cards that appear in Google searches? Those are largely constructed from Google Knowledge Graph, a giant network of semantic triples.
Triples are often expressed in terms of special formal languages like TURTLE or Datalog. Here’s how I might jot down that Xerces is a parent of Brooke and Brooke is a parent of Damocles using Datalog:
parent(xerces, brooke).
parent(brooke, damocles).
This can get old fast. Writing formal relationships by hand is ok for narrow domains, but it’s not exactly the most natural thing to reach for when trying to express ideas.
So, knowledge graphs are tremendously useful for computers, but not so fun to write by hand. If you ask me, Semantic Web efforts have repeatedly stubbed their toe on this mismatch between symbolic alignment and the messy, emergent, imprecise, human process of knowledge construction.
But wait. What is a triple? What is its structure? What is its function?
It seems a triple is a link between two things, through a predicate. Here is yet another thing we can reimagine through the mechanism of links.
A hyperlink is a triple where the subject is the page, the predicate is the link text, and the object is the thing being linked to.
Better yet, it’s organic. This knowledge graph is constructed from things I would do anyway. I create a link because it solves my problem as an author of pointing you, the reader, to a concept. This good-enough alignment between user goals and computer goals is one reason the regular web succeeded where the semantic web failed.
Topic modeling is a range of machine learning techniques for deriving abstract topics from a collection of documents using statistical analysis. I put in a collection of Subconscious newsletters, and topic modeling tells me they’re about tools for thought, cybernetics, the web, computing, distributed systems, etc. Pretty cool.
So, ok, you might still want topic analysis, but following on from our observation that we can use links as knowledge graphs, we can also use links as quick-and-dirty topic models.
If we consider each page to be a topic, then then links offer a pretty good map of topics within a page. Pull out a list of links from a page, and you approximately have the topics for the page. Collect all the links across pages, rank them by frequency, and you have a sense of the most frequently addressed topics within the collection.
It is my belief that this new ability to represent ideas in the fullness of their interconnections will lead to easier and better writing, easier and better learning, and a far greater ability to share and communicate the interconnections among tomorrows ideas and problems. Hypertext can represent all the interconnections an author can think of, and compound hypertext can represent all the interconnections many authors can think of, as we shall see.
Ted Nelson, 1982, “Literary Machines”
Links aren’t the only way—I don’t want to be totalizing here—but they are something special. It’s rare to discover a simple mechanism with such broad and expressive range of motion.
I hope to keep Subconscious simple. Few features, a small alphabet with wide expressive range of motion. Before reaching for features, my goal is to explore, to the fullest extent, the creative potential of plain old links.