The Changelog: Software Development, Open Source - Replacing Git with Git (Interview)

Episode Date: April 12, 2024

This week we're talking to Scott Chacon, one of the co-founders of GitHub, to discuss the history and future of Git and Scott's new project Git Butler, a branch manager tool that's aiming to improve t...he developer experience of Git using Git. We also touch on the contentious topic of open source licensing and the challenges of defining "Open Source", FSL vs GPL, and more.

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome back. This is the Change Law. We feature the hackers, the leaders, and the innovators in the world of software development. And Jared and I are joined by one of the OGs himself, one of the co-founders of GitHub, Scott Chacon. Scott is still into Git. Can you believe it? We discuss the history and the future of Git, the only version control system out there to most developers out there. Scott explains how GitHub helped to propel Git to success and talks about the importance of social coding and open source. We also discuss Scott's new project, Git Butler, a branch manager tool he is working on.
Starting point is 00:00:51 And we discuss the concept of virtual branches and their benefits. He shares his thoughts on the future of version control systems and the potential for innovation in that field. We also touch on a contentious topic around open source and licensing and the challenges of defining quote open source end quote and what it takes to communicate the different categories of projects that have their source code open, but they're not officially quote open source in the OSI licensing standard. Buckle up. This is a fun one. A big massive thank you to our friends and Thank you. In 30 plus regions. Launch net for free at fly.io. Okay, friends. The on-call scene is getting hot.
Starting point is 00:02:01 Literally, our friends at FireHydrant have their new solution out there called Signals. What you're about to hear are real reactions from PagerDuty users after seeing FireHydrant's on-call solution called Signals for the first time. PagerDuty, I don't want to say they're evil, but they're an evil that we've had to maintain. I know all of our engineering teams, as well as myself, are interested in getting this moving the correct direction, as right now just managing and maintaining our user seats has become problematic. That's really good, actually. This is a consistent problem for us and teams is that covering these sorts of ad hoc timeframes is very difficult.
Starting point is 00:02:36 You know, putting in like overrides and specific days and different new shifts is quite onerous. And you did the most important piece, which is didn't tie them together, because that's half the problem with PagerDuty, right, is I get all these alerts and then I get an incident per alert. And generally speaking, when you go sideways, you get lots of alerts because lots of things are broken, but you only have one incident.
Starting point is 00:03:02 Yeah, I'm super impressed with that, because being able to assign to different teams is an issue for us because like the one the one alert fires for one team and then it seems like to have to bounce around and it never does, which then means that we have tons of communication issues because like people aren't updated. No, I mean, to be open and honest, when can we switch? So you're probably tired of alerting tools that feel more like a headache than a solution, right? Well, Signals from Fire Hydrant is the alerting and on-call tool designed for humans, not systems. Signals puts teams at the center, giving you the ultimate control over rules, policies, and schedules. No need to configure your services or do wonky workarounds and just data seamlessly from any source using webhooks and watch as signals filters out the noise alerting you only on what matters manage tasks like coverage requests and on-call notifications
Starting point is 00:03:57 effortlessly within slack you can even acknowledge alerts right there but here's the game changer signals natively integrates with fire Hydrant's full incident management suite. So as soon as you're alerted, you can seamlessly kick off and manage your entire incident inside a single platform. Learn more or switch today at firehydrant.com slash signals. Again, firehydrant.com slash signals. So we are here with Scott Chacon, who has been a Git mastermind since the old days, at least in my mind. You taught me about Git. The days.
Starting point is 00:04:55 Yes, the original days of Git and GitHub. Not exactly of Git, but what took Git to the next level was GitHub. Because, gosh, what year was it, Scott, when you co-founded GitHub and came on board and started teaching all of us about Git? This was a long time ago. Yeah, I mean, 2008, I think, is sort of incorporation of the C Corp, but I think we were working on it on and off or volunteer or whatever for some time before that. So, I mean, I was doing Git community book and working with Git in 2005, 2006, I think. So yeah, it's been a-
Starting point is 00:05:28 That book was so amazing to me. A few decades. Yeah. So many times I was like, that was better than documentation because it was like examples of how to use things and what to expect versus like documentation is kind of sterile.
Starting point is 00:05:40 Yeah. And it continues to this day, actually. I'm talking to A-Press for doing a third edition of the book and uh every single time it's almost you know it's like having a kid or something where you're like it's a huge pain and then you you have them and then you kind of forget sort of how painful the early days were or something and you're like you know what'd be fun they're so cute it's not that bad right but then you're like oh they are that bad anyways I love my kids
Starting point is 00:06:05 this might be a surprise to some of our listeners but Git was not just a de facto tool like back then there was a war over SCMs like what was going to win because Mercurial had a lot of users
Starting point is 00:06:20 you know it's funny I was just at FOSDEM conference in Belgium and I I was talking to, I was, we sort of rented out a bar and we're buying people beers and stuff. And there was this table with the guy that does Pujol, which is another version control system now that's kind of based on darks or similar to sort of patch theory, theory patches. And then the guys who are basically maintaining Mercurial these days. and we all kind of sat down and had a beer and talked, you know, we were all kind of smack talking and saying, like, what's good about that? It's like the old days, right? Like, I haven't really argued about version control systems in such a long time that it was fun to think about, you know, the days of Mercurial and Darks and Arch and, you know,
Starting point is 00:07:01 all of these sort of bizarre, right? If anybody remembers those. Oh, yeah, bizarre. But, yeah, it's an interesting new world of just uniformity. Like, now I talk to these conferences and, you know, people at these shows, and everybody, you know, like I said, they grow up using Git, right? It's an afterthought, yeah. They used it in college.
Starting point is 00:07:21 It was the only thing they've ever used. Software programming has always been getting GitHub with them and open source. Like, man, you know, for old guys like me or us, I suppose, you know, trying to remember what was open source like when we're sending patches to track or whatever. Oh yeah, track, T-R-A-C, yeah. What was it like before Git for you then? Like, was Subversion your thing? Was SVS your thing? Where were you hanging out at? Yeah, no, for me, you know, I graduated from college in 2002, I think.
Starting point is 00:07:52 And so my first job, actually, we were FTPing files onto the production server, right? Of course. Yeah. These PHP files, and you just, not even SCP, what was it, FTP? Yeah, you just FTP. Yeah, SFTP or FTP.
Starting point is 00:08:04 SFTP was the other one, yeah, secure FTP. And, you know, not even SCP, what was it? FTP, yeah, you just FTP. Yeah, SFTP or FTP. SFTP was the other one, yeah, secure FTP. And, you know, we would just straight into production or even, you know, SSH in and edit the files in place or something, right? And just be like, just make sure to sort of copy these files because I just edited them. So, you know, you need to, yeah. Dot back.
Starting point is 00:08:18 You put an underscore two on it, you know, on the file name. And it was one of the first things I did when I got there is I put in uh cvs i think um at the time and then we kind of quickly moved to subversion but yeah i used subversion for for a while and and when git came around actually we were using perforce at the job that i was at um which is still you know you can still do although i think now it's like get back like you can use perforce for with git clients or something every every it just pervaded, you know, sort of the whole world. But yeah, I actually the first things that I did with Git, the reason why I got into it was because we were using it for content transfer.
Starting point is 00:08:53 Right. Like like we wanted to essentially get media onto this network of servers that we had for like an advertising display network. And we were using Git for that of just saying like this is is much, we were rolling RPMs and stuff before that. And we're like, you know, what we could do is just have them fetch. And then it's nice. It gets sort of just the deltas, right? Like it doesn't get, it only gets the files that it needs. It was very good for this sort of content transfer mechanism.
Starting point is 00:09:17 And I grew up using it that way. That was my first, you know, sort of usage of Git. And so that's kind of what led me to, you know, write documentation for it and stuff is I learned it and I found it very cool. And I was like, you know, sort of usage of Git. And so that's kind of what led me to, you know, write documentation for it and stuff is I learned it and I found it very cool. And I was like, you know, it'd be nice to make other this easier for other people because it's so obtuse at first. And then once you get it, then it's very simple and it's very interesting. Right. So yeah, that kind of got me into that is we were using Perforce for our version control and we were using Git for content management. Well, of all the GitHub founders, so Adam and I were both around.
Starting point is 00:09:46 I mean, we're early GitHub users. The podcast picked up, I think, in 09, so slightly after GitHub was launched and started to gain some traction. I was very much, I came out of college in 05, 06 and was using Subversion a little bit, but also honestly just doing like the underscore two kind of stuff also. And so I was very much learning Git when it was, should I learn Git? Should I learn Mercurial?
Starting point is 00:10:14 You know, it was very much the VHS and Betamax, the Blu-ray and HD DVD timeframe of like, which one's going to win? And I think that GitHub ended up being the killer app that made Git actually just launch into the stratosphere. But of all the GitHub founders, you were like the education guy. Like I was always like scotch a cone. I mean, you honestly taught me a lot of what I knew for the first decade of my Git skills, which at a certain point you just learn like seven commands and you kind of understand how it works and you're good to go which is nice but get sem.com when you guys started github were you very much like okay scott's gonna be i mean this is kind of like early days of like tool evangelism or tool education which is so commonplace now but was kind of new back then to a certain degree yeah no i i actually
Starting point is 00:11:01 when i first started at github when when I kind of joined the guys full time, I had been involved in writing documentation and stuff. I think I'd published the peep code PDF, Git internals peep code PDF before that. And I liked writing about this and trying to make this easy. Peep code. Yeah. Do you guys remember peep code?
Starting point is 00:11:18 Peep code. Oh, you're doing a Jeffrey Grozenbach impersonation. I'm trying. My best. He has such an awesome voice. He has a very specific, nuanced voice. He does. But yeah, I had this, you know, I had that and had some screencasts and stuff that I
Starting point is 00:11:33 had done for that. And a friend of mine who worked at Google, Sean Pierce, had asked me to come into Google and they were kind of switching over to Garrett and Git for their Android team. And he had asked me if I'd come in and they could, you know, Google could pay me to like do this tutorial type thing for their Android team. And I was like, yeah, that sounds fun. And then I, I decided, you know, that I would join the GitHub guys. And they were like, I was like, can I bring this, you know, income in like, well, I'll just have Google pay GitHub, right. And we'll kind of have this
Starting point is 00:12:01 education arm of, you know, me going around and like, I have a gig, right? And we'll make it a GitHub thing. And they were like, yeah, if you're coming in with Google as our, you know, your first client, right? That's right. That's fantastic. We'll, we'll, uh, yeah, we'll let you do that. Right. So it's actually one of the first things I did for GitHub is I went to Google and I helped teach Git to the Android team. And I ended up doing that a lot. Actually, we did a lot of corporate stuff where, and a lot of it, they weren't even using GitHub, right? Like the Android team didn't use GitHub. I don't know, maybe they do now, but like they didn't at the time. Or I did Motorola or Qualcomm or, you know, there's all
Starting point is 00:12:37 these sort of Linux, like Android was going out and people like all these chip manufacturers and everybody needed to learn Git for Linux stuff and so that they could work on Android drivers or whatever. And so I, you know, GitHub actually made a relatively good amount of money of me traveling around and teaching all of these teams how to use Git. But also, you know, I think it helped spread the brand and things. And then I would do lots of conference talks and all of that.
Starting point is 00:13:02 So yeah, I really, now I'm doing conference talks and stuff. Again, for Git Butler, right, like going on stage and talking about mostly Git, it's kind of the same thing, right? I didn't really talk about GitHub most of the time. I would just talk about Git and teach people Git and then just assume, you know, they'll kind of flow over into GitHub at some point eventually. And it worked out really well for us. And so, but yeah, now I'm getting back on stage and kind of doing that type of thing and teaching Git again. And there's a lot of stuff that's changed in the last five years. So it's been kind of fun to do these, these, you know, you think, you know, Git type talks, but yeah, the world has changed entirely, right? Like now everybody's
Starting point is 00:13:36 grown up with it. It's, it's such a different, different world than being like, you know why you should use Git. It's because it's good at branching or something. Everybody's like, I don't even know what to compare it to, right? Like it's because it's good at branching or something but he's like i don't even know what to compare it to right like right it's it's almost the way it's ubiquitous it really is which uh based the question like what might be next you know because at one point subversion and you know those others essentially was all we knew and there was a war and there was sort of like this competition between what would actually win and as you said said, Jared, GitHub was the killer app that made Git win, and it won for good reasons. But it was, you know, there's a lot of,
Starting point is 00:14:10 I suppose a lot of maturity around GitHub, Git, et cetera, in software development at large across the globe. Like this is a phenomenon that happened not just because Git was great, but also because GitHub is also great at social coding and connecting people and bringing projects together and popularizing open source and open source moves fast, keep up kind of thing, which is what we founded ourselves on was this open source moves fast, keep up. The keep up was actually meant to be snarky.
Starting point is 00:14:34 And that was when Netherlands addition to it. I was like, open source moves fast. This is what we should do. And he's like, yeah, but you got to keep up. You know, given that, like what might come next? I mean, we're in an AI era. something else coming what are your thoughts do you have any purview on that i guess there's two different things one is conversion control tools be better right which i think is is clearly true like i feel like the git user interface hasn't changed really massively since i started
Starting point is 00:15:03 you know for 15 years now right like it's and i think there hasn't been really massively since I started, you know, for 15 years now, right? Like it's, and I think there hasn't been a lot of innovation in that space of what can a version control system be like. There's, there's been really interesting things like, you know, Darks or Peugeot has been around for a while and they have kind of an interesting idea of sort of patch commutation or, or, you know, how they deal with merge conflicts and stuff, but it's always been so obtuse, like it's so difficult to use, right? It's not really, it doesn't make things that much easier for the user. Generally, it's just, it's kind of mathematically interesting. And so I like this idea of like, what, what could be easier on users? Actually, one of the other than, so I'm working on Git Butler,
Starting point is 00:15:36 which we're trying to do that, right, of just re-implementing the user interface and using, making sure that we're still writing out Git tree and And at the end of the day, right, like you need a tree. You need to have, here's what a directory looks like of code. But I don't think it really matters how technically you put that together, right? As long as at the end it's a Git tree, you can kind of use parts of Git and then rewrite other parts of Git without anybody knowing. One of the interesting, I can talk about Git Butler and kind of what we're doing, but one of the other interesting projects that I've been following recently is uh jujitsu which is another sort of google project i don't know if you guys have played with that but like it's an interesting
Starting point is 00:16:12 idea of of kind of how to think about version control differently and and if it can help with sort of modern workflows of what we're really trying to accomplish so one of the things that they do is they don't have a staging area, just sort of the working directory is kind of the staging area, but they're kind of constantly rewriting commits. So it's like constantly rebasing, but like in a very easy way, right? And you can create a commit, sort of, you know, three commits down and sort of insert it into two different commits and then start moving patches sort of into that, like after the fact, and it kind of rewrites everything above that. And it creates merge conflicts and will keep the conflict as sort of a first class artifact within the commit. And then you can go to it at any point and kind of fix it and it rebases everything on
Starting point is 00:16:53 top of that. But I would check it out. It's really, really interesting. But I like this idea of saying what could, like, this doesn't have to be our user interface, right? Like our user interface could look like just about anything. But at the end of the day, all we're saying is, here's what I want the code to look like, right? And I want to be very specific that this is what every version of every file very specifically looks like. And Git is very good at that. But like how to craft that, right?
Starting point is 00:17:17 There's lots of different ways we can do that. I mean, we even see that in Git. People complaining or like arguing about merges versus rebasing or sort of PRs right like if you're taking in review are you are you read sort of rebasing a patch series and trying to keep it like a patch series like the old sort of mailing list days or are you just adding new commits onto your pr because you you figure it's sort of a squash you know unified diff anyways so it doesn't really matter like is the commit interesting is the the PR interesting, right? Like, right. There's, there's all these workflows, debate all these things. Yeah. And,
Starting point is 00:17:48 you know, I think there's, there's strengths to all of these things. And so it's really about how do we want to work, right? Like, what's actually easiest for us on a day to day basis as software developers to say, here's what the problem is, here's how I want to work. Does the tool kind of help you do that? Right? Or does it get in your way? Are you getting around it somehow? And I think I think with get all of us are getting around it somehow. It's certainly better than anything I used before. But I can imagine a world where we have much better tooling than this, right? And some of it is sort of AI, you know, there's there's AI stuff that I think can help with that. But there's heuristic things, you know, there's there's
Starting point is 00:18:23 algorithmic, simple things that we can do to or just UI, just user interface stuff, right. Of just, just making it easy to, to sort of absorb changes into previous commits or do fix up auto squash type stuff in a more automatic basis, right. Like, or doing, you know, sort of commit based review is a big thing that I see all over the plate, right. There's like fabricator and there's all these tools that get around, you know, GitHub sort of squashing everything into one unified div. People want to do, you know, from a, sorry, I'm talking a lot here, but I guess. I love it. You're into theory. I mean, this shows how deep you go and I love it. I, one of the things that I'm really fascinated about is what we've really done with Git is we
Starting point is 00:19:00 use the commit for several orthogonal things, right? For several things that really aren't directly related to each other. So we use it to share work to actually put, you have to commit something in order to push it over the wire, right? So you cannot have your code reviewed unless you've committed it. It doesn't necessarily mean that that's, in fact, almost by definition, it's not what you want to push to production, right? You want to push it to somebody else so that they can look at it and give you feedback and say, okay, here's how I would change it, right? So it's kind of like what the mailing lists were used for before. And then so you use it to share your work, you use it to document your work, right? So the commit message is really used in blame or in these sort of archaeological tools to document the work that you're doing and use it to save your work, right? Like you have to, this is why people do like work in progress commits that they're not really attached to is they just want to make sure that Git saves it somewhere, that it's recoverable.
Starting point is 00:19:53 And I think overloading the concept of the commit with these things makes all of them a little bad, right? All of the tools that do these things a little bad. I think what would be really ideal is to separate these out. So you have a mechanism that saves your work, right? Maybe even automatically in the background or something, you have something that helps you document your work or helps you answer questions about your code, right? In a way that is maybe better than the commit message and ways to share your work that you don't necessarily have to commit. Like none of these things, like it's weird to have them all together. And I think it's what makes it difficult to have
Starting point is 00:20:24 a good workflow that works and good tooling that works for everybody, right? So I think separating those out as concerns would make the user interface for a version control system much, much better. I think that's interesting. I never thought about it like that. I think that's on point. You'd obviously have thought deeper on this subject than I have, which isn't hard because
Starting point is 00:20:42 I don't think about it very much. I think about it very pragmatically. Like, should I share this code? Should I push it to production? Should I document what I just did? We just recently did a show about generalization and specialization, and I've always been an advocate for and a generalist in general. However, Scott, I feel like you are kind of the anti to that. You have specialized in Git specifically.
Starting point is 00:21:04 You were on the changelog 13 years ago talking about Git. Now you're on the changelog today talking about Git. Right. And so it was kind of funny. It's like a deja vu all over again. I mean, from my perspective, publicly, you kind of disappeared for a while and then you emerge talking about Git. And so I would love to hear what happened in the meantime, but also just like your fascination or your interest or your curiosity about one specific thing that has lasted for so long. Are you not bored of Git? I mean, yeah, no, I'm not bored of Git.
Starting point is 00:21:40 So what happened, I mean, to answer your first question first, I suppose, is I left GitHub and I started another company, which was in language learning. And so I kind of got deep into the world of language learning for about five or six years. And then that company kind of spun it off. It was in that, you know, if you guys are in this sort of startup world a lot, right? I think there's two good outcomes for a startup. One is it absolutely does not work, or it absolutely works great. And the worst place to be is in the middle, right? Where it's like, it's not not working, but it's not really working. And so
Starting point is 00:22:16 you're like, I'm almost there, right? And so I, you know, we, I did that for several years, like language learning is, it's either, you know, sort of duolingo where it's very cheap and scalable, but it doesn't work very well, like practically, or it's like italki or something or what we were trying to do, which is you're talking to human beings and, and, you know, it's very difficult scale and it's very expensive for users, but it does work very well, right? It's more of an in-person language school type thing. And so I kind of got into this world of trying to figure out, can, you out, can we bridge this to some degree? Because I got very frustrated. I lived in Paris the last year that I worked at GitHub and I was trying to
Starting point is 00:22:52 learn French. And so I think, you know, like any startup-y type tech person, I was like, I can solve this problem, right? This is a very difficult problem. It's one that I feel there must be millions of people that feel this, that need to learn a language for some reason. Like, and I tried to tackle that and it kind of worked and it kind of didn't work. So from a, you know, sort of business perspective. And so when that, when that kind of ended and I, I spun it out, I was just kind of looking for what else to do. And, and I also do some angel investing, you know, since the GitHub exit, I, you know, I've been angel investing in some companies and things like that. And my partner and I kind of looked at all of the companies we had invested in and kind of asked ourselves this kind of fun party question. You know, we did it
Starting point is 00:23:33 every once in a while, which is if you could run any of these companies, like which of these companies would you find the most interesting to be a part of, right? Or to lead. And mine came up with a version control system that we had invested in and it hadn't quite worked, but I found it so interesting, right? Of just, it kind of got me back into it. It was kind of nice to take a break for a little while of not thinking about this all the time. I was still using GitHub every day. I was still developing, you know, but I didn't really look at the problem set. And what they tried to do was more of like a Google doc. Like they really looked at version control of saying, how come Google docs essentially does version control, but does it very, very differently than how software projects do it,
Starting point is 00:24:08 right? Like they, you never commit in Google Docs, right? Like, you're not, you're not sort of pushing changes somewhere. It's sort of constantly recording, it's constantly saving stuff. It's just trying to make sense of it in the background for you. And it's there when you need it. But otherwise, you're not really thinking about it. And I was like, why, you know, why don't we do that in software? Like, why don't we just run a daemon and we don't have to worry about it anymore? And whenever we need information or something, it's just always kind of been running there. And I found that so interesting of just looking at how come nobody's really introspective this for a while, right?
Starting point is 00:24:37 Or nobody's really tried it. Every Git client out there is, you know, it's a button on top of a command line that, you know, invocation that you would run. It's not, there's nothing new, right? Like nobody's doing anything you can't do in the CLI. And so, yeah, I started thinking about this more philosophically of like, what are we really trying to do here? Like kind of going back to first principles and saying, let's start over, let's pretend GitHub had not sort of, you know, piggybacked on Git, right? But it created its own CLI, right? Or created its own client. Like, what might that have looked like if we had thought about it from first principles and
Starting point is 00:25:11 really tried to say, what a nice experience for what you're doing. And that was kind of what started Git Butler, right? Is my partner Creel, who had started Sturdy and done this other version control system, they hadn't worked largely because they were trying to move people from Git into a brand new version control system. And that's very, very hard to do. GitHub ran into this all the time. We would go in and try to move people from Subversion or from Perforce or whatever.
Starting point is 00:25:36 And it always had to be Greenfield projects. It was so hard to move a whole team or a whole company or something. And so we got there, but it took a really long time and it was a fight all the time, but, but to come from scratch and try to take on Git and GitHub, right. It'd be like, you should move from that to us because we're better. Right. Like that's insanely difficult to do. And so we, we decided to kind of go the middle route of being like, let's GitHub's great. Let's keep GitHub. Let's just rethink the client side, right? Like how, how do we create stuff to push to github how do we how do we manage that information and manage that workflow and help that be better right and
Starting point is 00:26:10 i think that's that's a very interesting question and it's one that we're still kind of debating we've been working on this for a year right and we've done really interesting things i think around virtual branches and stuff that has never really been in the git world before but there's you know now we're look i'm looking at jj and at jujitsu and saying what can world before. But there's, you know, now we're looking, I'm looking at JJ and jujitsu and saying, what can we steal from this? There's interesting ideas here, right? That can make your workflow easier. Can we pull in some of those ideas? Can we look at all of the version control systems, whether it's Google Docs or, or, you know, Mercurial or Peugeot or whatever, and kind of say what works in these systems? What is interesting? What, what, you know,
Starting point is 00:26:43 what would make my job easier on a daily basis? And steal that and try to incorporate that and make it approachable and easy to use. So yeah, that's kind of that arc, right? So now I am back in the Git world giving talks. And it's interesting kind of what's happened to Git in the last eight years, right? There's lots of stuff. Microsoft's been investing heavily in Git. Windows, I think, they're using Git as the version control
Starting point is 00:27:06 system for Windows, right? These this massive monorepo with hundreds of millions of files and tens of gigabytes of data, like stuff that Git could never do the last time I really looked at it or the last time I wrote the second edition of the book. And so it's been really interesting to look at it and be like, what all changes have been made in the last decade? And there's, you know, it's funny, because like you said, you learn your seven commands, and then you never really move off of that. And then all of this, there's 10 years of work, they're still doing an average of like 10 commits a day on the
Starting point is 00:27:36 in the Git project, right? Like there's tons of work going into this. So it's like, let's look at, you know, it's interesting to look at what what has happened, right? And so that's that, yeah, I've been spending a lot of time on that lately. Sorry, I feel like a steamroller. No, no, no. I would love to dive right into the nitty gritty myself because I have downloaded Git Butler. I'm looking at it. And virtual branches, as you said, was kind of the thing at the forefront right now in terms of like what this thing does versus what other things may do. And I would love to hear what they are and why they're useful
Starting point is 00:28:05 and why this particular concept and tool is something that's going to help people, you think? Yeah, I mean, it was an interesting, like, I'll go back to the idea of this first principles thing, right? Like, I find this really, really interesting and valuable tool in doing startup, you know, in startups, right?
Starting point is 00:28:21 Is this idea of saying, what are we really trying to do here, right, with this feature or with this tool or whatever. And we looked at branches, I started working on sort of a branch management interface for our Git client. And we were trying to figure out, do we just do what everything else does, right? And started questioning, like, why are we like, there's a common problem where you're working on a feature and then you, you notice a bug, right. Or something comes up and really in Git, you can only be in one context at a time. So you have to stash what you're doing or do a work in progress commit or
Starting point is 00:28:54 whatever, right. And kind of save what you're doing and then create a new branch and switch to that and then fix the bug or whatever, push it up, try to get it integrated upstream, switch back to your other branch. You don't have that bug fix. So now if that's a blocker of some sort, now you have to kind of cherry pick it out or like, you know, there's not a great way of sort of solving this. And, and I was thinking that it's not necessarily, you don't need to do it that way, right? You only do it that way, because Git has the concept of head. So you're on one branch, right? There's no way of being on two branches or something. And it has this concept of an index, right? Which is sort of your next commit. But again, there's one of each of these, like you can't have multiple of these things, but technically
Starting point is 00:29:32 there's no reason not to, right? Like you can, you could, right? You could sort of, it's almost like patch staging and then bookmarking each one for a different branch. And so when you commit, it commits to that context or that context, right? And so that's really all that we're doing is we're running basically a get diff and we see every hunk and we're bookmarking each hunk for branch A or branch B or branch C or whatever. Like you can be on, you can have several of them that you're sort of bookmarking changes for. And that's kind of nice. It kind of ends up being actually similar to the way that a lot of people do integration work, right? Where they have multiple branches that they're going to want to push out, and they merge them all sort of into one working directory. And they test that out, right. And then they don't actually commit, like they don't push
Starting point is 00:30:13 that merge, that merge artifact somewhere, they just, they want to make sure that it all works when it's together, right. And ours is kind of the opposite, we're starting essentially with a merge product, and then extracting them out into branches, right, that we know will end up when you merge them together, it'll end up with what's in your working directory right now. But you start with, I'm just going to make all my changes. And then I'm going to say, these changes go in branch A and these changes go in branch B, and I'll push them up as separate reviewable branches, right? So instead of stack divs, it's kind of like parallel, you know, stack branches, it's like
Starting point is 00:30:42 parallel branches. So as long as, you know, the only constraint is that you can't have merge conflicts between branches, right? Because you only have one working directory. So mathematically, you can't really do that. But that's kind of nice too, right? Then you know, all your branches will merge cleanly because you started out with the merge product. So, but yeah, really what I was trying to do is just say, how do I want to work, right? It's not so much mathematically or heuristically, how do I get this done? It's more, what do I want the workflow to be like? And in my mind, what would be a really nice workflow in that previous example is to just
Starting point is 00:31:16 notice the bug, fix the bug, and then go to a GUI and just drag the hunk over into branch B and commit it and push it, right? And it's still sitting there and you can do more work on it. And you don't have to worry about sort of the workflow upstream from that. And you can just keep working on multiple things, right? Or fix lots of stuff and then just sort of organize them into the branches that you want, right? Rather than having to think about that beforehand. And there's all sorts of stuff that comes up from that, like having to name a branch when you create it, right? Like Mercurial has these sort of anonymous heads that you can do similar things. And I kind of wanted to steal that of saying, I don't want to have to name a branch.
Starting point is 00:31:52 I want to just sort of have it. This is one of the things that we do use AI for is look at the diffs and say, you know, if you allow us to, if you want us to use AI for your stuff, to say, give me a branch name, right? It'll be anonymous essentially until I get enough work and it can kind of recognize what I'm doing and then it give me a branch name, right? It'll be anonymous essentially until I get enough work and it can kind of recognize what I'm doing. And then it names the branch for me, right? Like there's all of these things that you just spend a little bit of time here and there and it's a little annoying, right? And you don't think about it, but there's a lot of it that isn't technically necessary. What's up, friends? I want to share an awesome new announcement from our friends over at Crab Nebula.
Starting point is 00:32:34 Crab Nebula is the official partner of Tauri. For the uninitiated, Tauri is a toolkit that helps developers make applications for the major desktop platforms using virtually any front-end framework in existence. The core is built with Rust, and the CLI leverages Node.js, making Towery a genuinely polyglot approach to creating and maintaining great apps. So building applications with Towery has always been an incredibly joyful experience. However, once the applications are built, distributing them and rolling out updates has always been cumbersome. This is why we are thrilled to be part of this announcement from our friends at Crab Nebula on their latest product, Crab Nebula Cloud.
Starting point is 00:33:15 The problem really is the cost of distributing applications, the security, and the feedback and analytics. Just thinking about cost alone to distribute new applications at scale, it can get very expensive when bundle sizes compound with the number of users, which further compounds with frequency of application updates. Always be shipping, right? A 500 meg application distributed across 500 users with nightly updates leads to a total of around 7.5 million megabytes. That's 7.5 terabytes transferred in a single month. Now, based on popular cloud pricing, this could easily lead to a bill in the ballpark of around $90,000. That's a lot of dollars. More so, distributing updates requires complex
Starting point is 00:33:59 cryptography to ensure that an update is the original safe artifact for users to download, install, and execute. And then collecting meaningful analytics is more challenging with desktop applications compared to web-based services, impacting the ability to make informed updates and improvements. So at the heart of Crab Nebula Cloud is a purpose-built CDN, ready for global scale, ensuring seamless integration with any CI-CD pipeline, and first-class support for GitHub Actions. And security updates are a first-class citizen. Leveraging the power of Towery Updater, Crab Nebula Cloud provides an out-of-the-box update server
Starting point is 00:34:35 that any application can call to check for signed updates, and if the update is available, immediately download and apply it in an instant over the air. And of course, Tauri is open source and Crab Nebula is a company born out of open source. And they're giving back to the open source community by giving steep discounts and subsidies to open source projects built with Tauri. To learn more, get started and check out the docs. Go to CrabNebula.dev slash cloud. That's crab, C-R-A-B, nebula, N-E-B-U-L-A dot dev slash cloud. Once again, crabnebula.dev slash cloud. I'm with you. Branch naming a lot of times feels like a chore,
Starting point is 00:35:32 especially when I'm just starting something. I'm like, I don't know what this branch should be named because I'm not really sure what I'm doing here besides fix-a-bug-that-somebody-sent-me. And then, yeah, absolutely. The ability to just take a particular change and apply it to multiple multiple branches at the same time like you said i'm working on a feature i also have a bug fix that's like a single commit and then i don't want to just like drop all this go over there do the thing do another branch get that upstream come back over here oh actually they'd be useful to have on this branch now i got got to cherry pick it. A lot of ceremony or chore kind of stuff
Starting point is 00:36:09 that I'm not smart enough to fix. I just kind of live with it as an everyday developer, but happy that you're thinking through these things deeply. Yeah, it's interesting. I mean, it's, you know, it's interesting to what I found most valuable, I think, is going out and doing these conferences. And, you know, we'll just rent out a bar and buy beers for people and then all the developers come out and just talk to them about what is your workflow? How do you want to work? What's frustrating? It's really interesting. People don't think about it that much.
Starting point is 00:36:37 They've only had one tool. They've only used Git and GitHub a lot of times. And so they don't question it or they don't really compare and contrast it to something else that could be available. So it's interesting to get a couple beers in them and start pulling out these threads of, you know, what is frustrating and what is difficult and what could be easier in the way that you work
Starting point is 00:36:57 in this manner that they haven't really questioned in a decade. So Git Butler right now is a desktop client. It calls itself a branch manager even. It's not even a full Git client, right? Like you're really focused on branches for now. There's lots of things we don't do. Yeah, yeah. And it's, you know, it's beta.
Starting point is 00:37:14 It can be slow on some repositories. Like we're working out bugs and stuff, but we kind of just went from alpha to beta a month ago or something like that. And so a lot of it has just kind of been firefighting and making sure it works everywhere, you know, perform it to a degree and trying to get a Windows build out and stuff like that. But, yeah, it doesn't do everything, right? There's lots of stuff it doesn't do. What it does do relatively well is this virtual branch thing. So, you know, I've been using it essentially as my only Git client for five months now.
Starting point is 00:37:50 But again, it works well for my workflow, and I don't need Git outside of that. Other people do. They have different workflows, and so we're kind of learning, okay, I do need this other type of tool. And again, it kind of separates. If you think about what Git does, it does lots of stuff. It does the sort of committing and pushing and things like that, and branch management, which our client does. But it also does a lot of archaeology stuff. You have blame and sort of log and all of this stuff, which we don't do as much. But again, you can just run Git commands. It's orthogonal. You can do different tools on these different things, as long as you're using the same database, right? And really, Git is kind of a database and a transport protocol. And we're leaning on that. But we're trying to rewrite a lot of the branch tooling. But there's, you know, there's like 145 commands in Git, right? So it's just like, what, what all are you using it for? And we're trying to kind of slice away hunks of
Starting point is 00:38:40 what people use it for, and try to to each time question, what are people really trying to do with this? And can we inject some taste and can we do something that core Git doesn't do in order to have a workflow that we think might be better, right? Or might be faster, might be easier. So to answer Adam's question from the original question was like, you know, what could the next big thing be? Well, it sounds like you could potentially replace Git with Git. You're still going to be probably under the hood conforming to Git as a database,
Starting point is 00:39:12 like you said, as a transport layer, but reimagining all the things that we do with version control for a new generation, for modern workflows, but not necessarily start completely from first principles and invent a version control system.
Starting point is 00:39:27 Because first principles is too hard to compute with GitHub, and Git and GitHub is too hard. It's just... Well, it's also, you know, it's about how much better can you improve something, right? Can you make it twice as good
Starting point is 00:39:38 or 10 times as good or something like that, right? It's very hard to get 10 times better than GitHub for lots of stuff. I think it's doable to get 10 times better than the Git command line for stuff. And so it really depends on what it is that you're trying to do. I think it's very... So the things that we hear the most,
Starting point is 00:39:54 that I'm most interested in trying to rethink or come up with new ways of approaching problem sets is branching is one of them. I think that there's lots of different interesting ways that I've seen in other tools and sort of in the way that we're approaching stuff from what Core Git does that I think managing branches and commits and commit messages and that sort of workflow,
Starting point is 00:40:15 I think there's lots of improvements that can be made and continue to be made there. The other thing is merge conflict resolution, I think is something that everybody's hated forever and nobody's made better. GitHub's barely approached this at all, right? So, so there's really a huge gap in tooling for dealing with merge conflicts and merge conflict resolution in teams. And there's just nothing out there, right? There's nothing that makes this particularly easy. And so that's something that we really want, like, I mean, even the most basic thing,
Starting point is 00:40:44 right? Like, you don't know if your branch that you have a PR open on and your colleagues branch that they have a PR open on merge cleanly or not, right? Like GitHub could very easily just do in memory mergers of every open PR and say, this one's, you know, problematic with this one. You might want to start talking to them, but they don't do that. And so I'd like to see that, like, I'd like to see, you know, if you don't have to do a commit and push it somewhere, if you're just kind of streaming your changes to some central server, and that server is testing everybody's branches against each other and trying to tell you early, this is going to be a problem, you get some of the advantages that you had in centralized version control systems,
Starting point is 00:41:20 you know, two decades ago of saying, hey, you know, we don't have to be so bad as to lock a file, but we can at least let you know, you're editing that file, they're editing that file. Like, why wait three days for one of the PRs to merge and then tell the other one that now you have 100% of the work in resolving this conflict, right? Like it's always first person wins. Right. In Git, in decentralized merge conflicts. So I think there's a lot of work to be done there. It'd be really not like, how nice would it be to have that and to have some tooling where you could collaborate on merge conflicts, right?
Starting point is 00:41:50 Or have like the, so like Git has this concept of re-re-re, the reuse recorded resolutions. But if you have these resolutions that you can share and kind of network and talk about, right, and say, how about if we resolved it this way and kind of agreed on what the resolution would be before either branch merged? And then it doesn't matter what order you merge the branches because you already have the resolution you've already collaborated on and agreed on the resolution, right? If you can't avoid the conflict. I think that would be a more ideal world, right?
Starting point is 00:42:17 So the question is, how do we make tooling that makes that good, makes it easier? I think AI actually has a good application here as well of, of theoretically, you could train a model that could be relatively good at merge conflict resolution, at least on smaller scales, because, you know, GitHub is a database of hundreds of millions of merges, right? Like so much data. And you can, you can take the parents and do an in memory merge and say, yeah, this was a conflict, and you have the resolution for it, right? So you have this massive database of millions and millions of attempted merges that resulted in conflicts
Starting point is 00:42:49 and how they were resolved, right? And so I think that type of thing could be amazing. That's actually what I'm most interested in from an AI application standpoint and version control is trying to help with this. But there's also just tooling that helps, you know, just general tooling that UI that can help two people collaborate earlier in the process to sort of iteratively solve a conflict.
Starting point is 00:43:11 What is this in memory thing you keep saying? You've said it twice, maybe can be done entirely in memory. So you can do it and then see, hey, was there a conflict or not, right? Historically, with the older three-way merge engines that Git had, you had to have a working directory. So this is something that GitHub had to deal with a long time ago is we had to create a working directory in order to do the merge and then see if there was a merge conflict, which is a lot of, you know, you have to create space on disk and run it and then clean it up or
Starting point is 00:43:48 whatever, right? There's a new merge strategy called ORT, which was, I think was released a couple of years ago. And the entire point is that you can do it without a working directory or an index. You can just do it in memory and have an in-memory index that says, hey, are there conflicted entries in this? And if so, what are they? And so you can do this with LibGit2 and stuff now, which is super nice, right? I can just have 100 branches and do cross-product merges relatively quickly of all of them and say, which of these have issues with other ones? And that was something that was very, very difficult to do until a few years ago. So we treat it like it's expensive, but it's actually quite cheap to do now of just saying, do these branches conflict? And if so, how? And we have essentially no tooling to take advantage of that, of saying, let's just do this all the time with every commit to every branch, right? And tell you what his name, Bonnie Chance. He's the creator and inventor of SQLite.
Starting point is 00:44:46 Oh, yeah. But he also created Fossil, which I didn't hear you mention in terms of an SEM. And Jared and I had a pleasure talking to him back. It's been a couple years now, Jared. It's almost time for Richard Hipp to return again. It is. the title potentially for that show if we do it but fossil had this same idea where every change i'm not sure if it's streamed and you can probably correct me jerry because you probably paid attention closer to the the inner workings but it streamed changes back to the server to some degree where you never had to commit it was always just there on every on every machine you know where you didn't have to do this ceremony and stuff like that have you heard of fossil before are you familiar with it does it ring a bell? I have, yeah. I've used Fossil a decade ago
Starting point is 00:45:28 probably. It's been around for a long time. I haven't used it recently, so I don't know what the tooling or what the workflow looks like. I don't remember it as being so massively different from the way I feel like the workflow of Mercurial or Jiu-Jitsu or Darks or Bejewel is quite different from Git in some very key ways. I don't remember Fossil being that different, but again, I haven't used it in a long time. Well, line six, when it says what it is on line six, well, it has a list of eight. What is it? That was the question.
Starting point is 00:45:59 And there's eight things that it is. And the number six is auto sync and it says fossil supports auto sync mode which help keep helps keep projects moving forward by reducing the amount of needless forking emerging this is what we're talking about often associated with distributed projects and so like this needless forking emerging and branching and and you know is there a conflict it really is the ultimate question right once you Once you decide to merge and resolve the code back to production or production worthy, is the golden nugget to fix, right? Yeah, I mean, there's always, I'm curious how they do it.
Starting point is 00:46:34 I wish I could speak a little bit more intelligently on this particular tool, but there's always this issue of what strengths and weaknesses are you choosing between a centralized version control system and a decentralized version control system, right? So there's obviously a lot of things we've all moved to decentralized version control. That was the whole thing in, you know, 2005, 2006, seven, eight, is sort of this rise of decentralized version control systems. But with it, I think, comes more by default, by definition, almost more forking, right. And more merge conflict problems, right. Because, because you can keep things sort of separated from each other. That that's how the systems are designed, right. To, to have some advantages, but the disadvantages are they're
Starting point is 00:47:16 not in sync all the time. Like you can't have merge conflicts with Google docs, right. It's a perfect separate thing to compare it to comparison, right? Is you can't have everybody's, it's always people are editing the same file simultaneously, which makes it really difficult to go off on a tangent and test something out and see if it works, right? And yes, the power of that is that you can experiment in a way that is completely freeing, right? And you can say, don't need to worry about what trunk is or whatever, if this is mergeable or anything, I can do my experiment,
Starting point is 00:47:51 I can test it out, I can see if it works. I might have merge conflicts later, because lots of people can do this, right? But it allows you to do that. Google Docs, you can't have merge conflicts, right? Which is, you could mark that up as a win. But on the other hand, it's very difficult to experiment, right? To sort of fork it and do something different and say, what if it was like this, right? And so I find that very, very interesting. Like, what is a good combination of these things where you can go more down one route or another route, depending on kind of what your needs are, what the feature is, what the project is you're trying to do. And I don't think there's a great answer, right? I think everybody kind of has the ways that they like to work or whatever. But anytime you go more towards one, you go more away from the other, right? You always have this sort of balance of strengths and weaknesses with decentralized versus centralized sort of concepts. And you got here because you looked at the angel funded companies that you invested in and said, this is the one I would like to run. And you think this is a super interesting problem. I do.
Starting point is 00:48:48 Obviously. I mean, you nerd out hardcore on it, I can tell. I do. I love it. Actually, it was funny. I've helped invest in probably 30 companies or something through this angel, and maybe more personally, but through this angel thing called Scene that's based out of Berlin that my partner and I run. And, and of all of them, I think I was the most annoying investor
Starting point is 00:49:09 to these guys. Right. Because as soon as I heard it, I was like, I want this. It's, I don't even know if I want to use this. I just like the idea of questioning this. Right. And I found that so interesting. And I, I wrote up these long, long emails, these long paper docs and sent them. And I was like, here's all my ideas around this. Right. And here's all of, here's, here's my treaties on, on, you know, sort of versioning data, right. And versioning information. Did they ever just give you your money back? They're like, all right, Scott, we've heard enough. Thank you. Yeah. Well, I know. So he, he ended up, uh, sort of shuttering that because he had to pivot it to something else and was starting to gain traction.
Starting point is 00:49:46 But I approached him and I was like, I really want to do this. And you had pivoted away from this. Right. And so do you want to join me? Right. And we can sort of co-found a new company together and work on on this from the slightly different angle. Or can I take it? Right. Because I don't want to be the investor that then like comes in and then starts a company that, you know, competes company that competes with something they might want to go back to or something like that. And so he ended up folding that company and returning capital. So I actually did get half my money back or whatever from the initial
Starting point is 00:50:16 investment. And then we started another company. Maybe they pivoted because they didn't spend your money properly. I mean, gosh. You got half to give back. Okay, I'm just speculating. I'm not talking to Boo. I'm just... It's actually very, it's very interesting because he had started this company and he knew what it looked like to start a company in the version control space, right? And then we did it again with a slightly different angle. And we've seen how different our community is, how different the adoption of the tool is, and it's working much better than the original one, right? And it's hard to always kind of figure out exactly why that is, but it's definitely exciting, I think.
Starting point is 00:50:53 He had this idea. He wanted to do something new in this space. And now we're doing something new in the space that people are using and people are adopting. And it's very energizing, right? It's very fun to try to reimagine the future and then be able to do it piece by piece and use it yourself energizing, right? It's very fun to try to reimagine the future and then be able to do it piece by piece and use it yourself every day, right? Like it's another fun thing of having a startup
Starting point is 00:51:12 where you work on a tool you use every day and you dog food it every day, right? And so having built a new version control system that I'm, or client that I'm doing all my version control stuff with on a daily basis and being like, yes, this is, it would suck to not have this tool anymore, right? Which is kind of what you want the benchmark to be of a tool that you're building.
Starting point is 00:51:34 Did you found this, I guess, then by yourself again? Or did you, like, what's the formation? Do you have a we, keep saying we, who's involved in GitButler? Is it you solo? What's the scenario? Yeah, so it's Kirill, the guy who had started Sturdy that joined me as a co-founder. And then my partner, Anne, who is the COO of Chatterbug as well. So the three of us co-founded GitButler. And then we've hired another five people or something since then.
Starting point is 00:52:10 We raised some money last summer. So, so it's, it's this, this, it's in the fun startup phase, right. Of, of, uh, trying to find product market fit and seeing it catch here and there and figure out, okay, what's the next step? What's the next big thing? Like, you know, what's the team look like, right. That, that we want to have for the next 10 years, if things go well, right. Like early employees are so important. And so, yeah, it's, it's a, it's a very energizing, fun time of, of a startup life. And, and, you know, I'm not quite too old for it yet. So I figure, I feel like I have at least one or two more of these, you know, to go if needs be, but, but, you know, if we're, if we're reminiscing about, about what, what I was doing in the same exact space two decades ago it's actually funny if you go back to podcast 49 i was actually on the page of your previous appearance scott changelog.com
Starting point is 00:52:53 slash podcast slash 49 and just there's first of all our show notes back then were spectacular compared to today so that's uh maybe an evidence of how much of a hobby and a passion project it was at the time because somebody put a lot of work into these show notes but at the very bottom actually there's an animated gif of you i believe on the show talking to a microphone and then it looks like somebody punches you in the face or you get hit by a i don't know by a mouse or something but anyways you look a lot younger no no offense i mean it was literally 13 14 years ago i was thinking about young scott Chacon as you were talking because I was looking at this picture of you on the show last time.
Starting point is 00:53:29 I was like, man, he was just a young buck. As a baby. But I didn't hear you still have energy left. Curious about centralization, decentralization, not in version controls, but in product creation. I mean, you mentioned earlier how well-positioned GitHub is decentralization, not in version controls, but in product creation. I mean, you mentioned earlier how well positioned GitHub is in particular ways of reinventing things because of the data, the access, all the things they have. And I'm wondering, here you are trying to somewhat reinvent Git via a Git client and
Starting point is 00:53:59 imagining the workflows again. And I wonder, you're very much decentralized now as this little startup unit on their own doing things. Have you thought maybe it would be better at GitHub to do something like this, like inside of a centralized, you know, Borg to like actually invent it or go back to GitHub and build it inside there? Did that cross your mind or that's just too much?
Starting point is 00:54:21 I mean, it's hard to, GitHub, anytime that you're really big, right? It's hard to, it's hard to steer a rocket ship as opposed to a skiff or something, right? Like, like I think we're any small startup has an advantage in trying to figure out what the next big thing is because we can iterate and we can experiment much, much faster. And we knew that at GitHub as well, right? Like when GitHub was small and we were essentially competing against, you know, Google Code or SourceForge or, you know, kind of whatever was on the horizon at the time, it was much easier for us to make changes.
Starting point is 00:54:57 It was much easier for us to talk to our customers and to develop a community and to figure out what people wanted and to just be able to invent out of thin air things that didn't exist before and say, we think that this is better, right? And try to figure out if that's better. I think it's very hard to do when you're large and, you know, GitHub's large now. And I think they still do a fantastic job, right? And I still use it every day. I still pay, I've paid for it, you know, for 20 years now. I paid for it when I was there. I thought you'd have like GitHub for life for free, you know? No, no. Well, we made everybody pay for it. I think we even made all of our employees pay for it at the
Starting point is 00:55:27 time to make sure that the, you know, that the payment process worked well, right? We kind of wanted to dog food everything about it. Good excuse. Yeah, good reason. Right. So, yeah, I mean, I think we have advantages in some areas of saying, if GitHub tried to do a client now, right, and try to do the sort of corresponding server protocols that would go along with that, I think it'd be really difficult.
Starting point is 00:55:54 It'd be difficult because they have all of this legacy stuff to also keep running. And they have every workflow in the world, right? It's like people are trying to do through GitHub, and they have to keep them all happy. And I think that's very difficult to come in and world, right? It's like people are trying to do through GitHub and they have to keep them all happy. And I think that's very difficult to come in and say, I have a very specific taste and a very specific workflow that I think is better and I kind of want to see who adopts
Starting point is 00:56:15 and if that gives them an advantage. And so I prefer, I think, to do it as a small company and to try to reinvent everything this way. And if we end up competing or we end up, you know, worst case scenario is, you know, you get acquired or something, right? And then you're part of a big rocket ship that's been going longer. I was going to say, like, would you get acquired by GitHub? I mean, I honestly don't.
Starting point is 00:56:39 If we came up, this is the challenge, right? You have to come up with something that gets product market fit and becomes a little bit threatening, right? You have to come up with something that gets product market fit and becomes a little bit threatening, right? You know, the other thing that, because there are some things I do want to compete with GitHub in to some degree, if only to say, you know, there's an innovation to be had in the space still. at the beginning of this is this idea of a PR being this sort of unified diff that you just keep adding to. And you can't really review per commit. And there is innovation in the space that I think is not super well done, honestly. There's Graphite, or there's Fabricator, or there's more of these stack branch type things that try to use GitHub as a backend. And I feel like starting over and saying, what could this review process be like? Like, how could I share my work with you?
Starting point is 00:57:29 Like, start from first principles. Like, how do you want to review code? I find that very interesting. And I'd like to get into that space to a degree and explore, right? Like, can we come up with a thing that's 10 times better than the way that GitHub's been doing pull requests
Starting point is 00:57:43 since, you know, honestly, since I helped write it, right? Like, like I was not involved, not, not involved. Like anything that I, that I say bad about GitHub, I'm partially responsible for. So it's hard for me to, yeah, to run it too much. But, um, how much code do you think you still got going there? How much code do you have yours? yours you know lines of code still acts still running when i hit oh i hope i hope nothing uh not much then you can wash your hands of it okay well not my code yeah no i i you know hopefully i mean there's certainly influences of of things that i work like just i i think just was entirely my project so anything that's that's there might be some code still running on just and i still and just has gone largely untouched for years. I mean, it probably still is your code. It could
Starting point is 00:58:27 likely be. And I still use it, right? It's still great. I actually still really like it. Or the Blame stuff. I think the Blame stuff probably still has some of my code in it because I remember doing that and it hasn't changed. And I don't think a lot of people use it. I actually use it a lot still because it's a nice way of kind of being able to step back
Starting point is 00:58:44 from like this okay what was it previous to this version right and kind of step through it it's it's a very nice user interface for that but it's hard to do in vs code um through any of the plugins so right um yeah i mean there's yeah there's stuff but i i have to imagine that they've ripped most of my crap out right so you mentioned server-side stuff that like if you were at github there would be server-side things involved in any sort of client-side experimentation so what what's the git butler server because i imagined that you're building entirely on top of git and it sounds like you do have some git butler specific server things going on or what yeah so i like I said, separating out the various functions of what you
Starting point is 00:59:25 use a commit for, I think is, is important. And so what I really like is more of a streamed sort of backup, right? Where it's, it's like anytime that, that code changes on disk, have the ability to push it some, to back it up somewhere in a way that doesn't require you to create a commit, because then you can do pre-commit review, right? Like, and I think that's, that's whether the review tools are better, what could be very useful is to just say, okay, I'm at a point, I haven't even made a commit, but I want somebody to look at this code and tell me am I in the right direction or not, right? Without having to kind of reroll commits. And so, like, I think just the ability to put your data somewhere that has a URL, without having to create a commit in order to create that URL is highly valuable to begin with. So that's, that's a very sort of low hanging fruit type
Starting point is 01:00:09 thing that we've been, that I've been experimenting with, but we don't have exposed in the client right now. But yeah, there's, there's so many, some of these things we even talked about at GitHub when I was there, right. And just, it just is too difficult to kind of, to kind of implement or it's too niche or whatever. And so I'm looking forward to, we've been brainstorming for a while, but I'm looking forward to implementing these things kind of one at a time and saying, what's interesting?
Starting point is 01:00:34 What do people find interesting? What do people find valuable? I think your approach is quite wise because like you had said before, if GitHub did a different client, I think they have an app. I'm not sure if you'd call that a client necessarily. But the GitHub way is the way for so many developers.
Starting point is 01:00:50 And so for them to innovate, they have to innovate at a large scale to some degree. Or start a Skunkworks project that is kind of like you in a way. And what you're trying to do is really, it seems like at least, create this thing that sits above Git, that writes down to Git, that has the option to do unique things, like you said, with a URL. And I don't want to commit this code. I don't want to do a PR necessarily, but can I get code review? Can I get feedback? Can I get a loop of some sort, a human being, an AI version of something, or a junior or a senior dev step in with me, just me a a feedback on what i'm writing here is it the right direction it's quite wise because you take you said you want to compete and i like the way you clarify with i want to i see areas of innovation
Starting point is 01:01:36 essentially and i think that's an interesting way to look at competition is like naturally if you are making something new innovating you, you're competing, but you've reframed it in the fact that it's not just like, oh, I want to like battle it out, but more like I see an opportunity to advance the opportunity here and innovate basically. So I think what you're doing is pretty wise, but they can't do that because their way, the GitHub way is so big, whereas the GitButler way naturally is very small until you gain critical mass. Yeah, everything that GitHub or Google or Microsoft or whoever does, they have to do at scale out of the gate, right?
Starting point is 01:02:13 And that's really hard. And, you know, there's also a thing of, it's hard to do stuff in larger corporations, right? Like, it's hard to have freedom. It's hard to have people be like, you know what, try it, right? Like, it's not really, I think the Microsoft, well, I've never actually worked for Microsoft, but I have to assume that things are a little bit more difficult to, you know, get through or there's some politics, there's some stuff like that's always like that, right? If you get, you know, if you're lucky enough to be successful, then, you know, you
Starting point is 01:02:39 have to do stuff at scale and it becomes difficult, right? But on the other hand, you have the resources. So there's resources they have that we wouldn't have. All of these companies can do AI type stuff that we really don't have the resources for, right? So we have to be fairly certain that we want to invest in something before we invest in it at that type of scale or if it takes cash, right?
Starting point is 01:02:58 But if it's just, let's try out some code, like it's easy to write code, right? If it's small scale and see if it works what's up friends this episode is brought to you by Coda. Coda brings teams and tools together for a more organized workday. It's your all-in-one collaborative workspace. They bring together the best documents, spreadsheets, and apps into one single platform. And best of all, Coda helps you stop playing ping pong between different tabs and tools. You centralize all of your processes and shared knowledge. And now is the perfect time to get started with Coda, especially its extensive planning capabilities.
Starting point is 01:03:49 With Coda, you can stay aligned by managing your plan cycles in one location, set and measure OKRs with full visibility across teams, communicate and collaborate on documents, roadmaps, and you name it, instantly. You can access hundreds of templates and get inspired by others in Coda's gallery. So if you want a platform that empowers your team to collaborate effectively and focus on shared goals, you can get started with Coda today for free. Head over to coda.io slash changelog. Again, that's coda.io slash changelog, C-O-D-A dot I-O slash changelog.-o-d-a dot io slash changelog and you can get started for free
Starting point is 01:04:27 is there a an opportunity given your history with github being a co-founder, exiting, no longer part of it, to create a linear partnership of sorts to say, hey, I'm one of the founders of this thing from back in the day. Sure, I'm not involved anymore, but I've got a big idea that y'all probably can't do. Here's my pitch. Would you give me access to not so much resources,
Starting point is 01:05:00 maybe just like data? I don't know. Yeah, I mean, I think it probably would. I have good relationships with everybody there that I knew that still works there. I think the question is, you know, how would it be valuable, right? Like, like I think with any, anything like this, you have to say, how would it be valuable for them to partner with us? If there was something that we were doing, how would it be valuable for us to partner with them? I mean, you know, one of the things that we're really trying to do is, is to make
Starting point is 01:05:24 our client at some point, somewhat server agnostic, right? That we could work with GitLab or we could work with Bitbucket or whatever people use or like internal, you know, sort of deployments. And so, you know, the question is, do we want to have a partnership with one?
Starting point is 01:05:39 Like, do we want to tie ourselves to GitHub or something like that? Obviously there's advantages to the gorilla, right? But how, you know, does that really help either of us as opposed to just working independently and learning from look seeing what each other is doing and you know stealing stuff from time to time right like i'd be tickled if github thought that something that this little tiny company was doing was was good enough that they they felt it was worthy of stealing, right? How much do you pay attention to Zed, the editor? I love Zed. I actually, I
Starting point is 01:06:10 just, you know, this is a whole other thing down the sort of open source route, but Zed and Gipbler made their source available, I should say. We use the functional source license. Yeah, I know. So we're not OSI approved, right? But we have our source code available, and it's on GitHub. And we have a community that's sort of built around that
Starting point is 01:06:28 and said the same thing, but they did use OSI licenses. And I need to use Vim mode, right? Like I'm so sort of in my way now, I just can't edit without Vim mode. And they have one Vim mode, but it had a thing that I use every day, right? At least once an hour, there's a replace mode that I use. They didn't have implemented. And so I actually, since they're open source, I've been wanting this forever. I've been complaining about it for a year now, trying to use Zed on a daily basis. And they open sourced it. And so I was able to do a bug bounty where I was like, I will give anybody $500 to fix this problem for me, right? Because I want to try to use it and I can't. It's impossible for me.
Starting point is 01:07:06 And somebody took it and they fixed it. And, you know, I paid him 500 bucks. And I was like, this is great. Like, it'd be interesting, I think, to have open source be a little bit more this route, right? Where individuals or more likely companies can say, I'm depending on this. I want to support it. I can do bounties.
Starting point is 01:07:22 I can do, you know, like we actually, Gibbother is a sponsor of Tori because we depend on Tori and we want work to go into Tori. And so we're paying them like, I don't know, 6K a year or something. Just not to get anything. Actually, they didn't even know we were doing that. We ended up kind of becoming friends with some of the Tori guys. And later on, they found that we were
Starting point is 01:07:40 doing that. But just to be, like, I want, I feel like open source needs to find a little bit of a different model of sustainability. I mean, even the what was the X, X, Z, X, Z, like the X, Z problem, right? Like, there's so many volunteers that are working on these incredibly important puzzle pieces of the systems that all of us build everything off of every day. And they're all burnout, right? Like, it's just such a hard hard job and GitHub's made it better and made it worse, right? Like it's made it better in kind of expanding this world
Starting point is 01:08:09 and it's made it worse into expanding it into people that are kind of dicks about it and come in and are mean to you or are demanding changes, right? And you have to deal with this expanded community that aren't all hobbyists, right? And in their basement being nice, right? You know, I came out of the Ruby community.
Starting point is 01:08:28 It was very friendly and very easy to get into and stuff. Man, if you have a big popular open source project, you get some trolls, right? And I think it burns out some people. And that's vectors for problems like this. And I think it'd be really nice to figure out a way to really support the community more, to have more code open source. This is kind of why we decided to go with the FSL is licenses like this, like the functional source license or like business source licenses, I think help maybe bridge that gap a little bit of being like you have a lot of the niceties of sort of open of a project being open source or an app being open source, but some protection as well. So, you know,
Starting point is 01:09:07 we can make sure that we can thrive and make a living off of this. So what does the FSL, the functional source license, what does that provide you that for instance, the GPL would not provide? So it's essentially just a non-compete, right? So for example, you know, we're talking about GitHub again Again, I don't think GitHub really cares about us, but, like, if they wanted to take it and be like, okay, well, this is, instead of GitButler, we're
Starting point is 01:09:31 forking it, and now this is the GitHub client, right? And we'll put a bunch of resources on it, and we'll just take it from you and, you know, change your server backend out with ours or something like that. Like, our license specifically prohibits that, but essentially nothing else, right? Like it's, it's really just, you can't take this and compete with us on a monetary basis. So, you know, it helps with like, I think like Redis just kind
Starting point is 01:09:53 of switched licenses as well to something similar that tries to avoid this, this thing of Amazon coming in and just hosting their, their stuff. Right. And, and so that they can compete. So again, like what, what we didn't want to do is do this rug pull of saying, okay, it's open source. Now it's not right from this version forward, which I think the community really hates. So we started a little bit more conservatively of being like, we could switch it to, you know, Apache or something at some point if we wanted to do that. Maybe we will, who knows.
Starting point is 01:10:21 But it's nice to start out with this and see what the community is like and see what adoption is like, and then decide, okay, do we want to become more sort of liberal with this? Or do we want to keep it under this thing where we can control it a little bit, right? But still let people have access to the source code and contribute to it if they want to and stuff like that. Like Zed is a perfect example. It could be under this license and I don't care. I'd still pay somebody to fix this bug for me, right? Because I want to use it, right? Like I find value in most of it. I'd like to even pay them to, you know, improve it in ways that I want to see. And I think if we can find better or more broad ways of people making money in open source, it's better for the entire community, for the open source community, but also for the corporate community that uses open source, which is
Starting point is 01:11:03 essentially every corporation on the planet now, right? Does it bother you that you can't call it open source then? Like, do you like that or dislike that? I don't particularly care. I think people that are, you know, OSI heads, right, that really care about sort of, you know, like it's people who know who Stallman and, and, you know, like the, who know sort of the figures in this or know what, you know, the history of GNU Linux or something
Starting point is 01:11:30 like that. Right. Those guys really care, right? Like it's, it's kind of, there's this small percentage that really, really care and get real mad. There's the vast majority, I think of, of people who use GitHub that don't know the difference, that don't know what the definition is, right? That don't know free software versus open source software, for example, right? But really just think of it as source available to it. Or really think of it as it's on GitHub as a public repo, right? That there needs to be sort of a definition for that. Because honestly, the license makes a big difference.
Starting point is 01:12:03 And the OSI approved licenses don't differentiate in the way that people think, right? So it can be open source, it can be under an OSI license, but it makes a huge difference if it's GPL or if it's MIT, right? So you still have to look at the license and see what the license terms are. And so I find that kind of a useless definition of like a border of a definition of saying this is an open source project, right? I still need to care what license it is under like which osi license it is right and they're not even all compatible with each other like so i think it's very confusing and
Starting point is 01:12:33 osi people think it's very clear right like they i i didn't even really i think i used open source one time usually i said i'm we're opening the the source code or something right um and they don't want me to use open either. And so, you know, like this particular community cares very much about the terminology, but all I care about is practicality, right? Like practically, I want people to know that the source code is available.
Starting point is 01:12:57 And you can use source available, but that sounds to people that don't know what the open source definition is. I think they're like, why don't they call it open source? Like there's some other string that I don't know what the open source definition is, I think they're like, why don't they call it open source? Like, is there some other string that I don't see attached, right? I don't know about that. You're talking to two folks that really care about it, too. We're not quite the level of Stallman and whatnot that you think that we are, but we definitely are people who guard that line, I suppose, is probably the way to say it.
Starting point is 01:13:20 And it's not even like you're right or you're wrong or right and we're wrong and you're right. It's just more like there has to be a definition of what open source is. And OSI has been the ones who have guarded that definition for all the reasons that open source has benefited. Right. And so you have to have a quote around that. You have to have quotes around that. It is in quotes open source because open source has a meaning. What I'd like is to have a phrase that means source available that doesn't have what I think people find a negative connotation, right? Like GitHub public
Starting point is 01:13:54 or something, right? We get a public, I guess, like that's, that's really what I want, right? Like, like be aware, like, you know, there's, there's, is it beer where is it, you know, is it FSL? Is it OSI? Like, I have to care about the license, but that's kind of a separate step. One is, can I get access to the source code at all? Right? Like, easily. I think source available does that job pretty good, way that you do if you know what the open source definition is, right? So if you don't know what the open source definition is, and you think open source essentially equates to public on GitHub, then if somebody says we've made the source code available, then what it sounds like, at least to me, to people that I've talked to, is that it sounds like you're throwing it over the wall, right? Which is a little bit different.
Starting point is 01:14:44 So it's like saying we're going to do a tar it over the wall, right? Which is a little bit different. So it's, it's, it's like saying, we're going to do a tar ball dump every month, right? So the source code is available, not, not we'll take pull requests. We'll be an active member of the community. We'll work with you to incorporate features like, yes, the license, license is generally permissive and most people don't need to care, right? If you're not, especially in our case with the FSL thing, if you're not competing against that with almost nobody,
Starting point is 01:15:06 actually, even for apps or for almost any application, there's almost never somebody that's competing with you, right? Like it's really just for things like server, like things that you might, that Amazon might take, right? Like things like Redis, things like open search, right? Right, which is why I was kind of interested because you're a desktop app. So it seems like it would be less of a concern for you.
Starting point is 01:15:24 It is less of it. Like I honestly, we were really on the fence. Do we just AGPL this, which is what most of these companies do, right? Or do we do this other thing? And we just wanted to reserve some options. But, you know, in the end, our community is exactly the same. Like nobody's really cared about it. We've gotten tons and tons of pull requests. People just want to be able to fix their tool. If they want to adopt this as a tool, they want to look at source code for, for, you know, security problems or whatever, right? Which we've, there have been some, some things that have come out of that, that have been really nice for us and really nice for our users. And they don't really care that, that it's, you know, freezing speech, right? Like that,
Starting point is 01:16:02 that's not what's important to them. To most of the. It is important to some people, I understand. Sorry, I really do want to debate this a little bit. I don't really care in the end. All I want is for it to be clear to our users what it's going to be like to interact with our community. Or how us as a company think about this product. Or think about this project. right? Or think about this project. And we really do approach it like it was AGPL or something, right? Of just being like, we're going to give it a license that we think is going to be hard to compete with us.
Starting point is 01:16:34 But if you're not interested in competing with us, which almost nobody is, it's essentially the same community that an open source community would be, right? And that definition doesn't really exist in the vernacular. And the problem is that most people think that open source is not strictly defined, right? Like I know it, you know it, right? Like, like there are people that do and do, and I know the value of it, especially historically, but also what's interesting, I think historically is that the landscape has changed so much from, you know, the seventies, right. When, or I guess, I guess technically this was probably defined in the eighties, right? Like I forget exactly what the, well, so there's two, the free and Libra.
Starting point is 01:17:13 And so, so the, the FOSS thing, right. So like the, the Stallman style open free as in freedom that was in the eighties and then open source definition, which was a second group of people, was 90s. And so even though those two groups don't agree on the point, they have different views of the world, but they are compatible views, I guess. really interesting is this new wave of sort of commercial open source, right? So there's a lot of companies like ours where we grew up in an open source world. We depend on open source for everything. We build everything on open source. There's all of our library, like GitHub,
Starting point is 01:17:53 GitHub is a fantastic example of this, right? Like GitHub is not open source. The core, right? They've opened. So we've open sourced hundreds of libraries, everything that we built that was somewhat generic,
Starting point is 01:18:03 right? Like Libgit2 or, or, you know, MySQL2 or like all these Ruby libraries or, you know, whatever, all of these utilities and things, they're all open source. They're all MIT, right? The only thing that wasn't is core GitHub. And I'm fascinated if something like the FSL had existed at the time, if we, if GitHub would be open source, right, under this type of license, where you couldn't sort of host it and compete with us, right? But like, you'd have all of the benefits of having an open source project. We debated this a lot internally at the time,
Starting point is 01:18:33 should we open source core GitHub, right? And in the end, we felt like it wasn't worth the risk. And it wasn't worth sort of, you know, the community management once we got large enough to say, no, we don't want that feature and that feature and that feature. But if we'd done it early, I think it could have been much closer to kind of how Sentry does it, which I find much more interesting. And they're the ones that are kind of innovating in this space saying we need different options. There's lots of companies like us that need different options. And, you know, at the time that GitHub was coming out, and there weren't really a lot of, oh, we're going to be an open source sort of core company, right? And give us investment money, right?
Starting point is 01:19:06 And we'll just ignore the risk of kind of competition and people taking this. So I think there just needs to be another way, right? There should be Free Libra. I actually think there shouldn't be any closed source. It'd be a fantastic world to just be like, you know, what license is it under? But basically, every piece of software that you use, you can inspect the source code. It just, it just, you have limitations on what you can do with that, right? Right. I think you and I agree on this point, Scott. I would much rather have Sentry and
Starting point is 01:19:37 GitButler and GitHub.com open as in functional source licensed then closed. I think you and I are both 100% there. I do think that we need a third term for that style, which is open but with restrictions on use. And I think that maybe functional source is, I don't understand how source available sounds like throwing over the fence, and you're not that. And so there's definitely, I understand that push and pull. But I do think that words need to have meanings, and open source has a very strong definition,
Starting point is 01:20:13 which has existed for a long time. And we can't simply redefine that term, even though we want to, because there's so much goodwill alongside it. But I think we need to educate and advance a new term or a new way of talking about projects which aren't under the open source definition, but share these properties with open source projects that are, for too many of us, the things that really matter. Yeah, no, I had a long, interesting fight with people online about this. And mainly my thing is, I don't care what it's called. I just want to be clear
Starting point is 01:20:47 in what we're offering and what the community can expect. And there isn't a good phrase for that. And in a problematic sense, I think there is, I would argue, a majority of the software development community, largely because of GitHub not really emphasizing license, right? Of just emphasizing availability, that people conflate public on GitHub with open source, right? Because they don't know the history or they don't know why it's called that or they don't know what the definition is
Starting point is 01:21:16 or, you know, 10 bullet points of OSI definition or whatever, right? Like, it's a complex thing to understand. And most people just don't spend that kind of time or whatever. And so I think that conflation is problematic, right? Like, like, it's not, it's complex thing to understand. And most people just don't spend that kind of time or, or, or whatever. And so I think that conflation is problematic, right? So if we come up with something else, then, then people are like, well, how is that different than, than what my understanding of open sources, even though there is obviously a long sort of held definition of, of anyways, whatever it's, I don't really care. And it turns out, it turns out at the end of the day no like our community doesn't care either most of them probably think it's under an open
Starting point is 01:21:49 source license because you know they don't really look at it and it's just the one time i use the phrase open source that i people who yelled at me and i've you know i don't use it after that um actually what's interesting is i realized i've been callingGit open source for a very long time now. So it's very interesting, right? Because it's under a Creative Commons license, but it's a Creative Commons non-commercial, right? And so by the OSI definition, you can't have a non-commercial writer in an open source license. And so technically, it's not open source. And I've been trying to now change to not, to not call pro get open source.
Starting point is 01:22:26 Right. Because if it's under a creative commons license, it's not, I guess it's not open source. Like some of it is right. Like if it's CC zero or whatever, that is an OSI one. Right. But like, um, I guess the other ones aren't, or I don't know, this is part of the complication, right. Is that I'm fairly sophisticated in this, in this matter.
Starting point is 01:22:41 And I, I still get confused sometimes. So, but I have, I have definitely been calling the book open source for a long time. And a lot of people do because it's, you know, it's available, right? But it is technically non-compete. And there's not really a OSI non-compete license, right? And I find that, so there is a movement
Starting point is 01:22:56 by the century guys to try to use software commons as sort of in this realm, right? Of source available, but, you know, sort of being engaged in the community. But again, there's people that have problems with the commons phrase as well. And the argument is that creative commons has a non-compete license as part of its suite.
Starting point is 01:23:14 And so if that can be a commons, then can this be a commons like that? Who knows? But I think if we zoom out one second on this, I think the matter really is, and I think, so you mentioned pro-get-your-book and you calling it open source. And this is a great example to juxtapose these two arguments together because they're both centered around you because you said one thing on
Starting point is 01:23:33 one side and you said another thing on the other side. I don't think anybody cares that you accidentally call your book open source. And the reason why is because you're not trying to use the quoted term open source and what it means as marketability for a commercial project. That to me is the offense and I don't even think you try to do it. That's the thing I think the people who care about is trying to protect, is trying to prevent folks from operating a commercial company with commercial interest and the marketability of the term open source and what it means for their thing to use it incorrectly. That I think is the challenge.
Starting point is 01:24:11 Yeah, I guess my only pushback on that would be, I don't think any company that accidentally calls their thing open source because it's under BSL or FSL or whatever gets any market share from that. Like nobody cares, right? Like nobody is like, oh, I'll use that because it's open source or something. gets any market share from that. Nobody cares, right? Nobody is like, oh, I'll use that because it's open source or something. I don't think it helps the marketability of something. I don't know about that, though.
Starting point is 01:24:34 I mean, I think there's a maturity level. If you are mature enough to know and use the FSL or the BSL or a particular license, then you're mature enough to know what open source means. And when you say, in quotes, open source, and you know what it means, then you're using it incorrectly because you know. Yeah. Right? So here's an example, Scott.
Starting point is 01:24:54 So we had Josh Padnick on the show talking about Terraform. You're aware of the whole HashiCorp relicensing situation with Terraform. Open TF, which became OpenTofu. And I asked him specifically, he's a longtime contributor to Terraform, and he's part of the fork in the wake of that relicensing. And I said, Josh, if Terraform had been FSL from the start,
Starting point is 01:25:20 functional source license from HashiCorp eight years ago, or however many years ago was when the project came out, would you have contributed in the way that you did? Because he has hundreds of contributions over the years to the open source Terraform project. And he said, absolutely not. There's no way I would have put my time and effort and skills, you know, donated to a functional source licensed project. And so he was offended, of course, because of the rug pull. But that was a situation where Terraform being open source got him involved, whereas with functional source, it wouldn't have.
Starting point is 01:25:54 Now, there's lots of people that don't care, but there are also people that care and they won't contribute for that reason. I do want to double down on, I think we all agree that there needs to be a third term for this thing, right? But I do agree. I do want to differentiate a little bit in that. I think one of the things that we miss from this conversation a lot is the differences between, I think, three functional classes of software. One is libraries, right? Which cannot be GPL or, I mean, in lots of cases, right? Because you really if something's GPL, a GPL in the library, like we run cargo stuff on rust all the time, we're distributing a binary,
Starting point is 01:26:31 we need to be very, very, very clear that there's no GPL code that we're linking into to the app, right? So it really did like OSI is not the important definition it is, is it copyleft. So copyleft is an important definition to me. The other is infrastructure, right? And so if it's an infrastructure tool, I think, or if it's something you want to build infrastructure tool off of, like, you know, I mean, I would even argue Redis or OpenSearch or something goes under this, right? Like, is it okay for you to change licenses at some point? Because I think that the answer is generally no, right? Because people assume that infrastructure is going to be available in the way that it's available. And the downside for somebody building it, like this does create a marketability thing,
Starting point is 01:27:14 is that somebody will adopt it because it's under a specific license. And then you can't have that market share unless you're really, really good at it, right? And I don't think everybody, I don't want to use, you know, like, I think I want to use the one that I have in my AWS instance or whatever that I've already built off of, right? So that does feel like a little bit of a rug pull because it makes me do work when they change that theoretically. And then the third class that I think is really important is applications, right? And applications, I think, are different than infrastructure because you can't, like, you know, what is competition in that, in that sense, right? Like it's a very different thing than trying to build something on the sort of infrastructure,
Starting point is 01:27:51 you know, sort of tool to say, okay, it's the, the get client or, you know, some desktop application or your web browser or something like that. Right. Like of saying, okay, only Google can distribute Chrome, right? Like, yeah, that has implications, right? But I don't think anybody that's contributed to Chrome, or people who wanted it to be brave or something, right? Like had that in mind, it was like, okay, if Google switched to being okay, Chrome's FSL or something, I feel like most contributors, maybe some, right? But I feel like most contributors don't care that much, right? Because that's not really what the value of it is. The value of having it having the source available is a little bit different than being able to depend on it for being able to deploy infrastructure or build infrastructure around something. we talk about licensing and commercial licensing and open source licensing, that it's important
Starting point is 01:28:45 to sort of differentiate these classes of software because they have very different implications of what licensing means in those contexts. Yeah. Yeah, I don't disagree. I don't disagree. I think there are a lot of nuance and there's a lot of different categories of projects. And I think that you could define them differently. Like one man's application is another man's infrastructure.
Starting point is 01:29:06 Is GitHub.com an application, right? Or is it my infrastructure? It depends on which perspective you have it from. But I definitely see where you're coming from. And I agree that we are lacking the facilities to properly communicate. Which is why you do have to drill down.
Starting point is 01:29:21 This is the way it's been for a long time. You mentioned copyleft. There are many developers that don't know that if I pull in a GPL library into my work, there's a lot of implications there. I didn't realize that. Many developers do know that and then they teach the other developers or maybe the CTO teaches the team leader,
Starting point is 01:29:42 whatever it is, and eventually you figure it out or not. Hopefully there's policies and stuff. But like this stuff has never been simple. And I feel like it's just gotten more complicated as software has gotten more pervasive and had more use cases. I think AI, we don't need to go here,
Starting point is 01:29:57 but AI makes it even more complicated because it's not merely code, right? Yeah, that's really interesting. Yeah, I don't even want to get into licensing and our code stuff with GitHub and stuff. No, let's not. We've done it before. It's a rattle.
Starting point is 01:30:10 To zoom really far off, I think what is important, though, let me just say this one point and we can go any other way you want to go. I think the important thing is that I'm not offended by you personally. I'm not angry that you said what you said on Twitter. I'm not mad at you one little bit.
Starting point is 01:30:23 I'm thankful that you care enough to show up and care so deeply about Git 10 years ago or whatever the number was to now even that you're contributing back. I think the contribution is what we should honor, not so much the way in which we do the contribution. You're trying to innovate. You're still showing up. You're still doing things and you're still offering a way for people to be involved. Whereas you could just sort of be like no proprietary everything behind the scenes no can play now you may not get adoption that's a whole different animal but the point is that you are showing up you are innovating and you are providing a path to have community and share
Starting point is 01:31:00 i mean what's what's interesting to me i guess is, and again, this is another down the line of GitHub helped create this problem, right? So I feel partially to blame for this is sort of genericizing source available and open source and not making it clear kind of what differences are. somebody who runs software and somebody who uses software and you know has a company that depends on it and produces in the same ways licensing wise i care about essentially does a lawyer need to look at this or does a lawyer not need to look at this and i kind of i kind of separate my licenses into that right like if something's you know fsl or whatever but i'm clearly not competing then i can be like you know what i'm pretty sure'm pretty sure that a lawyer doesn't need to look at this and I don't need to care. If it's OSI, I still need to care. Is this copyleft or not? Right? Like, that's what I care about. I care about, I open, so everything that I do is MIT. I don't think I've released anything under anything other than MIT until this, right? From a corporate perspective, or it's been closed. But I do need to know, does a lawyer need to look
Starting point is 01:32:05 at this, right? Because even I'm unclear, sometimes, what can I do with AGPL software, right? Like, I, it's not everybody knows exactly, like you were saying about GPL, but AGPL is, in some cases, even more complicated, right? Because if you're doing a service that's doing, you know, and why, you know know why are people using it like this is this is actually kind of what came down to kip other was we were talking about you know a lot of like i think zed is agpl as well just trying to say or at least a server component is trying to say what what happens when this happens when you agpl something and somebody wants to you know build something around it or use it for something you know in a sophisticated organization you have to get a lawyer involved or you need to have a relatively sophisticated understanding of what you can and cannot do with it.
Starting point is 01:32:51 And so it's really just, to me, the spectrum of importance is really, do I need to care about this or do it? Does my lawyer need to care about this from a corporate perspective or do they not? And so I love MIT Apache. I love anything that doesn't involve lawyers or give lawyers money. Those are my favorite licenses. If a lawyer needs to be involved, then I'd rather have it be simple. And I think the FSL is somewhat, I mean, it has been argued to me that there are complications here as well, because there's nobody really knows what does it mean to be competing. I was going to say, you do have to get a lawyer involved because the defined competition is very difficult in the age.
Starting point is 01:33:25 You 100% need a lawyer. Yeah, you 100% need a lawyer involved with FSL, but you would with AGPL as well to a degree, right? And so the question is, what makes the lawyer's job easier or what makes you easier if you do have to interact at this level? And I care about that because that takes time, right? So take your time or don't take your time, but like try to make it simple if you do. And, you know, FSL or BSL or whatever, they don't make it totally simple. But, you know, I think of most people that are reasonable, have some clarity of whether they're competing or not, right?
Starting point is 01:33:53 Like, but yeah, it's yet to be seen. It's a new thing. But I think at the end of the day, we can all agree that like, it would be nicer to have a little bit of a different way of talking about this, right? Or a way of trying to figure out what can I do? What can't I do? And give companies a path to make source available on more of their things, right? I do really want to see a world where everything I'm using is, is on GitHub or wherever, but I can look at it. And if there's something I want to change or fix or whatever, I'm not worried about my freedoms and IP and stuff. I just want to make sure that I could fix it and it could theoretically be accepted somewhere. And I find that very valuable. So I want to see that world. And the question reason, it sounded pretty good to me.
Starting point is 01:34:46 You know, like there is open source, there is functional source, and there is proprietary source, which is actually no source. There is no source to look at. It's just proprietary. You can just drop the source. Well, I mean, so 13 years ago,
Starting point is 01:34:58 Scott Chacon made Git cool. So, I mean, he can make functional source cool. He can do it again. That's all we need is a charismatic leader to just champion a new term. My new banner. What's cool about functional source license, too, coming from Sentry, is their business name is not actually Sentry.
Starting point is 01:35:16 The DBA is Sentry. And I know this because we do business with them. And their business name is actually functional something or other. But their name, the business name, is actually functional something. I should look their name, the business name is actually functional something. I should look it up right now. I feel like an idiot. But it's got the word functional in it. It's not Century. Their business name, their LLC is not.
Starting point is 01:35:33 Is that why it's functional source license? That's right. And I think that's why they went with functional as a result because of that reason. Let me pull this up. Yeah, Functional Software Inc. Sorry, they're not llc functional software inc is their official business name there you go well let's get back to get butler let's wrap this sucker up that was a fun diversion on the open source license i think we could go around
Starting point is 01:35:56 that merry-go-round a few more times we need those kind of debates i mean it's those kind of like conversations that mature our audience mature our own thinking like my position is layered on from years and years of these conversations really for sure and learning and listening and then challenging whenever i feel conviction etc and we only get there because we together push back on what everybody should do to get to where we're trying to go yeah that's good stuff. Go ahead, take us there, Jared. Back to GetButler. Well, I would just like to let Scott tell folks how to find it, where it's at,
Starting point is 01:36:31 how they can get involved. I've downloaded it. I'm trying it out for the first time this afternoon. And I'm sure he'd probably like some more people to kick the tires, right? Absolutely, yeah. You can find it at GetButler.com. Yeah, it's, it's, uh, you can find it at getbutler.com. Actually, it's one of the funny things, you know, if you have a bunch of sort of startup
Starting point is 01:36:49 people listening to the podcast, if you start a company, try to name it something Googleable, which I feel like lots of, lots of companies come in and do something that's very, very hard to Google, um, without putting, you know, app or something at the, at the end of it. But, but yeah, if you type in GitButler, you'll always find it. There's nothing else to name that. So, but yeah, gitbutler.com. And the best thing is to,
Starting point is 01:37:11 you can also find it at github.com slash gitbutler app, which GitButler was not available. And download it or try it from the source code or whatever if you want to. And I think the most important thing is to come on Discord if you're interested. Even if you don't want to use it, you just want to. And I think the most important thing is to come on on Discord, you know, if you're interested, even if you don't want to use you just want to talk about version control stuff, or, or talk to me about the new edition of pro get, which I'm kind of starting down the road of doing a third edition of that. Discord is is awesome. It's actually,
Starting point is 01:37:38 it's one of the things I really wished kind of was available in in sort of the open source world. A decade ago, we really didn't have Discord, right like we we had we had irc channels or things like that but i think the the level of engagement even like you know for me if i i use planet scale for a sequel right and they have a they have a room and i can go in the room and i can ask questions right and like it's such a it's such an interesting awesome new thing for companies and and for open source projects to have them all have a room that you can go into, right? Like I, like I was saying before, I got interested in jujitsu, they have a discord channel, you can go in and ask questions and try to say, how did you do this? Why? Like, you know, what, where, what's the future of this, whatever. So that's actually,
Starting point is 01:38:19 you know, if I get if anybody gets something out of this podcast, and they want to engage, I would love to talk to you, like, you know, come to the Discord channel. There's a link off of the homepage. And what's really important to us in this sort of beta phase is to talk to people. Absolutely. Or, you know, if you're in Berlin and want to get a beer or something, if you guys are ever in Berlin and want to get a beer, let me know. I've never been to Berlin, but I would love to go and I'd love to have a beer. So who knows?
Starting point is 01:38:42 Was I in Berlin? I was somewhere in passing. The reason why I can question it is because I was actually on my way from Sarajevo, Bosnia. And I flew while I was bused to Germany and flew from Germany back to the States when I was in the military. And I was young, obviously. And I like to party a lot. And so I just partied. I think I was in like Ramstein
Starting point is 01:39:05 potentially. I don't even know where I was at. It was like all I know is it was in the country Germany. And that was it, pretty much. But you also have the Merge coming up, a developer experience conference. Oh, that's true, yes. Is that something you're a part of or what is this? Yeah, so we, you know, we were
Starting point is 01:39:21 doing all of these conferences and I was speaking at lots of places, I still am, and we were sort of buying beers for everybody and finding this really valuable. So we kind of had a dumb idea and we're like, let's just do our own conference about all of these things that we're learning now, like this Discord thing,
Starting point is 01:39:37 like how do you engage in an open source community or source medical community? How do you start a software company today, right? And there's all of these tools that weren't available at the beginning of sort of GitHub days that I'm really interested in. Like there's influencers, right? There's YouTube, there's Discord,
Starting point is 01:39:53 there's like all of these tools of how to sort of engage in the larger software development community, how to do it well, like how to communicate effectively, how to communicate authentically. And so we're bringing together a bunch of people to talk about developer experience, which I find very interesting. I feel like people don't know very much about or don't think about enough, right?
Starting point is 01:40:14 Like if you like, this is one of the things that I think differentiates us from, you know, the Git CLI versus Git Butler is that we really, really care about the developer experience, right? Like we want to make sure what is your workflow? What are you doing? How can we engage? How can we make this easier? And so I'm trying to find all of these companies that do really great developer experiences or have great sort of communication with developer communities and try to learn from them, right? So we have some speakers from Century, from HashiCorp, you know, it's interesting, from GitHub, obviously, and we're bringing
Starting point is 01:40:49 everybody to Berlin, so it's also a good excuse to come to Berlin. But yeah, you can find that at merge.berlin, and it's in June, so June 13th and 14th. I was digging that. Let me suggest one more name to your list, if the person's name has not already been on your list.
Starting point is 01:41:05 And that name is Zeno Rocha, founder of Resend, creator of Dracula. And that's the way he says it, is Dracula, because he has an accent. I love his accent. Big fan of DX as well. He's got some thoughts and some philosophies he's shared. So if you don't know him, you should add him to your list, at least to check out. And he's actually going to be on the podcast here short enough
Starting point is 01:41:26 because that's the next episode coming out. Nice. Very cool. The Merge, Berlin, all the fun things. What else is left, Jared?
Starting point is 01:41:36 Is this the end? We covered it, man. We did it. We're here. We've arrived. We're at the end. Well, it's good to have you back after all these years, Scott.
Starting point is 01:41:43 Keep in touch. Let's do it more frequently than every decade or so. We should do it more often. Yeah, for sure. I'll see you guys in 34. There you go. So replacing Git with Git, how novel of an idea is that? Git Butler has a lot of potential.
Starting point is 01:42:04 And Scott has some big ideas he's executing on, so no doubt he'll have success. But what are your thoughts on the idea and the name of open source code? You see what I did there? Code that is open source, source available, functional source, however you want to term it, commercially backed open source software, commercially backed source available. It really is a challenge to describe it and not really step on the toes of quote open source end quote. I feel the pain, but we do need to have a line drawn somewhere. Well, I do want to let you know that we have a fun episode coming out tomorrow on Change Logging
Starting point is 01:42:48 Friends. Our good friend, one of our best friends, BMC, Break Master Cylinder, the beat freak in residence, the beat maker we call upon when we want new beats. That BMC, yes, that one. Tomorrow on Change Logging Friends. So, so fun.
Starting point is 01:43:04 A big thank you once again to our friends at FireHydrant, our friends at CrabNebula, and our new friends over at Coda for sponsoring this episode. And of course to Fly.io, the home of ChangeLog.com and to our friends at
Starting point is 01:43:19 Century. Use that code ChangeLog to get $100 off the team plan. So cool. So cool. Okay, that's it. This show's done. We'll see you tomorrow on Friends. Thank you. Game on.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.