Live data from Hacker News

Pijul – A free and open source distributed version control system

pijul.org

121–130 of 180 posts

Re: Pijul – A free and open source distributed version control system

#121
post #29

Would love to see more explanation (with diagrams) of their patching model. Right now I'm not convinced it has any intuitive advantage.

This might be deeper than you are looking for, but this is the theory it's based on, and even has diagrams. :)

https://arxiv.org/abs/1311.3903

Re: Pijul – A free and open source distributed version control system

#122
post #80

Earlier quoted context omitted.

I may be wrong but I think some (most? all?) companies that are blacklisting agpl3 won't bother going into small print details, license alone is a no-go, no?

Any company blacklisting AGPL is going to be blacklisting GPL as well, which would preclude using git as well (even the more permissive libgit2 is just GPL with a linking exception).

Can confirm that this is absolutely not the case. I have encountered a number of companies that are absolutely fine with [L]GPL but not going to consider AGPL.

Whether rightly or not, https://www.theregister.co.uk/2011/03/31/google_on_open_sour... and other writings on the topic had a big impact on enterprise adoption of AGPL software.

There's also the fact that most prominent AGPL licensing tends to be around commercially backed software where the main backer owns all the source and is therefore in position to not hold themselves to the same standard of sharing changes as their customers and third parties must do.

Re: Pijul – A free and open source distributed version control system

#123
post #75

Earlier quoted context omitted.

A simpler explanation to that of my sibling post -- your point is akin to this fallacy: Susan: My brother plays such great music with his violin! Bob: Actually, I think you're arguing the opposite point -- a violin has strings that can be mishandled such that they cause annoying screechy sounds, so surely he's capable of producing a cacophony of screechy sounds. Not so enjoyable. Susan: Okay... but he's a good musici…

I have no idea where we're going with this. You're original argument was that mathematics can model things that we might arrive at intuitively, without looking at the model - such as assuming commutativity in package manager installation order - correct? I'm simply saying that mathematics can also describe things which are surprising; counter-intuitive even, so I agree with 'higher' comments in that being: > based on…

Emphasis mine:

> You're original argument was that mathematics can model things that we might arrive at intuitively, without looking at the model - such as assuming commutativity in package manager installation order - correct?

