July 1st, 2024

A Git story: Not so fun this time

Linus Torvalds faced challenges managing Linux kernel growth, leading to BitKeeper's development by Larry McVoy. Free BitKeeper use sparked mixed reactions, prompting Andrew Tridgell to create an open-source client in 2005, offering alternatives.

Read original articleLink Icon
A Git story: Not so fun this time

Linus Torvalds, known for creating Linux and Git, faced challenges in managing the Linux kernel development process due to its growth. This led to the development of BitKeeper by Larry McVoy, a distributed version control system that aimed to reduce Linus's workload. BitKeeper's adoption by the Linux kernel developers improved collaboration and code management. However, the use of BitKeeper for free came with restrictions, causing mixed reactions within the Linux community, particularly among free software advocates. As concerns grew about data lock-in and proprietary formats, Andrew Tridgell started developing a free BitKeeper client in 2005. This move aimed to address the community's desire for more open access to code history. Tridgell's efforts marked a shift towards providing alternative solutions for those hesitant to use proprietary software like BitKeeper.

Link Icon 31 comments
By @hoistbypetard - 7 months
Thanks for sharing a fun read.

Bitkeeper was neat, and my overall take on it mirrors Larry McVoy's: I wish he had open sourced it, made his nut running something just like github but for Bitkeeper, and that it had survived.

I only had one interaction with him. In the early '00s, I had contributed a minor amount of code to TortoiseCVS. (Stuff like improving the installer and adding a way to call a tool that could provide a reasonable display for diffs of `.doc` and `.rtf` files.) I had a new, very niche, piece of hardware that I was excited about and wanted to add support for in the Linux kernel. Having read the terms of his license agreement for Bitkeeper, and intending to maintain my patches for TortoiseCVS, I sent him an email asking if it was OK for me to use Bitkeeper anyway. He told me that it did not look like I was in the business of version control software (I wasn't!) and said to go ahead, but let him know if that changed.

I use git all the time now, because thankfully, it's good enough that I shouldn't spend any of my "innovation tokens" in this domain. But I'd still rather have bitkeeper or mercurial or fossil. I just can't justify the hit that being different would impose on collaboration.

By @janvdberg - 7 months
Exceptional read! I love it.

It's the most complete history of git that I know now. Exceptional!

I'd love to read more historical articles like this one, of pieces of software that have helped shape our world.

By @cxr - 7 months
There's a screenshot purporting to be of GitHub from May 2008. There are tell-tale signs, though, that some or all of the CSS has failed to load, and that that's not really what the site would have looked like if you visited it at the time. Indeed, if you check github.com in the Wayback Machine, you can see that its earliest crawl was May 2008, and it failed to capture the external style sheet, which results in a 404 when you try to load that copy today. Probably best to just not include a screenshot when that happens.

(Although it's especially silly in this case, since accessing that copy[1] in the Wayback Machine reveals that the GitHub website included screenshots of itself that look nothing like the screenshot in this article.)

1. <https://web.archive.org/web/20080514210148/http://github.com...>

By @account42 - 7 months
Thanks Andrew Tridgell for not letting the kernel get stuck with a proprietary source control. An example how sticking to your principles can make the world better in the long run even if it annoys people at first.
By @metadat - 7 months
> My biggest regret is not money, it is that Git is such an awful excuse for an SCM. It drives me nuts that the model is a tarball server. Even Linus has admitted to me that it’s a crappy design. It does what he wants, but what he wants is not what the world should want.

Why is this crappy? What would be better?

Edit: @luckydude Thank you for generously responding to the nudge, especially nearly instantly, wow :)

By @JoshTriplett - 7 months
> Tridge did the following.

> “Here’s a BitKeeper address, bk://thunk.org:5000. Let’s try connecting with telnet.”

Famously, Tridge gave a talk about this, and got the audience of the talk to recreate the "reverse engineering". See https://lwn.net/Articles/133016/ for a source.

> I attended Tridge's talk today. The best part of the demonstration was that he asked the audience for each command he should type in. And the audience instantly called out each command in unison, ("telnet", "help", "echo clone | nc").

By @blacklion - 7 months
Interesting, this story quote (without attribution!) this comment by Larry McVoy himself on HN

https://news.ycombinator.com/item?id=11671777

By @cryptonector - 7 months
> In a 2022 survey by Stack Overflow, Git had a market share of 94%, ...

> Never in history has a version control system dominated the market like Git. What will be the next to replace Git? Many say it might be related to AI, but no one can say for sure.

I doubt it's getting replaced. It's not just that it's got so much of the market, but also that the market is so much larger than back in the days of CVS.

It's hard to imagine everyone switching from Git. Switching from GitHub, feasible. From Git? That's much harder.

