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
81
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
260
Sutures
hmadison
0
72
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Un-Boring Meetings
codingconduct
0
230
SEO for Brand Visibility & Recognition
aleyda
0
4.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
220
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
84
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
790
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
73
A designer walks into a library…
pauljervisheath
210
24k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
71
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