WIP: A Pattern Language for Digital Spaces


The draft is hosted on GitHub, comments and suggestions are 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.


Hey @guoliu,

I read through your draft. I really like the idea, definitely think you are on to something here. Developing a shared language for the design and structure of digital spaces would be incredibly useful.

A couple of suggestions:

  1. It feels like there could/should be more patterns. I like how you have linked the patterns together to form a narrative, but it feels like that is just one slice through a digital space. I am also wondering about categories, I know you talk about depth, but are the broad category names that different patterns might live within. Again my mind goes back to the https://groupworksdeck.org/ and how they have categories and related patterns.
  2. Building on the group works deck, I wonder if there might be a way to link to patterns from that deck. I.e. the purpose/intent of this digital pattern is to facilitate this kind of group works pattern. Ulimately, we want digital spaces that enable async group collaboration, coordination (at least I think so).
  3. I like the pattern “Strong Structure and Unfinished Surface”. I wonder if you could look at applying that here to your project. I.e. being more explicit about how patterns are proposed, reviewed and accepted. (A Digital Pattern Proposal (DPP)?) Creating a digital space for the development of a pattern language for digital spaces.
  4. I don’t know how feasible this would be, but actively seeking further patterns from the broader community also would be great. In the ideal world, holding some sort of workshop on this topic would be cool.

I also do think the draft needs a pass for grammar and spelling.

1 Like

Hi @wip, these are great ideas, thank you for the feedback. They are very aligned with what I have been thinking.

On the number of patterns: I initially started with over 10 patterns, then started striping them down. In that process, I realized that the first stage’s appropriate goal is to clearly demonstrate the basic structure (depth) with a minimal amount of patterns (and text). It needs more patterns, as well as categories that sort those patterns. Yet more patterns shouldn’t come from me alone, instead, they should reflect more people’s perspectives and experiences.

The idea of a workshop is great. Asking people directly about patterns, few can think of any. However, a workshop can become a brainstorming session that sparks inspiration. It will also be a good chance to weave in and build upon the ideas of the group works deck. Devcon might be a good time for that.

Applying “Strong Structure and Unfinished Surface” to how people propose patterns sounds very intriguing. The project is hosted on GitHub, but I think it needs something friendlier to non-tech users. I will keep thinking about it and thank you for pointing it out.

I have also fixed some grammar and spelling issues in the updated version.