Podcast 036Revision #1, 1/7/2009 11:57 PM
Podcast 036Revision #10, 10/20/2011 7:52 PM
User: "Added more minutes"
This article has not been written.
Spolsky: It's like you're standing in my ear. Let's tell our listeners what this show is all about. today we have a special guest/host, see it's not like a guest, it's like a guest/host. And our guest/host today is Eric Sink of Sourcegear
Atwood: That's right. And you know, what I have directly in front of me, which is awesome is I have this book "Eric Sink on the busines of software"
Spolsky: Oh, yeah, yeah, Jeff you should read that.
Atwood: And it has, it is signed, which is nice, very nice, thank you Eric, and it also has a foreword by this guy Jewel Spolllssskyyy, I don't know who that is, some guy wrote a foreword, but it's a good book, and you know what? It's funny as I actually read this book, actually cover to cover recently, occasinally, when I go on trips I take books like this with me and Eric, I have read a bunch of your stuff obviously as you'h posted it, but i have all these dgo-eared pages from questions that I had when I was reading the book, so we can get into that at some point, but this is a great book and I really enjoyed it. Now, this is mostly a compilation, though, right? This is a compilation of stuff you'd posted on your blog is that true?
Sink: Yeah, that's right. Most of the stuff was on the blog first and we cleaned it up a little bit during the editing process for the book but mostly it's blog stuff.
Atwood: But I enjoy compilations like this, because with the blogs you always, with the blogs I mean obviously you can read it online, but sometimes it's nice to get a continual stream. It's kinda like, say you're watching the Sopranos, you can watch one episode every Sunday for a month, or you could just watch all of it on DVD, all at once.
Spolsky: that works well for the "Arrested Development" I found.
Atwood: Yeah, sometimes it's just nice to cosume a lot, like you know it's good,like Sopranos is good, so like if one episode is good, so fifteen episodes in a row is awesome. (something about going to the bathroom)
Spolsky: That way it's just a very, very long movie.
Atwood: So, anyway, it's exellent, I enjoyed it, so
Sposky: Eric, by way of introduction, you're the founder of Sourcegear, but not the CEO, is that right?
Sink: um, I sometimes use the CEO title but that's... I would say I am not actually. Typically, right now the management of the company is being actually done by somebody else, my business partner, Corey.
Spolsky: So, what's your day like? What do you do every day?
Sink: My day is basically, I do still have my hand in marketing stuff pretty actively, so I'm involved with the people that are doing marketing more than I am and talking with them and meeting with them and brainstorming ideas and stuff and for the last year or so I've actually been hands down mostly as a coder and a writer working on some things I'm not ready to talk about publicly and then doing my writing and blogging, which, from the complaints I get about how seldom I write on my blog you'd think I never write but the fact is I do do some writing
Spolsky: yeah, it's just all in invisible ink, so there, mister smartypants.
Atwood: I have another complaint actually. So, Eric, occasionally you write, that's very exciting when I see it popup in my feed items, it'like: uh, Eric wrote something, and you wrote something about the whole C controversy that we occasinally bring up, it's like this recurring theme on our podcast, it's like "should coders now C", and I loved your post because I totally, I read it and I was like "oh, he's gonna agree with me, it is awesome, I can use this against Joel", and I read it and I was "oh, he's gonna aree with me" and then you switched me at the last minute, and I was like "doh, Eric Sink, you agree with Joel!!"
Sink: I am so happy I was able to annoy you.
Atwood: I wa so convinced you are going to agree with me
Spolsky: So you were telling us that you do a lot of coding and a lot of writing, mostly writing
Sink: Yeah, I've continued to do some writing, although a lot of the writing I'm doing lately is working on a, I have this thing on my blog called the Source Control Howto, which is not at all related to the business of software stuff that you and I often talk about, it's actually very popular, it's like the number two thing on my blog after the story about how to find the wii, which really sucks, cause the number one traffic source on my blog is people looking for a wii. So, source control howto is really popular, and I've been saying for ages that I was gonna get it in book form, so that's something I am working on right now.
Spolsky: Is there a lot of, now the hot new source control systems are mercurial and git, which, if you thought that source control was confusing, wait until you have source control where everybody has their own repository with their own branches and they're all sending each other changes one at a time like randomly across the hall: "oh, here;s that fix you wanted".
Atwood: Actually one of the things I loved about that series was that I feel that so few developers really understand source control, and I really feel like the reason you understood it is that you guys wrote it, like literally you wrote a source control system, which I love, because I think that the best way to understand something is to sit down and just write it. Then you really understand it, then you can teach people how it works. And you did a great job of that. But with that in mind, if you assume -- and this is a big assumption -- that most developers have kinda sorta mastered fundamental source control -- which I find not to be true, frankly...
Spolsky: No. Most of them, even if they have, it's the check-in, check-out that they understand, but branching and merging -- that confuses the heck out of them.
Atwood: Right. Did we lose Eric?
Sink: I muted for a second just to try something. Go ahead.
Atwood: Okay. So, with that in mind, do you feel like... these new source control systems... The big hook -- and this is what you brought up, Joel -- is that they theoretically make branching and merging much easier, which, if true, is a big deal, because that is by far one of the most complicated things to master in Subversion or...
Spolsky: To me, the fact that they make branching and merging easier just means that your coworkers are more likely to branch and merge, and you're more likely to be confused.
Sink: That's very true.
Atwood: True, but... I don't know. Eric, I'd like to hear your opinion on this.
Sink: Well, Joel asked me to select some questions, and all the questions I was looking at on Stack Overflow were about DVCS, Git, Subversion, and why they're better. We can go and dive into that now, but it's something I think about a lot.
Atwood: Let's do it. I would love to hear about it.
Sink: Okay. The thing about DVCS... the first thing I usually want to say is...
Spolsky: DVCS is Distributed...
Sink: Distributed Version Control System -- or Decentralized sometimes.
Spolsky: So that's what Mercurial and Git are -- the first generation...
Sink: That's right. Although I guess Larry McVoy of BitKeeper would probably want us to say that his was the first generation, which is probably pretty close to true, because he's had this basic technology shipping for years and years, but of course his system costs a ton. The thing is, it's really intriguing, but all of the evangelism about it is really, really awful. People ask, "Why should I use DVCS?" and the usual answer is, "Go see Linus's video on YouTube," and the second answer is, "I can code on an airplane." The problem is, first of all, we hardly ever code on airplanes, and Linus's video is so rabidly pro-DVCS and really inflammatory... He's done more damage to DVCS's going mainstream than anyone else.
Sink: Oh yeah. If you look at his video, he basically says, if you're a Subversion user, you're an idiot.
Spolsky: So that makes people want to be Subversion users, because they want to be idiots... No!
Sink: I don't know what it makes people want to do, but it doesn't make people want to use Git, I don't think...
Spolsky: I really feel there's something about, if you take a progression along the autism scale from a normal civilian to an IT-style in-house programmer, to a pretty good Microsoft-style programmer, to a a deep, dark, operating system lisp hacker programmer, and then the kernel programmers all the way to the right hand side the people that actually write lisp compilers, along a math scale, I sorta feel like what's happening is that you're getting people that have a better and better aptitude for keeping compicated hierarchies in their head all at once, or like multiple relations between multiple things. So there's some point at which they can understand pointers, there's that level of indirections and then there's some point at which they can understand recursion, where they're having to think about something at several levels of abstaction at the same time, and then there's a point at which they can undestand source code control and then sort of to the right of that scale is actually understanding branching and merging and multiple repositories and decentralization. It's actually kinda high up there in the level of complexity that it takes to really really grok it. And you can explain it to people and they might understand it once, and I think many people if they had it explained to them well would be able to just learn the four commands that they're gonna need to use, and kinda get how those are working.
Sink: I think that's true, and I fundamentally think you're right. What you said earlier about if your tool does branching and merging better and easier, that means people will use it more and that's bad. There is some big truth to that, because DVCSes and Git and things like that are conceptually much harder than tools like Subversion. But my interest as a version control vendor is basically, I keep running into these situation where if our product was a DVCS, we could weasel our way out of certain tech support situations that we currently have trouble with...
Spolsky: You mean that you would have an answer to certain problems that you don't currently have an answer to.
Sink: Right, we get people saying, "Hey, we've been Vault users, we're happy for years and now we just added this sight in Ireland and we want to be able to synchronize the two repositories. Can we do that?" And of course the answer with Vault is, "Well no, it's not going to work the way you want it to because it's not a DVCS." And if we actually... I really think that the people that are trying to sell or give DVCSes to normal people are having a terrible time of it...
Spolsky: I'm sure.
Sink: ...because it is conceptually hard and scary and it doesn't make any sense. But if it were presented to them as a good version control system and just keep all the distributed aspects a secret. And then when they come into one of these problems that DVCS can solve, DVCS is flexible enough to actual do it. That aspect of it is cool. That'll be the thing that takes these systems mainstream, but right now they're conceptually so hard to grok that normal people...
Spolsky: And the people that are inventing them are not really the best people to try and explain them because they have the curse of knowledge. They understand it so it's very hard for them to see, "Why don't you get it? Why don't you understand?" Commit is not the same as a push! (Or whatever...)
Sink: That's right. In fact, some of these guys are just really, really, really smart; and some of them are some of the worst people to explain it. The guy who wrote Darks is really smart and it's not clear that he can explain why Darks is cool to the average VB programmer.
Jeff: I think even in source control... You have to understand, your source control posts were my life. I was teaching developers Team System source control and you start with the real basics like, "How do I merge?" Just merging can blow peoples minds, and that's the very bedrock of source control. Then getting into branching and merging and tagging and stuff... You have to go very much step by step with people and they have to get it at every intersection otherwise they are off in the weeds.
So I appreciate the challenges of distrbuted version control, because it adds yet another layer to something that people already kind of don't get (the mainstream developers).
I guess running a software company as you do, you would obviously appreciate this: It's all about the UI at some level really helps the people get it.
So when you give people a command-line tool, "Just use 'get' type commands."
They're like, "What?"
That's not really a great product to sell. Well I guess it doesn't sell...
Sink: That's a really good way of saying that. You're making something complicated that is already too complicated. The other problem from my perspective is top to botoom, cersion control means so many different things at each level of our industry that you're talking about completely different things. Like
Joel uses version control... What do you guys use? Subversion? Right?
Joel: No, mercurial.
Guest: You guys use mercuruial? So you use version control in ways that I understand. You use it the same way we do. At a really, really large enterprice, like say Wal-mart, version control is mostly about trying to prevent programmers from working. It's about: "We have to put obstacles in the way of programmers doing something wrong. We've got so many of them, we can't keep track of them. We just need more obstacles. Can you sell us obstacles?" People come to us, they don't understand that they're saying that, but that is really what they want, "We want obstacles!"
Joel: Well that's an easy business! Wait a minute... <chuckles>
Sink: The problem is that selling obstacles is far more lucrative than selling tools.
Jeff: But wait, the obstacle free extreme is nobody does any version control, right? Nobody is going to argue that