Git v0.0.1 might have been created in 10 days, and the foundational ideas were certainly excellent. And it's amazing that two of the biggest contributions to the world of software came from the same person.
> "So I’d like to stress that while it really came together in just about ten days or so (at which point I did my first kernel commit using git), it wasn’t like it was some kind of mad dash of coding. The actual amount of that early code is actually fairly small, it all depended on getting the basic ideas right. And that I had been mulling over for a while before the whole project started. I’d seen the problems others had. I’d seen what I wanted to avoid doing."
Not saying that he copied BitKeeper 1:1, but if you look at BitKeeper usage examples (http://www.bitkeeper.org/), they do look familiar, don't they? BTW, BitKeeper is now open source - and development seems to have largely ceased...
That's not that amazing at all, because the fame and weight of being the creator of the former led to the adoption of the other as it became the official version control management system on which Linux was developed. — These are not two independent results.
If someone completely unknown developed Git 0.01 in 10 days, it would probably have stayed relatively obscure, and the reason for it's quality is because it became so famous due to being tied with Linux, attracting many developers.
Bazaar and mercurial got created the same year as git. Before that it made you happy if people were using subversion instead of CVS.
Sure, if nobody knows about the project nobody will use it, but I think git stands on its own. If any medium project adopted it (and it seems likely that its author would be working on some other things too), I think it would spread.
Are there any other examples that come even close?
possibly one of the reasons why git could be successful is that linus quickly handed over development to someone else.
of the top of my head i can only think of a few people that created multiple wildly successful projects. donald knuth with his books and with TeX (and i am not sure if the books are considered wildly successful). richard stallman with emacs and gcc (and the GNU licenses), anders hejlsberg with turbo pascal, c# and maybe typescript.
if you look at everyone else, they usually have only one wildly successful project that they are known for.
here is a list of programmers: https://en.wikipedia.org/wiki/List_of_programmers most there only have one project that is widely known. if they have multiple projects then most of those are smaller.
The details about that conflict are worthy of an article in and of themselves :)
The sad part is that BitKeeper really was an amazing product and way ahead of its time, pioneering many of the features git later made popular. Had they just been a bit smarter about the whole thing they could be where git (and GitHub) is today
Ironically the last thing they did before going bankrupt was release BitKeeper as Open Source.
But he lost the opportunity to remain central to the booming FOSS ecosystem, and all that it entails.
[0] http://dtrace.org/blogs/bmc/2005/04/15/on-reverse-engineerin...
i believe that i notice some nice changes have been coming to git over the years. and i believe i'm largely comfortable with the toolset it offers and occasionally i advance my knowledge of it. i mostly use: git diff, git status, git commit, git rebase, git pull, git log, occasionally git merge or once in a rare while git reflog or whatever else comes up when i try to look up "how do i get back commits from a stash i popped and then checked out" (losing the changes within the stash). i actually did that again the other day and i think i may have tried git reflog and git fsck for the first time on my Windows Subsystem Linux Ubuntu machine (no idea if that is relevant) and i could not find my lost stash at all, and just ended up recreating the changes.
git is nice in the distributed sense, it is fast for my use, git lfs has been quite a pain for me in the past (but maybe it has improved). but i do find the commands quite arcane and it was very hard for me to get used to it. i am all in now and i appreciate the ux changes the project has made (and likely will make) over the years - the git command output often seems to give a short education message about what command to execute in replacement of some arcane thing i've been using for some years and there are often good blog posts describing how to use new commands, but i spent a lot of time figuring out what the hell i was doing that it would be nice if i could have spent another way.
Which is to say everything in it makes intuitive sense if you know exactly how it works which is fine for developers, not exactly great for normal user that just wants to have some version control writing his novel.
But I think tooling got to the point where that is no longer the problem.
I had a really tremendously bad experience with using git professionally and haven't touched it since, but apparently instead of something like "undo" you get "reflog." I don't know what to say about that. Everyone tells me that the internals are great, wonderful, magic, and I am willing to accept that on face value, but the selection of command names just baffles me. As a solo developer, I will just live without it until the names make more sense and I can find a use case.
(I am quite sure that someone will begin howling that you cannot program without git the same way projects cannot be done without Agile, and yet programming existed before either.)
https://git.kernel.org/pub/scm/git/git.git/commit/?id=e83c51...
Here is a deeply paged link that will eventually not point to the first commits.
https://stackoverflow.com/questions/28533602/how-to-navigate...
> (queue heart attack)!
you actually mean to say
> (cue heart attack)!
Or, I meant that this was yet _another_ heart attack waiting in line? Kidding...
“The end result was I decided I could write something better than anything that was out there in two weeks, and I was right”
Lucky you, you never used clearcase or Visual SourceSafe!
https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23...
Edit: To get to this commit run
$ git log --oneline --reverse master | head -n1
e83c516331 Initial revision of "git", the information manager from hellIt was heavily inspired by `monotone`, which popularized the concept of a Merkle tree. Torvalds' comments about what he liked and didn't like about `monotone` are preserved in the Wikipedia page. In particular he criticized their use of C++ and SQLlite.
https://en.wikipedia.org/wiki/Monotone_(software)
Torvalds' git, on day 10, was some basic routines which saved and restored the contents of a directory. But it did satisfy his desire for it to be fast and minimal.
Someone named Jason Stopak helpfully found the original version of git and commented it heavily, here:
https://bitbucket.org/blog/what-can-we-learn-from-the-code-i...
A bash script shows what the workflow would be like. You would be adding files one by one, saving trees, obtaining a SHA from that tree, then retrieving the SHA. There is a very basic notion of history.
https://bitbucket.org/jacobstopak/baby-git/src/master/exampl...
As is typical with Torvalds, he left it to others to write tooling around the basic concepts soon after this. Torvalds deserves credit for the core ideas and a barely usable prototype. But most importantly, he enforced its use on a major open source project, very early in its life, which ensured that it would be improved upon.
The Linux kernel is an amazing piece of software but especially in the beginning wasn't especially innovative. The Solaris kernel was a much better implementation of the Unix lineage. The Mach kernel was interesting from a research perspective, and lives on in MacOS and iOS. HURD was a worthy experiment, as was Plan 9. But git was really head and shoulders above anything that came before.
Remember that next time you call yourself a 10x dev