git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: A shortcoming of the git repo format

From
Linus Torvalds <torvalds@osdl.org>
Date
Apr 28, 2005, 00:57 UTC
Message-ID
<Pine.LNX.4.58.0504271722260.18901@ppc970.osdl.org>
In-Reply-To
<200504272049.NAA14598@emf.net>
On Wed, 27 Apr 2005, Tom Lord wrote:
Show 5 quoted lines
> 
> I think one has to understand Linus' posts as coming from the
> "head-down, steaming ahead for *MY* project cause you all suck"
> perspective and impose corresponding filters on his declarations of
> "LAW".

I'm really being very head-strong on these things, and much more so than I normally am, because quite frankly, I see "git" as a very different project from Linux.

(Which is not to say that I'm not opinionated even normally, but I'm normally a bit more open to listen to other people ;)

There's two huge differences between git and Linux, and I'm really sorry if they make me act as an asshole, but they are important to me:

 - with Linux, lots of people know what the "right thing" is, because the 
   UNIX mindset has really been a kind of "social background" that has 
   been around for long enough that it has institutionalized knowledge
   about what an OS is supposed to do.
   This means that in 99% of all technical discussions about the kernel, 
   people are already coming at the problem roughly from the same 
   stand-point. It's not _universally_ true, but I really think that the 
   institutionalized (but not always conscious) philosophy of UNIX is what 
   has made it a lot easier to talk about almost all kernel issues,
   because people have generally the same expectations of what is "good".
   Doing development is a lot about communication. Writing code in many 
   ways is secondary - it's much more important to try to make sure that 
   everybody knows what the goals are, because the _real_ pain in 
   development ends up being not the coding, but the much more fundamental 
   disagreements that happen when people really have totally different 
   expectations of what the end result is going to be.
   SCM's don't have this. Quite the reverse. I see 30 years of "CVS" being 
   the common language for a lot of people, and the fact is, most of the
   people on this mailing list probably never _really_ used BK, and do not
   really understand very deeply about how the distributed model actually 
   ends up workign in _practice_.
   I think a lot of people understand it intellectually, but I really do 
   think that we're lackign the kind of "institutionalized" knowledge
   where people understand things at a much more visceral level.
 - With Linux, I never had something I needed to get _done_. Even when I 
   started, it was just for fun, and by the time others joined in, the 
   system already did much more than I initially envisioned, so everything 
   was really "gravy".
   With git, this isn't the case. The _only_ reason I started git in the 
   first place is that I knew better than pretty much anybody else what my
   needs were, and I was forced to act on them because nothing out there 
   really solved the problem for me.

In other words: I _know_ that I've been unpleasant. I'm sorry about that, but I am trying to explain _why_ I'm being an asshole about things, more so than I usually am.

I'm not actually all that interested in SCM's. I'd have been much happier if I never had to start doing git in the first place. But circumstances not only forced me to do my own, it also so happens that I don't believe that there are many people around that have ever really _seen_ what my kind of development requirements are.

What does that boil down to? It means, for example, that to me it doesn't matter one _whit_ if you've been doing SCM's for the last thirty years, and you can do xdelta algorithms in your sleep.

Quite the reverse: such a person "knows" a lot of things, but I'm pretty damn sure that such a person has _never_ actually worked on a system that works the way the kernel development does, which means that most of the things that person "knows" are things that may need to be un-learnt.

And because I don't actually _care_ about SCM's, and only care about getting to the point where I (once more) don't have to even think about the SCM that I use for the kernel, I also don't have much incentive to worry about CM models that may well be very valid outside of kernel work.

See? When it comes to my Linux work, I'm very inclusive. Linux already does everything _I_ need it to do, so in many ways, all that really motivates me to improve it are really about other peoples needs, and as such, I'm really really interested in what _other_ people want. I still say "no, that's now how we do things", but that's much less contentious.

In contrast, with git, I'm totally uninterested in anything that doesn't make my kernel work go faster or more smoothly, and does so _today_. Which makes me a cantancerous old bastard, and bit the heads off anybody who isn't focused on that one thing.

And I really _am_ sorry. I don't actually _like_ being nasty about these things. But when it comes to git, I have one motivation, and one motivation only, and being nice about it isn't going to help.

The good news? I actually think my needs are very basic. Once gits gets to the point where it does what I need it to do, I don't really have any motivation to say "this is how we do it" any more. And I think we're actually getting to that point fairly soon. That's not saying git is "done", any less than Linux was "done" in 1992. It's just that at that point I don't have any reason to be a nasty control freak any more.

In fact, I don't see myself even maintaining the project, especially since there seem to be others that are more motivated to do so than I am. Then I'll just go back into my dark kernel cave, and hopefully I don't have to come out again for a while.

But for now, the _only_ point of git is as a kernel maintenance tool. There are tons of other SCM systems that are probably better for other projects, so if git is "just another SCM project", then git is totally pointless. So for now, the absolutely _only_ thing that matters for git design (as far as I'm concerned) is "how well does it suit Linus".

			Linus
Previous: H. Peter AnvinNext: Paul Jackson
Message 15 of 29 in “A shortcoming of the git repo format”
  1. H. Peter AnvinApr 27, 2005
  2. C. Scott AnanianApr 27, 2005
  3. Linus TorvaldsApr 27, 2005
  4. H. Peter AnvinApr 27, 2005
  5. Dave JonesApr 27, 2005
  6. H. Peter AnvinApr 27, 2005
  7. Jon SeymourApr 27, 2005
  8. Linus TorvaldsApr 27, 2005
  9. Petr BaudisApr 27, 2005
  10. Linus TorvaldsApr 27, 2005
  11. The git repo formatBrian O'Mahoney, Apr 27, 2005
  12. H. Peter AnvinApr 27, 2005
  13. Tom LordApr 27, 2005
  14. H. Peter AnvinApr 27, 2005
  15. Linus TorvaldsApr 28, 2005
  16. Paul JacksonApr 28, 2005
  17. Tom LordApr 28, 2005
  18. Ryan AndersonApr 28, 2005
  19. Morgan SchweersApr 28, 2005
  20. Barry SilvermanApr 28, 2005
  21. Linus TorvaldsApr 27, 2005
  22. David A. WheelerApr 28, 2005
  23. David LangApr 28, 2005
  24. Daniel BarkalowApr 27, 2005
  25. H. Peter AnvinApr 27, 2005
  26. Daniel BarkalowApr 28, 2005
  27. H. Peter AnvinApr 28, 2005
  28. David WoodhouseApr 28, 2005
  29. Gerhard SchrenkApr 27, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.