Top all-time · #3414
A new version
Personal blog · jneem.github.ioprogrammingsystems
A new version is a personal blog at jneem.github.io about programming and systems. Since 2017, 23 different Hacker News readers have linked it 30 times, most often “Merging and Patches (2017)”. The last post was in 2020, but the archive is still widely read.
Too few sampled comments (19) to say how often HN recommends it.?
Why HN links it
HN readers link jneem's blog series on merging and patch theory as the explanation behind the Pijul version control system, including how its merges work. Commenters cite it as the source for those ideas.
Summarised by Claude from a sample of 19 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Some thoughts about version control
Most-linked posts?
- Merging and Patches (2017)17 people · 20 mentions · first linked 2017-05-08
- Merging, patches, and pijul (a VCS without merge conflict written in Rust)5 people · 5 mentions · first linked 2017-05-16
- Porting audio code from C to rust2 people · 2 mentions · first linked 2020-07-13
What Hacker News says?
From my limited knowledge (mostly based on jneems article series[1]), I think Pijul is more powerful, but for the same reason also considerably more difficult to understand than Git. In particular, Pijul supports (and depends on) working with repository states that are, in Git terms, not fully resolved. In addition, those states are potentially very difficult to even represent as flat files (see e.g. [2]). Git is si…
Comment linking /cycles/
on “Write yourself a Git (2018)”Submitted Merging and Patches (2017) as a story · 41 points
HN discussionI am a mathematician and generally bearish on category theory in programming. The best argument for it I've seen so far is that it can inform the design of your system to give it desirable properties, like how the DVCS Pijul [1] bases its data structures on patches and its merge operation on categorical pushouts [2] -- also explained at length in a series of blog posts [3]. I found the whole idea and reasoning behin…
Comment linking /merging/
on “Applied Category Theory”Submitted VCS based on categorical theory of patches (2017) as a story · 23 points
HN discussionYes. Take a look at Pijul. Here is an article explaining the algorithm. https://jneem.github.io/merging/
Comment linking /merging/
on “CRDTs: The Hard Parts [video]”Submitted Porting audio code from C to rust as a story · 3 points
HN discussionAm I reading this right that this is the algorithmic fix, but it still needs a concrete implementation - and then the main server should be back down to "vertically scalable"? Without going and reading the doc(yet); does this relate to:? https://jneem.github.io/merging/ It would seem that a simpler, deterministic merge algo would be possible to parallelize - but I'm not sure if it's easy to match matrix idea of merg…
Comment linking /merging/
on “Enter the Matrix – A technical overview and guide to all things Matrix”Submitted Merging, patches, and pijul (a VCS without merge conflict written in Rust) as a story · 3 points
HN discussionSeems we now just have to wait for the next generation that's a rip-off of piul[1] rather than git, and we'll be all set! On a more serious note, this seems to be a trend; to model chat as a converging set of edits. From an architectural pov it sounds similar to Google wave and lotus notes. [1] https://jneem.github.io/merging/
Comment linking /merging/
on “Enter the Matrix – A technical overview and guide to all things Matrix”Submitted Merging and patches as a story · 3 points
HN discussionYou can find an explanation of how it works at [0]. The vague notion of "patch commutation" is central to both operational CRDTs and Pijul's theory of patches, but other than that, I don't really see any similarities. [0]: https://jneem.github.io/merging/
Comment linking /merging/
on “Pijul: A intuitive VCS unlike Git that's based on sound theory of patches”Submitted Nnnoiseless: Porting audio code from C to rust as a story · 2 points
HN discussionThey're in the middle of a big rewrite, which will be out Real Soon Now. To understand the basic idea, this series of blog posts is excellent: https://jneem.github.io/merging/ To me, it seems clear that a patch-based VCS is the future. Whether or not it will be pijul that brings us this future, I don't know...
Comment linking /merging/
on “Pijul: A intuitive VCS unlike Git that's based on sound theory of patches”Submitted Merging and Patches (2017) as a story · 2 points
HN discussionThe implications of Pijul are really interesting. Some of the guarantees afforded by Pijul's model are clearly superior to those afforded by Git, but I can't help but get the impression that Pijul is: 1. considerably more complex under the sheets, and 2. considerably more complex in situations you're going to have to deal with as a user . It would be nice to read an article from someone familiar with Pijul, that wou…
Comment linking /pijul/
on “Pijul: a distributed version control system, written in Rust (2019)”Submitted Merging and Patches as a story · 1 points
HN discussionI think that you can find good explanations of these problems here : https://jneem.github.io/merging/ https://pijul.org/model/#why-care-about-patch-theory Unfortunatly Gitless doesn't solve them. But Pijul solve many problems of Git (and Darcs) and is easier to use. https://pijul.org
Comment linking /merging/
on “Gitless: A simple version control system built on top of Git”Submitted Merging, patches, and pijul as a story · 1 points
HN discussionGit has a really simple view of changes. That is, none. It just saves blobs. It doesn't really know what you commit. For example it doesn't know if commits are independent of each other. Darcs was also from the 2000s but unfortunately not fast enough to compete with git. If you want to see what a post-git VCS might look like, read this introduction to pijul, a VCS that is based on patches and not on blobs like git:…
Comment linking /merging/
on “Open-source paved the way for today’s remote software development processes”>A recent paper suggested a new mathematical point of view on version control. I first found out about it from pijul, a new version control system (VCS) that is loosely inspired by that paper. https://jneem.github.io/merging/
Comment linking /merging/
on “I Want Decentralized Version Control for Structured Data”I found this [0] to be a very readable presentation of the theory behind Pijul. Key point is that by representing state as an "DAG of lines" instead of as an "ordered list of lines" (i.e. a file), you are always able to do perfect merges. You then need a "flattening" step to get to a normal file, but that is handled same as any other patch. All in all, I am a tempted to give this a try -- even though the mental mode…
Comment linking /merging/
on “Pijul for Git users”For those who wonder what the heck Pijul is about, I'd like to emphasize these two articles linked at the bottom of the page: https://jneem.github.io/merging/ https://jneem.github.io/pijul/
Comment linking /pijul/
on “Pijul for Git users”The main page seems to be missing a good description of how the packages work. If one follows the links a bit there is one here: https://jneem.github.io/merging/
Comment linking /merging/
on “Pijul: distributed version control system based on a sound theory of patches”I think this explains the “theory of patches”: https://jneem.github.io/merging/
Comment linking /merging/
on “Pijul: distributed version control system based on a sound theory of patches”Another way to think about merging and patches : https://jneem.github.io/merging/
Comment linking /merging/
on “Git Branches: Intuition and Reality”From the title, I was rather expecting an argument along the lines of "Git is not revision control of code, but of snapshots of a filesystem"; I opened the link expecting to see an introduction to a patch-based system like Darcs or Pijul. Pijul's theory, in particular, is extremely intuitive (if your intuition extends to "cocompletion of the category of files and patches", anyway) and it truly is born for the task o…
Comment linking /merging/
on “Git Is Not Revision Control (2017)”Then, at least for VCS, there are Darcs and Pijul, which use a theory of patches. So Pijul manages to have lossless merges by actually storing a directed graph (though of course, you will still need to decide how to flatten that into a displayed file) : https://jneem.github.io/pijul/ And because it uses more information about the history, it is able to do smarter merges (if I am not mistaken, even compared to the OP…
Comment linking /pijul/
on “Merging with diff3: the “three-way merge””On the theory of patches I found this set of posts helpful: https://jneem.github.io/merging/ TIL from the first 10 minutes (I didn't have time to watch the whole thing): I've been mis-pronouncing the name of pijul :)
Comment linking /merging/
on “Pijul: Version-Control Post-Git • Goto 2023”