Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Categorical Theory of Patches
Search
Hunter Madison
August 24, 2016
0
77
Categorical Theory of Patches
Hunter Madison
August 24, 2016
Tweet
Share
More Decks by Hunter Madison
See All by Hunter Madison
Vala and Objective C
hmadison
0
250
Sutures
hmadison
0
69
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
960
Speed Design
sergeychernyshev
32
1k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
For a Future-Friendly Web
brad_frost
179
9.8k
Optimizing for Happiness
mojombo
379
70k
RailsConf 2023
tenderlove
30
1.1k
Transcript
A Categorical Theory of Patches Hunter Madison
[email protected]
@355E3B lobste.rs/3553eb
Version Control
Time • One direction (forward) • Events (commits) have a
distinct order
Files • Things on disk • Contain stuff we want
to version
Patches • Instructions that let us transform one file into
a second one
Groups and Categories
Group • Set of elements, with an operation which combines
any two elements to form a third element • The operation satisfies the group axioms (Closure, Associativity, Identity and Invertibility)
Category • Objects linked by morphisms (functions) • We only
care about Associativity, Identity • Mesh Like
Category By IkamusumeFan - Own work, CC BY-SA 4.0, https://
commons.wikimedia.org/w/index.php?curid=36599484
Pushout • Two new morphisms which go to some new
object
Pushout (Yes, this came from the Wikipieda page)
Categorical Theory of Patches
Linking this up • Files -> Objects • Morphisms ->
Patches
L • Is the set of all files and patches
• Is partially ordered (vs linearly ordered) • We can use a pushout to resolve our merges
Merging
Merging • I’m skipping this • Myers or Patience diff
handles this.
Implementation
Implementation • Darcs* - http://darcs.net/ • Camp - http://projects.haskell.org/camp/ •
Pijul - http://pijul.org/
Demo Time
None
This paper, I love • Its not going to replace
the one true VCS • But, we can use it to recast to a different model
Recasting • Instead of focusing on how to solve corner
cases, we can instead find a general solution and build a concrete description • In general, we can do this for any problem
Reading List • “A FORMALIZATION OF DARCS PATCH THEORY USING
INVERSE SEMIGROUPS” - ftp:// ftp.math.ucla.edu/pub/camreport/cam09-83.pdf • “Camp Path Theory” - http://projects.haskell.org/ camp/files/theory.pdf • “The Theory of patches-vector” - http:// liamoc.net/posts/2015-11-10-patch-theory.html