By @xiwenc - 7 months
It’s been awhile since i actually finished reading an article this long. Very well written!

I tried to find out who the author is or how come he/she knows so much. No luck. Anyone else knows or OP care to chip in?

By @superfish - 7 months
Great read!

I’m sure I’m not the first to point out that Junio (the appointed git “shepherd”) works at Google where mercurial is the “recommend local vcs” internally instead of git.

By @nyanpasu64 - 7 months
FYI Mercurial's developer is now known as Olivia Mackall; sadly the Google infobox has failed to pick up the updated information.
By @mulmboy - 7 months
> Additionally, Petr set up the first project homepage for Git, git.or.cz, and a code hosting service, repo.or.cz. These websites were the “official” Git sites until GitHub took over.

Is this true? I thought GitHub had no official affiliation with the git project

By @sergius - 7 months
This story is missing the impact that Tom Lord's TLA had on the git design.
By @jakubnarebski - 6 months
Regarding *Codeville* version control system: if I remember it correctly, it used novel merge algorithm, which was often better than the diff3 merge algorithm that RCS, CVS, Subversion, Git and other version control systems use.

However, if there was a problem with merge (a conflict), it was, from what I heard, much harder to resolve - because the algorithm was more complex. And with the introduction of the recursive merge the diff3 algorithm was deemed good enough in practice, easy to understand, and lacking sharp corner cases.

By @mindjiver - 7 months
This really took me back. Back then before Git was a big thing (2010/2011-ish) I had the misfortune to work at a very large user of IBM Rational ClearCase and it was so awful. However it was so bad and so expensive that I managed to get tasked to "fix it". As part as figuring out how to do this I travelled to GitTogether 2011 from Sweden. Lots of Git folks from those days where there, at least I remember Junio, Peff and Shawn Pearce being there. I was so energised from it all I went back and formed a small team that migrated a colossal code base (oh the horror stories I have) over to Git over the next 2 years. The most rewarding thing I did early in my career.

So thank to all of you that made this possible by creating Git, Gerrit and all the life saving tools this industry was missing! The passing of Shawn Pearce was really sad, but he won't be forgotten!

By @dudus - 7 months
I never heard the term porcelain before, but I liked this tidbit.

"In software development terminology, comparing low-level infrastructure to plumbing is hard to trace, but the use of “porcelain” to describe high-level packaging originated in the Git mailing list. To this day, Git uses the terms “plumbing” and “porcelain” to refer to low-level and high-level commands, respectively. "

Also, unrelated, the "Ruby people, strange people" video gave me a good chuckle.

https://www.youtube.com/watch?v=0m4hlWx7oRk&t=1080s

By @lawgimenez - 7 months
> A heavily sedated sloth with no legs is probably faster

I'm going to borrow this phrase from now on to everything slow.

By @globular-toast - 7 months
I've heard the story before but this was still fun to read. I didn't realise quite how rudimentary the first versions of git were. It really makes you wonder: was git the last opportunity to establish a ubiquitous version control system? Will there ever be another opportunity? Regardless of git's technical merits, one thing I'm extremely happy about is that it's free software. It seemed to come just before an avalanche of free software and really changed the way things are done (hopefully for good).
By @throw7 - 7 months
Fun read.

The licensing of bitkeeper was a real thing. Although I don't follow the kernel mailing list at all nowadays, I remember Alan Cox calling it out as buttkeeper. Good Times.

By @dgfitz - 7 months
So we’re stuck with git because of rails, how amazingly poetic.
By @daitangio - 7 months
Very well written & nice article. I already knows a bit of the story. Just a plus: even Windows source code is on git! Which is pretty cool if you think about it.

Open source wins

By @devdao - 7 months
Requesting permission from your source control tool vendor to be able to continue your work is nonsense.

It's alive today! Sr.ht has categories of work you can't host too. Still marinating.

By @tretiy3 - 7 months
I have no experience with c and i wonder: why Linus decided that implementing merging should go with scripting language and not in c?
By @ajkjk - 7 months
Dang this is such a good read.
By @michaelcampbell - 7 months
re: licensing

> You couldn’t use BitKeeper for version control if you were working on version control software.

> You had to get BitMover’s permission if you wanted to run BitKeeper alongside other similar software.

That just strains credulity.

By @rob74 - 7 months
> The bk clone/pull/push commands functioned similarly to git clone/pull/push.

That sounds a bit backwards: actually Git works similar to BitKeeper (can't say to what extent, as I'm not familiar with bk), not the other way around.

By @hgo - 7 months
This is why I come to HN. Thank you to the author.
By @JoshTriplett - 7 months
> In January 2006, the X Window team switched from CVS to Git, which wowed Junio. He didn’t expect such a big project like X Window to go through the trouble of changing version control systems.

It's the "X Window System" or just "X".