8 ms·
A Git Origin Story (2018)
- blinkingled 4y agoHmm no mention of Mercurial which was also released around the same time as Git and IIRC was also a contender for Linux kernel development VCS. Larry McVoy basically forced the creation of Git via Andrew Tridgell and look where we are today - while world uses Git. Larry must have had his reasons but I wonder how he feels about the outcome.
- sydthrowaway 4y agohttps://news.ycombinator.com/item?id=9330482 https://news.ycombinator.com/item?id=9330482
- kzzzznot 4y agoInterestingly about a year after that conversation BitKeeper was made open source
- stevekemp 4y agoFor completeness here's where that was discussed: https://news.ycombinator.com/item?id=11667494 https://news.ycombinator.com/item?id=11667494
- cryptonector 4y agoAt some point you realize that you can no longer monetize some proprietary code you have. Now what? You basically have two options: let it die, or open source it. Pride dictates that you'll want to open source it. In the world of infrastructure software, you have to keep moving forward because open source will replace your proprietary infrastructure software eventually. Stay still, milk that cow, and you'll lose the cow. It's that simple. Or better yet: develop a solid open source monetization plan to begin with. Not that that's easy! But D. Richard Hipp managed. Thinking about it, why couldn't BK have been the SQLite3 of DVCS? The answer is probably that McVoy didn't think about the SQLite model, probably because SQLite was the first to succeed at it, and that came after the BK->Git migration, or at least the realization that SQLite had a great business model came later. To recap, the SQLite model is this: a) make a great open source project, b) make a proprietary test suite for it with 100% branch coverage, c) convince the world that (b) exists, d) let them come to you for features and bug fixes, e) form a consortium to get paid through. BK coulda been a contendah!
- zoomablemind 4y ago>...To recap, the SQLite model is this: a) make a great open source project, b) make a proprietary test suite for it with 100% branch coverage, c) convince the world that (b) exists, d) let them come to you for features and bug fixes, e) form a consortium to get paid through. Where does this recap come from? My understanding was that SQLite was initially created in a context for a client that needed assurances of correctness, thus the extensive testing suite. As for the revenue, there's a proprietary extension to support fully encrypted db and access. This is licensed and supported.
- cryptonector 4y ago> Where does this recap come from? Is it not true? > My understanding was that SQLite was initially created... Ah, you think I meant that that was the SQLite model on day 1. But no, I meant that this is what it became. > As for the revenue, there's a proprietary extension to support fully encrypted db and access. This is licensed and supported. Consortium membership costs money. That money pays for the dev team.
- password4321 4y agoEvery time he pops in he gets asked about this, apparently... https://news.ycombinator.com/item?id=26204218#26205688 https://news.ycombinator.com/item?id=26204218#26205688 (2021)
- ptha 4y agoFrom the article: In 2005, Andrew tried to reverse-engineer the BitKeeper networking protocols in order to create a free software alternative. If it hadn't been him, it would've been someone else—it was only a matter of time. Larry McVoy had warned the Linux developers that he would pull the plug if anyone tried this, and that's exactly what he did. Some speculation, but is there a chance that Tridgell was aware of MyVoy's condition on the use of BitKeeper as source control for the Linux Kernel and attempted the reverse-engineering deliberately to force the scenario where the development of an Open Source BitKeeper alternative was necessary?
- deleted 4y ago[deleted]
- tanepiper 4y agoAround that time I (and a couple of others) worked on the excitingly named hgfront (https://github.com/tanepiper/hgfront https://github.com/tanepiper/hgfront) which was a Mercurial frontend a little like GitHub. There's a old low-res video (https://www.youtube.com/watch?v=NARcsoPp4F8 https://www.youtube.com/watch?v=NARcsoPp4F8) of it in action. I really liked Mercurial and used BitBucket for a while, but in the end GitHub won out.
- indrora 4y agoI'd argue that GH won over Bitbucket because of two key factors: 1. It wasn't developed by Atlassian, who at the time had a reputation for building more unwieldy tools (Jira, anyone?) and had a weird, awkward feel. The fact that Git had gained near instantaneous traction and Bitbucket needed you to learn Mercurial made it a near non-starter. 2. GitHub's model ("Social Coding") and zero-effort force amplification made it just the right wedge. Git had terrible tooling on the frontend and GitHub providing "Just enough" tooling around the server side while also providing the right kinds of tooling (webhooks, enterprise-ish features, click-to-fork, a very good PR path, etc) made it easy to use Git. Mercurial might be the "superior" tool from certain standpoints but Git had a few tricks up its sleeve that made people like it: * Written in C. No extra runtimes. * Modular construction: `git-slap` is immediately available as `git slap` like a native tool. * Performance of Mercurial was bad on massive codebases and slower machines. I mean terrible. once you hit 500KLOC or into the 2MLOC, a simple merge could take minutes if not tens of minutes in the old days if you weren't on a fairly modern (2005-7ish) machine. If you'd kept your slightly older P2 laptop around, you were absolutely roasting under the weight of what took Git mere seconds.
- i_like_apis 4y agoMercurial performance is still terrible for large codebases.
- skinnymuch 4y agoSomeone said it is their job to keep HN a nice place. I will try to follow suit. Could you provide citations or evidence to such a claim? In following HN guidelines, I did not do a quick dismissal. I spent time and ran tests. I do not see the same conclusions. I am ready to post up some data in good faith.
- simonpure 4y agoThere's also this Tech Talk Linus gave in 2007 - https://youtu.be/4XpnKHJAok8 https://youtu.be/4XpnKHJAok8
- stevenjgarner 4y agoWhat was the relationship or connection with Apache Subversion, if any? I remember using SVN for about 5 years before GIT.
- hibbelig 4y agoThe article mentions that Subversion existed at the time Linus chose Bitkeeper. As I understand it, the development goal of Subversion was to be CVS without the problems.
- throwaway892238 4y agoSubversion was so bad I missed CVS.
- prepend 4y agoI liked subversion much better than cvs as it was less buggy and was more integrated with Apache for web-based vcs.
- stonemetal12 4y agoThe article has a one liner Linus didn't like it. But if you google it you will come across this Linus quote: "Subversion has been the most pointless project ever started. Subversion used to say CVS done right: with that slogan there is nowhere you can go. There is no way to do CVS right."
- kyberias 4y agoJust watch the Linus Google talk. It's all there.
- mjw1007 4y agoThe article talks about Torvalds disliking CVS and Subversion but never making himself clear about the reasons, and later suggests that the most important "not fully articulated" reason was speed. But I think a more important reason for him was that he felt that CVS and SVN implicitly came with a development model where a small group of people has official commit privileges, while he very strongly wants a model without that. See for example what he says here: https://www.tag1consulting.com/blog/interview-linus-torvalds-linux-and-git https://www.tag1consulting.com/blog/interview-linus-torvalds... (search for "commit bit").
- sreevisakh 4y agoAndrew Tridgell maintains that he didn't violate the terms of BK license. The story of his 'reverse engineering' of BK is necessary to understand the context: https://lwn.net/Articles/132938/ https://lwn.net/Articles/132938/
- ghusbands 4y agoSo he noticed a repo identifier of bk://thunk.org:5000/ and tried telnetting to it, typed 'help' and got a list of commands and tried 'clone' and it gave all the files as sccs. That is still reverse engineering, even if it is facilitated by the wire-protocol. Especially when one has been asked directly to not do any reverse engineering. It also seems unlikely that that was where it stopped, as that likely wouldn't have gotten any attention. The whole claim just seems disingenuous. One can be fulfilling one's curiosity in simple and obvious ways and still be breaking license terms or the law. That something is trivial doesn't mean that it is moral, legal or licensed.
- LukeShu 4y agoAndrew Tridgell never downloaded or used the BitKeeper client program; he was never party to the BitKeeper license terms.
- ghusbands 4y agoIt would still fall afoul of the CFAA (for which there is no exception for reverse engineering) and equivalent laws outside the US - the server he was connecting to was owned by BitMover (as far as I see) and he wasn't authorised to use it in that fashion. And the person through whom he might have authorisation (Linus) had explicitly disallowed reverse engineering. So nobody who could authorise it had done so. People have been arrested and lost court cases for less. In good news, the supreme court clarified/limited the CFAA in June 2021 [1], so it's now seemingly legal to access a server however you like as long as you're not accessing information you wouldn't otherwise have access to. [1] https://www.theverge.com/2021/6/5/22491859/supreme-court-van-buren-cfaa-hacking-law-scope-narrowed https://www.theverge.com/2021/6/5/22491859/supreme-court-van...
- mcdonje 4y agoGit undoubtedly has disrupted the SCM space and become the major player for some very good reasons. But this bit of history casts the famous Linus quote in a bit of a different light; "Git proved I could be more than a one-hit wonder." Initial adoption by a major project is not something everyone can make happen by throwing their weight around. If he had communicated better, arch, darcs and monotone could've been git. SQLite has their own SCM (fossil), which hasn't taken off to nearly the same degree. Some of it has to do with the main problems different projects have. Some of it has to do with marketshare, and git started on 2nd base in that area.
- dahart 4y agoIt’s true that Darcs or something else could have won if only Linus told them exactly what to do. Maybe he didn’t even know how until he tried himself, but it doesn’t cast these other SCMs in a good light to say they couldn’t build something performant without Linus telling them to; you’re giving him a little too much power & credit. It’s also true that Fossil (or any of the DVCSs released after Git) might’ve won if only they had released before Git. Fossil was released after Git was, and after Git’s popularity had started growing. I have the impression that Fossil was built partly as a reaction to Git since the Fossil docs have always compared themselves to Git and complained about certain Git features. Fossil historically might not even exist without Git, but either way, market share may not be the primary reason, since one of these two actually predates the other. BitKeeper previously had the market share that Git took over, and BK didn’t win either, so market share may not be the explanation at all. Other reasons for nothing yet overtaking Git may be that nothing yet is better enough. I’d be surprised if something doesn’t replace Git eventually though.
- mjw1007 4y agoI don't think Git "won" principally on technical merits. I think it won because VCS transitions are very painful so people wanted to use the system that they expected to end up being most widely adopted. Certainly that's why I chose it in 2007. And of course when you're making this decision you should assume that many other people are making it on the same grounds. I believe the term for this situation is a "Keynesian beauty contest".
- CrazyPyroLinux 4y agoBut I heard Linus "wrote git as a joke [on] a weekend coding binge, jacked up on blow in Vegas." https://www.youtube.com/watch?v=CDeG4S-mJts https://www.youtube.com/watch?v=CDeG4S-mJts
- deleted 4y ago[deleted]
- swyx 4y agothis is probably related to a tweet i made sharing one perspective of the timeline of git: https://twitter.com/swyx/status/1536832603411451905?s=20&t=UDJvkz0kLFmCO_VRdQ1PUQ https://twitter.com/swyx/status/1536832603411451905?s=20&t=U... it took 4 days from call to starting the project
- kerblang 4y ago> Linus himself was the person who first discovered the techniques of open-source development that had eluded the GNU project, and that would be imitated by open-source projects for decades to come, right up to the present day A bold claim, but what exactly are these techniques?
- bombcar 4y agoI assume it's some sort of reference to GNU Hurd and something like "release something that works now rather than continually plan something that will someday be better".
- pavon 4y agoI presume they are referring to this: https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
- cryptonector 4y agoImagine if McVoy had adopted the SQLite business model instead of taking his ball and gone home! The world would be a different place. It would be better, though I don't know how much better.
- adharmad 4y agoMcVoy claimed that it would take someone roughly 5 years to solve the problems that bitkeeper solved. Torvalds took a few weeks of break and did it. Granted git at that time was far removed from the feature set and polish it had after a few years. But considering how many times we have heard the "I can build this in a weekend of coding" trope, git is truly an exception weekend-project (+) that actually delivered on the promise. (+) - Taking vast liberties by stretching the weekend
- vidarh 4y agoIt might well have been true(-ish) at the time McVoy did it. Problem is that a lot of these things are hard until you see a solution, but become fairly trivial or at least much simpler with even the smallest little hints at which part of the solution space is fruitful. If you want to monetise an idea like that you better build a lot of more amazing stuff around it to give people a reason to pay you. E.g. to do something like git you'd save a whole lot of effort the moment you know to consider a hierarchical store addressed by hash of contents from the whole repository down to individual files, and a list of the hash of the root of each revision (this description is already a refinement of the first iteration of how git stores trees, which apparently didn't use a hierarchical structure at first but just a list of files according to [1]). [1] https://utcc.utoronto.ca/~cks/space/blog/tech/GitTreeEvolution https://utcc.utoronto.ca/~cks/space/blog/tech/GitTreeEvoluti...
- nix23 4y ago>The Linux kernel was the most important open-source project in history That i think is unfair, it's the most prominent, but i would argue that GNU especially GCC was more important. However the way Linus split the work and with that idea used Bitkeeper and then later created Git was revolutionary. Some opensource kernel's already existed at that time, for example Mach and BSD (to name a micro and monolith). EDIT: But yeah we all know why BSD was legally problematic around the 90's.