







Studying version control in a malleable software context.
A Categorical Theory of Patches
When working with distant collaborators on the same documents, one often uses a version control system, which is a program tracking the history of files and helping importing modifications brought by others as patches. The implementation of such a system requires to handle lots of situations depending on the operations performed by users on files, and it is thus difficult to ensure that all the corner cases have been correctly addressed. Here, instead of verifying the implementation of such a system, we adopt a complementary approach: we introduce a theoretical model, which is defined abstractly by the universal property that it should satisfy, and work out a concrete description of it. We begin by defining a category of files and patches, where the operation of merging the effect of two coinitial patches is defined by pushout. Since two patches can be incompatible, such a pushout does not necessarily exist in the category, which raises the question of which is the correct category to represent and manipulate files in conflicting state. We provide an answer by investigating the free completion of the category of files under finite colimits, and give an explicit description of this category: its objects are finite sets labeled by lines equipped with a transitive relation and morphisms are partial functions respecting labeling and relations.

01 · Universal version control
We believe that simple, powerful, universal version control tools could help all kinds of creators produce better work.
Solving Git's Pain Points with Jujutsu (with Martin von Zweigbergk)
Malleable software
computing environments where anyone can mold their tools to their own unique needs.That definition is by [[Geoffrey Litt]], who wrote [[Malleable software ...

Malleable software: Restoring user agency in a world of locked-down apps
The original promise of personal computing was a new kind of clay. Instead, we got appliances: built far away, sealed, unchangeable. In this essay, we envision malleable software: tools that users can reshape with minimal friction to suit their unique needs.

Malleable software in the age of LLMs
All computer users may soon have the ability to author small bits of code. What structural changes does this imply for the production and distribution of software?

Malleable software in the age of LLMs
All computer users may soon have the ability to author small bits of code. What structural changes does this imply for the production and distribution of software?

Malleable software in the age of LLMs
All computer users may soon have the ability to author small bits of code. What structural changes does this imply for the production and distribution of software?

Lost in Bugspace
The temporality of implementation uncertainty in software

Differ - Adaptive Software
Build software that adapts to each user — without forks or feature flags. One codebase, infinite variants.

Differ - Adaptive Software
Build software that adapts to each user — without forks or feature flags. One codebase, infinite variants.

Geoffrey Litt
Welcome! I work on malleable software: computing environments where anyone can adapt their software to meet their needs with minimal friction. To see what that means to me, read this essay or listen to this interview.

Fine-grained and accurate source code differencing | Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering
As part of the Digital Library's transition to Open Access, new features for researchers are available in the Premium Edition. Click here to learn more.

Perfect Software - Software for an Audience of One
We have many names to describe personal tools. Malleable software speaks to how it behaves. Home-cooked software speaks to who makes it.

Software Is Made Between Commits
From the Zed Blog: Agents turned the conversation into the real source of our software. DeltaDB is the version control built for it.