We hope you’re having a restful holiday season! In this dispatch we’re sharing a few updates from the end of the year:
Ink & Switch’s dream is of computers that help us think, that help us feel more human. We long for tools that support our creativity, instead of encouraging consumption. A decade into our research, we’ve made some meaningful progress. Local-first software has grown from an idea into a global movement. In service of this goal, we’ve run dozens of projects exploring everything from gestural interfaces to digital ink down to the finer points of merge algorithms for rich text.
Our work has resulted in many more questions than answers, and so much work remains to be done. Of course we cannot do it alone, and I want to thank everyone in this growing community for their kindness and generosity of spirit. Changing the world is a group project, and before we meet our goals we will welcome many more people into the fold: scientists and artists, entrepreneurs and sponsors.
I hope everyone reading this is able to take some time to relax and unwind at the end of a long year. Looking back, we’ve earned a rest: we’ve worked with astronomers on their scientific papers, turned up wrapped in flagger’s tape to talk about programmable ink, and traipsed around the world in search of old friends and new ideas. I won’t try to give a full accounting – looking back at past dispatches will probably give an impression – but I can say that we have a lot more work we’re looking forward to sharing.
And so: thank you. One and all. See you in the New Year.
Peter van Hardenberg
As part of a recent visit to Los Angeles for a team summit, we hosted an unconference for friends of the lab at the Preserve. It was a great day of meeting people, having inspiring conversations, and experiencing folks' projects live and in person. We have assembled a memento that aims to share some of the energy of the experience:
Thanks to everyone who has contributed notes, recollections, and photos. If you have something to add, please send us a note at hello@inkandswitch.com.
Lab researcher-in-residence Elliott Evans and lab collaborator Josh Horowitz recently embarked on a collaboration to explore their shared interests in visualizing mathematics. Here’s a summary, in their own words:
Droste’s Lair is an unusual programming environment for building and counting mathematical structures, built in a two-week sprint. In Droste’s Lair, the user manipulates mathematical structures through direct interactions: dropping dominoes on chessboards and dragging items between lists. The system’s power comes from two forms of abstraction on top of this foundation: an “amb” mechanism that allows strands of execution to branch from one another, and a procedure-calling mechanism that enables recursion.
Intrigued? Descend now into Droste’s Lair.
We’re starting a new project next year at the lab about version control for game development. Here’s a sneak preview…
Imagine you’re a student building a video game, and you want to collaborate on it with some friends. What’s the first step: diving into designing a level? Coding a script for how a player moves?
Often, the answer is none of the above. Instead, it’s: “learn git”. Before you can even share a single scene or line of code, you need to become fluent with files, CLI commands, pushing and pulling, and managing merge conflicts.
Version control systems like git and Perforce are powerful tools for large teams of professionals. But for hobbyists and kids just getting started, the learning curve can stand in the way of even basic collaboration.
Imagine a different world where none of these barriers get in your way. You start playing your game, and invite your friend to start editing the level. All their changes show up live. No files, no CLI commands—just shared editing:
Over time, you’ll want to add more sophisticated and formal patterns, like working on separate copies (”branches”) to avoid stepping on each others’ toes. But these patterns should only be there when you want them to be; they shouldn’t get in the way at first.
For the past year, we’ve been exploring tools for achieving exactly this kind of workflow: starting with lightweight synchronous collaboration (“Google Docs” style), and gradually adding more formal workflows: space for private asynchronous work, tools for reviewing suggested changes, and more. We’ve tried dozens of prototypes for this workflow across many use cases: writing Markdown blog posts, writing empirical science papers, and drawing diagrams. Along the way, we’ve been building up a collaboration platform called Patchwork which bakes in version control as a foundational primitive.
Next up, we’re excited to take this exploration to the domain of game development, which poses a bunch of unique challenges:
Multimedia support: How can a version control environment support a variety of media types, from art to music to code? What does it look like to review changesets across media types? How do specialists like artists and programmers collaborate in ergonomic ways?
Integrating collaboration: Today, version control is often a separate system from the main engine or IDE, forcing users to switch tools and also adding more things to learn. What would it look like to make collaboration a more integrated part of the game dev experience?
Working in parallel: How can different users work together on a game without getting in each others’ way? How might we make it easier to explore different variants of game mechanics in parallel?
History: How can you visualize the evolution of a game over time?
One context we’re particularly interested in is education. In conversations with educators at the Endless Foundation (who are sponsoring this work), we’ve heard that introducing kids to files and Git CLI commands before they can do any collaboration is a serious barrier. We wonder if it’s possible to create a smoother ramp that starts simple for students but also scales up to the needs of larger collaborations and even professional game developers.
Concretely, our plan is to extend Godot—an open source game engine used by the Endless Foundation for their teaching activities—with some of the ideas from Patchwork. The prototype of live collaboration shown above is just one example of the kinds of experiments we’re trying. But we hope that this process will yield general insights into version control that apply beyond just the Godot environment.
If you have experience with the problems of collaboration in game development, we’d love to hear from you! We’re especially interested in hearing from hobbyists or indie game devs using Godot. Please send us a note at hello@inkandswitch.com.
That’s it for this time. Happy holidays!