[replying to Marc's message because Larry's is not in my inbox]
At 2024-12-14T12:13:40-0700, Marc Rochkind wrote:
On Sat, Dec 14, 2024 at 11:53 AM Larry McVoy
<lm(a)mcvoy.com> wrote:
> On Sat, Dec 14, 2024 at 12:25:56PM -0600, G. Branden Robinson wrote:
> > At 2024-12-14T10:43:47-0700, Marc Rochkind wrote:
> > 1. Tom Lord's Arch (ca. 2001) was at one timely recognized for
> > popularizing, or perhaps _introducing_, the notion of
> > decentralized version control to the dot-com era of hard-scrabble
> > FLOSS developers who were building "Web 2.0" and whose startup
> > employers, be they flush with cash or not, generally would not
> > spring for a commercial VCS (which might not have been
> > decentralized anyway).
>
> BitKeeper was 3 years into development by then.
I get that you're attentive to the matter of priority here, but I wrote
my paragraph carefully--although I see not quite carefully enough.
Arch popularized or introduced the notion of decentralized version
control to hard-scrabble FLOSS developers in the dot-com era whose
employers would not spend money on a commercial VCS. I recollect now
that BK was available under a free-to-use license--as long as one didn't
get too curious, like Andrew Tridgell, or wish to remain at liberty to
participate in FLOSS projects that were themselves VCSes. Such a
restriction was unacceptable to engineers in my circle (Debian people,
and Debian-adjacent people through my workplace).
From our perspective, BitKeeper was about as affordable and as appealing
as ClearCase.
And at my workplace, management wasn't interested in paying money to
cram down a VCS that the engineers would grumble about using. We
muddled through, mostly with Subversion, as I recall. We didn't have to
face the scale of coordination challenge that the Linux kernel did.
> > 2. "TeamWare and BitKeeper took
advantage of the interleaved
> > delta algorithm, also known as a weave, to implement an
> > efficient way to represent merged deltas by reference, instead
> > of reproducing code inside the repository. This is a lot more
> > complicated to do with reverse deltas, introduced by RCS.*"
> >
> > I'd a like a second footnote directing me to where I can
> > understand the mathematics supporting this claim. Just out of
> > nerd interest.
>
> See if this helps:
>
>
https://www.tuhs.org/pipermail/tuhs/2024-December/031188.html
I saw that, and it sheds some light, but it doesn't rise to the level of
a theorem.
If I were a mathematician, I might know what analytical discipline to
bring to bear on my question to you, but the best I can do is to mumble
about how it looks like you need both graph theory and set theory for
this. And I lack the category theory or other means to understand
whether and how those two might compose. And I don't know that category
theory would even help; it simply seems to be the device most often
employed to, uh, uncover higher-level isomorphisms in problem domains.
(That's where I duck a tomato hurled from the audience.)
A good mathematical expositor could, I add, employ these tools without
leaning too hard on the formalisms, and produce a writeup that is
broadly accessible.
We used to have USENIX for this sort of thing...
> You can work out that SCCS/BK are doing what they
claim by running
> bk annotate on a file that was authored by X but automerged by Y.
> The authorship stays the same across the merge, that's not true in
> most SCM systems that copy the data from the branch to the trunk.
I dimly recall that the "merge problem" was one of the shoals upon which
Subversion, if not quite ran aground upon, found itself adjacently
becalmed.
> Happy to answer any questions.
I've noted your enthusiasm for the weave and BK's amplification of the
concept. What I think you need is, as noted, a mathematical expositor
who can express the novelty of Rochkind's and your contributions in
terms that professionals who have little contact with the problems of
"source code configuration management" (an alternative nomenclature for
"version control" I've encountered) can comprehend. You've tried
popularizing to the masses. My conclusion is that, at best, they stare
slackly at you and say, "Git does that. I use Git.". To get your
innovation more broadly recognized, you may therefore have to take your
case to the ivory tower.
Despite the university training that many (most?) software engineers
receive, and the many tools that other engineering disciplines and
applied mathematics have to offer our field, there is little cross-
pollination. Relatively few programmers actually read Dijkstra or
Hoare. You're doing well if you can get them to read Brooks. Too
often, in my view, the only value "theoretical computer science"[1] has
is as a fountainhead of buzzwords one can spray on a slide deck for
one's manager to pitch to a promotion committee. I had to go to work at
a research lab to find an environment where people comfortably moved
back and forth between these domains. Naturally, its budget got
savaged. The grandparent organization wanted "an AI story".
Regards,
Branden
[1] I strongly dislike that term because of what it implies when the
modifier is deleted: if you have a science without a theoretical
framework, what you have is not a science. I suspect it is
preferred by math-phobes and managers who won't look past an
impending deadline. ("Who cares if it won't scale? That's a
problem for NEXT quarter. Get it into production.")