WIP: A Pattern Language for Digital Spaces


5 candidate patterns are being documented on GitHub issues, comments and suggestions welcome!

They are organized according to the depth of a space one experiences: from a newcomer to an experienced contributor. Together they form an example in describing a digital space with common patterns.

This project was originally proposed here.

Why is this worth doing?

We increasingly rely on the digital world. “We shape our buildings, thereafter they shape us”, and the digital spaces are the buildings that shape our minds. By impacting our information and social relationships directly, they not only shape us but have weaved into our collective consciousness and become part of us. To retain and realize our agency, we have to see digital spaces as processes we actively participate, instead of products we passively consume.

The obstacles to building liberating digital spaces are not only technological, but also and foremost cultural. With decentralized technologies, digital spaces can be open ecosystems of protocols, software, and people that better ensure autonomy. But such potential is hidden in jargon and only understood by a few, and the possible future is beyond the experience for most of us. Without a common language, we cannot imagine, articulate, and realize a collectively future.

In the physical world, many have found that the most habitable environment are incrementally built by the inhabitants. A similar obstacle exists, where the specialization in design and construction has prevented us from obtaining such an agency. In A Pattern Language, architects Christopher Alexander et al. summarized patterns that have been successful in creating spaces of human flourishing, and weaved them into a language that enables laymen to better design and build physical spaces.

The concept of pattern language has already influenced product design and software engineer heavily, especially in the form of design patterns. In applying pattern language to digital spaces, we can hold an intention closer to that of Christopher Alexander et al., to enable the agency of individual and self-determination of communities. Using philosopher Ivan Illich’s term, they are “convivial tools” that allow “individual freedom realized in personal interdependence”.

The scale of a digital space: depth

The effectiveness of a pattern largely relies on its context, its relationship with patterns that limit it and the patterns it enables. In A Pattern Language, this relationship is presented by the spacial scale, and patterns are organized on the spacial scale to describe a particular environment. For example pattern “Zen View” describes the placement of a view in a place of transition, where its enchantment is best preserved. Before it is “Staircase as a Stage”, one that creates a place of transition, and the potential opportunity for a zen view; after it is “Tapestry of Light and Dark”, an effect zen views create and can be further refined.

Organizing patterns on the spatial scale allows people to choose the applicable patterns for the scale of the task at hand. More importantly, it threads patterns through different knowledge domains from architecture to construction. This transcending of boundary between design and implementation resists specialization and further enables the agency of individuals and communities.

In a digital space, in an ecosystem of protocols and applications, what is an intuitive scale that can contextualize patterns and bridge design and implementation?

One option could be “depth”: the measure of our familiarity with the space, the measure of how deep we are in inhabiting and participating in the ecosystem. For example, a newcomer can start by reading the public content in a digital space, before creating content in the network. Then she can continue to organize a community and host her own server for the community. If she has the necessary skills, she can contribute to the client she uses, or fork one to make her own. Then finally, she can participate in improving the protocols shared by multiple parties, which takes more discussion and a slower consensus-making process.

This is a scale of increasing agency and impact: the deeper you are in an ecosystem, the more influence you have on it. It is also a scale of decreasing rates of change: the shallower layers, such as the topic of content, change fast, while the deeper layers, such as protocols, change slow. This creates shearing layers as elaborated in How Buildings Learn by Stewart Brand, in which the dynamic of the faster layer is determined by the slower, while the slower layers need to gradually incorporate trends in the faster.

This experiment

In this project, I will illustrate 5 patterns from our past experience of the internet, and align them according to depth. This is an experiment to see if it is possible to describe digital spaces, especially the ones that are part of open ecosystems, using such patterns.

The patterns, descriptions, and related resources are currently summarized in GitHub issues. Anyone is welcome to comment and suggest edits and replacements.