No, certainly not -- the right choice of model is key (a trivial example: one system for strings would be one in which there wasn't an identity element (that is, the empty string), thus making strings non-monoidal; that would complicate matters like concatenating a list of nullable/optional strings). I'm not claiming that to be the case, nor do I think the Pijul authors are claiming that. I think we both would say that there exists a model of any given domain that is the most suitable for for that domain (not that just any given model will suffice), and that it's math that helps you discover it. I read that blurb on the site as (the slightly tautological) "because we chose a good mathematical model, you can expect that the entities and operations on those entities can be composed as advertised, rather than unintuitively yielding unexpected results (bugs) or unnecessarily prohibiting some composition of operations that is clearly logically be sound (which is also unintuitive -- why the special cases, when these things should compose?)".

> I'm simply saying that mathematics can also describe things which are surprising; counter-intuitive even [...]

Sure. An example: non-commutativity in in package managers that only support one version of a given package to be installed. As someone who uses more flexible package managers, I'm often surprised when I'm using another package manager and discover its operations aren't commutative (which inevitably is due to, as I discover shortly thereafter, that it only supports installing one version of a given package at a time). That model requires extra brainpower to think through how I'm going to coax the package manager into installing what I need without conflicts (of course, after I've jumped through hoops to uninstall all the bad versions first). A mathematical model can be given for these systems, and they surely are convoluted and bad -- but just because we can come up with convoluted messes in math doesn't make math any more antithetical to intuition, that's just user error.

In this case, the package manager developers never set out to codify the formal semantics for these systems -- they just grew organically from initial needs. If they had started with an explicit mathematical model and iterated on that model, and assuming they had any math proficiency here, they would have done the convenient thing and allowed multiple package versions, and would consequently have commutative package installation (and I wouldn't have a notepad full of notes on how I need to carefully serialize my installs so that I don't get conflicts).

>> based on a mathematical model of collaborative edition

>is not sufficient for having that:

>> behavior matches intution, [sic] every time

Sure, not sufficient, but necessary (unless you count the possibility of just randomly stumbling into the best model). It's also necessary that you chose the best model for what you want (where "what you want" is surely a subjective matter, but efficacy can often be measured objectively in terms of, say, how much time is spent doing the same thing in two systems (assuming a similar level of mastery in both systems)).

> It just doesn't follow. Not least because one man's intuition differs from another's.

Ok, intuition is a subjective measurement, but I think there's still value in trying to find a pattern in what people generally find intuitive, rather than dismiss the topic entirely. I'm suggesting, anecdotally, that fewer arbitrary edge-cases is easier for human brains to deal with, and I think few would argue with that. Math is, to a large extent, the process of shaking out those generalizations from a bunch of concrete observations, so I would surely trust a system where someone could point out their logic in the construction thereof, over some system where the authors shrug and say "I dunno, that's just the way I built it." (which is most software I've come across). Seeing that note on the Pijul site inspires confidence: even if their model isn't maximally generalized (yet), I know that it's something they have an appreciation for, so I can come in and propose improvements (the same cannot be said for projects where the leadership can't appreciate such proposals due to a lack of the mental/mathematical framework necessary to conceive of the positive consequences thereof).

Given my heuristic for intuition ("as few edge-cases as possible"), it would seem that math would be requisite here. Do you disagree with that, or do you perhaps interpret that blurb from the Pijul site as claiming that (any unqualified) application of math is sufficient for developing an intuitive system?

Re: Pijul – A free and open source distributed version control system

#124
post #104

Earlier quoted context omitted.

Maybe lvh or one of the others who has more experience with darcs of Pijul will chime in. They've probably spent more time thinking about this. One difference is that by storing the patches only you can understand more clearly what the intended change was. When you store the whole file it is easy to compute the difference between A and B, but may be impossible to compute the correct differences between A, B, and C. B…

I think you've hit the nail on the head :)

Those reasons make sense. Would it be fair to summarize all that as "better merging with fewer merge conflicts"?

Git certainly has some room to improve in the merge conflict department. I looked at the bad merge example you posted -- I suspect I've hit that before. It's rare, but yeah it's there.

I also frequently notice that git complains about merge conflicts, while the custom diff tool I use to resolve them says there's no conflict, and I don't actually have to do anything. Good reason to use a custom merge tool with git.

But, given all this, is this really all an outcome of patches vs snapshots, or is this just git's merge algorithm being suboptimal? Certainly git could selectively ignore the DAG when merging, couldn't it? Even after reading the other comments here, it still seems to me like git has more information when merging than the "patch-based" workflow of darcs & Pijul.

It seems to me like there's a language problem with trying to draw a distinction between patches and snapshots. Git is still storing and transferring patches at the tree level, even if it's not happening at the file level. Git does not store a commit as a zip snapshot of the entire tree, the commit is still only the changed files. It would be fair (but not standard or common) to call the overlay of changed files a "patch" or a "diff". People do still use git format-patch, and email git "patches" to each other. So it's inherently confusing & problematic to talk about git and say that it doesn't use patches.

What does make sense to me is the distinction of having a strict DAG vs not having one -- is that actually what people mean when they talk about snapshots vs patches? Am I tripping on it because I'm being too pedantic about what a "patch" is?

Re: Pijul – A free and open source distributed version control system

#125
post #24
post #10

Sadly, I'm afraid the AGPL license is going to make this untouchable to businesses… :-( [Edit] Interestingly, they cover that. I suppose if you're just running Pijul rather than integrating with its code, it might be safe to use in a corporate environment. Still, it's likely to be offputting.

Only uneducated people think that merely using or deploying AGPL software is 'problematic' in any way. Please don't spread that unreasonable fear.

That sort of response, "only uneducated people think...", really shuts down conversation, and is a hindrance to constructive discussion. Whether or not AGPL is 'problematic' is something that can be discussed without ad-hominem attacks.

Re: Pijul – A free and open source distributed version control system

#126
post #54
post #35

Earlier quoted context omitted.

Git (and mercurial, and a few others) are snapshot-based. That means that they think of the world as states, with changes between them. Darcs, and pijul, are patch-based. That means that they think of the world as an ordering of patches. Patches aren't the same as commits: commit orderings, for example, are fixed, whereas patch orderings are computed. They can change when you e..g merge a "branch". Branching is simil…

This distinction between commits and patches (I've been following git, hg, and darcs for over a decade) is one I've never quite understood. A patch says, take this original line of code found here and change it into this new line of code. A commit is just a patch that records when in the history you can be sure to find that original line of code. If you take an arbitrary patch and apply it to an arbitrary set of code…

> Git and mercurial have tools like rebase and cherry pick

darcs had incredible cherry picking about ten years ago.

Instead of saying "get this commit" and solve merge conflicts manually, like git does, darcs would get one patch and every other that was necessary for it.

It effectively made cherry picking work as in "I want this feature from that branch" instead of "I want some code from that branch".

It was glorious, other than the little detail of occasionally exponential merge times...

Re: Pijul – A free and open source distributed version control system

#128
post #29

Would love to see more explanation (with diagrams) of their patching model. Right now I'm not convinced it has any intuitive advantage.

Here is one concrete example compared to git I found digging around: https://tahoe-lafs.org/~zooko/badmerge/simple.html

Re: Pijul – A free and open source distributed version control system

#129
post #10

Sadly, I'm afraid the AGPL license is going to make this untouchable to businesses… :-( [Edit] Interestingly, they cover that. I suppose if you're just running Pijul rather than integrating with its code, it might be safe to use in a corporate environment. Still, it's likely to be offputting.

First of all, from the FAQ:

> But maybe we’ve missed something, and the AGPL actually prevents some use of Pijul that we’ve not thought of, and that does not aim at centralizing the internet. If this is the case, please discuss your idea with us on the mailing list.

Second, I wonder how many companies really had to change the source code of git, subversion, mercurial etc. What somebody could do is build a web services around it. As far as a service interfaces pijul with a system() it won't have any licensing problems. Encapsulate it into some RPC wrapper for extra safety. You might have to distribute the wrapper but it won't make it much easier for the competitors. The bulk of the web service can still be closed source.

Third, GPL licenses are fair to the original developers and the end users (they get to see the code they use). I understand why other developers might like BSD style licenses and we could spend another 30 years arguing about the virtues and the flaws of the two approaches. I won't get into that but given their goal of decentralizing the Internet I think they picked the right license.

Re: Pijul – A free and open source distributed version control system

#130
post #24

Earlier quoted context omitted.

Only uneducated people think that merely using or deploying AGPL software is 'problematic' in any way. Please don't spread that unreasonable fear.

That sort of response, "only uneducated people think...", really shuts down conversation, and is a hindrance to constructive discussion. Whether or not AGPL is 'problematic' is something that can be discussed without ad-hominem attacks.

Sorry, I did not mean it like that. ESL here.
Post reply on HN