TypeScript Drama and Open Source Opinions
Recently 37signals co-founders David Heinemeier Hansson and Jason Fried found themselves at the center of an unexpected internet storm. It all began when David made a significant announcement: Turbo 8 would no longer be using TypeScript.
What followed was a whirlwind of controversy and social media fireworks.
In today’s discussion, Kimberly Rhodes sits down with Jason and David to unpack the impact of social media on these types of discussions and the broader implications of these online controversies on open source contributions.
Check out the full video episode on YouTube.
Show Notes
- 00:00 - Kimberly opens up the discussion, sharing the recent announcement made by David, that Turbo 8 would no longer utilize TypeScript and the resulting online controversy.
- 00:33 - Jason shares his reaction to the drama unfolding and offers kudos to David for handling the storm with grace.
- 01:34 - David shares how it all began with eternal debate: dynamic vs. static languages, strong vs. weak typing, and 37signals is firmly in the dynamic, free-spirited camp.
- 02:23 - What led to the BIG decision to pull the TypeScript plug?
- 03:19 - Dynamic vs. static, it’s like arguing about your favorite pizza topping.
- 04:13 - TypeScript was removed in record time (freeing the code!).
- 04:59 - This debate is like a merry-go-round of arguments (and we’re not here to convert anyone).
- 05:48 - David shares: “People have preconceived notions about my opinions, and when we go against the flow, it’s bound to stir the pot,” (remember the cloud exit?).
- 07:32 - Programmers can turn small details into raging infernos and social media is like a dry brush waiting for a spark.
- 08:45 - Compared to fighting Apple for HEY.com or navigating the minefield of workplace politics, this is just a minor skirmish.
- 10:38 - Humans naturally tend to form tribes and defend their beliefs, but internet drama usually loses its fervor in 24-36 hours.
- 11:38 - Jason shares the binary nature of most debates such as air-cooled vs. water-cooled Porsches or car collectors’ preferences.
- 12:25 - Kimberly comments on the polarized nature of the comments.
- 12:38 - There is value in discussing ideas so long as the debates don’t devolve into personal attacks.
- 14:39 - How personal attacks gain traction.
- 15:44 - The importance of embracing diversity in programming languages and techniques for a more vibrant tech world.
- 17:24 - David shares insight from his recent trip to Japan and the beauty of appreciating different cultures without feeling the need for uniformity.
- 18:42 - David reveals whether this unexpected negativity has changed his view of open source and sharing.
- 20:40 - David will continue to contribute to open source BUT…
- 21:26 - Please don’t spoil open source contributions for everyone else.
- 23:16 - David shares a surprising recurring theme in the REWORK podcast and why it’s important to speak out about your beliefs—especially those you are hesitant to voice publicly.
- 24:01 - David discusses whether this kerfuffle has had any effect on the 37signals team.
- 25:19 - REWORK is a production 37signals. You can find show notes and transcripts on our website. Full video episodes are available on Twitter and YouTube. If you have a specific question for Jason or David about a better way to work and run your business, leave your voicemails at 708-628-7850 or send an email.
Links & Resources
- From David’s HEY World: Turbo 8 is Dropping TypeScript
- From David’s HEY World: Open Source Hooliganism and the TypeScript Meltdown
- DHH’s post about Turbo 8 dropping TypeScript on X (formerly Twitter)
- Books by 37signals
- HEY World
- The REWORK Podcast
- The 37signals Dev Blog
- 37signals on YouTube
- 37signals on X
- 37signals on LinkedIn
Sign up for a 30-day free trial at Basecamp.com
Transcript
Kimberly (00:00): Welcome to REWORK, a podcast by 37signals about the better way to work and run your business. I’m your host Kimberly Rhodes and I’m joined by the co-founders of 37signals, David Heinemeier Hansson and Jason Fried. Recently David posted on his HEY World as well as sent a tweet that Turbo 8 would no longer be using TypeScript. This created a little bit of internet drama and we’re here to talk about it. David, before I get to you, Jason, I want to know when David creates internet drama, how are you feeling about this? Do you even know what’s going on?
Jason (00:33): I mean, I’m caught off guard like everyone else. I’m surprised. I think I’m surprised that so many people have such strong opinions about this sort of thing. Now granted, I don’t know enough about this sort of thing to have an opinion, but in general, to see the amount of vitriol and support on both sides, it’s a spectacle and I’m chewing my popcorn like everyone else is watching this because it’s incredible. And also I think to compliment David here, to be able to handle that much, I dunno, mud slinging and there’s a lot of attack, all the stuff, and it seems like you handle it quite well. So it’s an impressive lesson actually in just letting these things sort of roll off you to some degree. Although I’m sure a few of them stick here and there depending on who it’s from, but still pretty impressive thing but interesting to watch.
Kimberly (01:25): So David, your tweet has been viewed multiple millions of times at this point, so why don’t you just catch us up quickly on what all this drama’s about?
David (01:34): Sure. So first of all, Turbo 8 is a framework that we use to build our applications and the irony here is that it’s actually a framework to minimize the amount of JavaScript we write in order to build our applications. Most uses of Turbo use it explicitly such that they don’t have to write a bunch of JavaScript to build highly interactive applications. And the same with us. And we’ve been building Turbo for several years and for a while we’re building it with a tool called TypeScript, which is sort of this thing that sits on top of JavaScript to give it a typed experience that has some benefits when it comes to IDEs, these development tools. You get some auto complete benefits and so forth, but it also means that you have to write your code in a certain way. I never liked that way of writing code.
(02:23): There’s this big sort of schism in programming, whether you’re dealing with dynamically type languages or statically type languages and there’s strong typing and there’s weak typing. There’s all these little sort of what appears from the outside as esoteric differences that people get really riled up about. And I have my preference. My preference is for dynamically typed languages like the Ruby language that we predominantly use and been using for 20 years, like JavaScript itself. Those two fall in this category of dynamically type languages that have a loose, more permissive more. And now we’re already into controversial territory, freedom loving feel to them. I like that. What ended up happening was we have a new team at the company that’s working on Turbo and working on a bunch of new features for major new release and the discussion came up as we were working on one of these new features.
(03:19): Oh, here it is. I’ve been working on this. I’ve been wrestling with the TypeScript type system. And there was just something in like, hey, actually does anyone like this way of working anymore? Any of the people who are at the company, are we enjoying ourselves writing this software in this way? And we were all like, well, not me, not me, not me. It was like, why are we doing this? This is mainly a tool that we use internally to build software. It has some externalities and some external effects too, but it’s mainly just a tool we use and we’re just like, you know what? If we’re not enjoying ourselves, why don’t we just yank it? And we’re like, oh yeah, we could just do that. And then first it started as this discussion I think actually several months ago. And then this trigger of the new feature we wanted to put in came up that was just again, reminding ourselves of how we felt it to be cumbersome to work in this way.
(04:13): And then the next step was can you just see what would it look like to pull this tool out? Is it going to be a big deal? And Alberto, one of the programmers we have here in a morning in 40 minutes or something, yank, and then you have the pull request that it’s called the difference in the code base. And you see, oh, and I looked at that and we’re like, oh yeah, this is so much nicer. This reminds me of why I’m such a big fan of JavaScript. Let’s just ship it. And the funny thing is I kind of knew that there’s going to be some people who don’t like it. This has been an age or literally the entire time I’ve been doing software we’ve had this discussion – dynamically type languages versus statically type languages and all the intricacies of that. That’s been there for 20 years that I’ve been doing software.
(04:59): And another 20 years, at least before that, programmers have been arguing whether it should be this way or the other way. So yeah, there’s going to be a few people who want it the other way. There’s even going to be a few contributors, right? Ok, but this is one of those things we can’t debate our way out of. I love having technical debates. I love going into the weeds of this, but this is the kind of technical debate that has almost identity, politics, stickiness and controversy associated with it where it’s very rare. In fact, I cannot ever recall a discussion between two programmers where they went, I like dynamically type, I statically type, where one or the other went like, oh, you made an excellent point there. I have never heard this point in my life sir, and now I will change my opinion. So now I will switch from statically type to dynamically type.
(05:48): Yes, I am so grateful for you to do this. So I went in with that sentiments. You know what, we’re not going to change anyone’s mind. People change their mind on this topic occasionally, but it’s not from one interaction and one set of arguments made for the 500th time. All the arguments you could ever make on this topic, more or less they’ve been made over the decades. So I just refer to that and say like, yeah, do you know what? I know there are people who the static type experience, I know other people like TypeScript, we don’t. We’re the main people working on this, so we’re going to take it out. Enjoy it if you like it. I’m glad that JavaScript exists in this form that I personally really like a lot and then just trigger absolute trigger. You’d hit some sort of special secret button that just makes especially Twitter or X just explode.
(06:40): And I think some of that as it often is, is also about the center. I’ve had, let’s just say it, controversial opinions on an absolute laundry list of topics over many years. So there are people who have already formed opinions about what my opinions are and that obviously triggers things and it accelerates things. And this is also a high profile case of someone going the other direction, which has a little bit of echoes of what we did with the cloud exit where everyone is going in one direction or it seems like everyone is going in one direction and we just go like, no, actually we like it over here instead. And people just go like, well, you can’t do that. We’re also so to be going in this direction, what is happening to the narrative? And just introducing that confusion. Oh, there’s someone here who’ve accomplished things, who are choosing to do things a different way.
(07:32): I thought we’d all agree that this was just the right way of doing things creates this sort of friction that social media then just absolutely accelerates in a way that’s novel. And to me, even now after been a part of this for so long, still surprising, still surprising because programmers along with every other group of nerds ever have had this propensity to become incest over these minute details in the grand scheme of little blue dot spinning around in space. It’s so inconsequential yet it gets so fierce and so heated and that’s been like that forever. We’ve had these flame wars back when we were using mailing lists for example, but they were somehow more contained. They didn’t sort of set everything on fire right away. It’s kind of like social media today is a place where the chaparral had just been allowed to build up and build up and build up and it takes a tiny match and then suddenly you have a wildfire just blowing down the hill going a hundred yards a second or something.
(08:45): And first of all, it’s just interesting Jason mentioned like, oh wow, that’s a lot of whatever pressure or the slinging the attacks and so on. I have arrived at the point now that I’ve been involved with so many flame wars of these kinds over the years, particularly within tech and then I’ve been involved with so many other far more stressful events over just the last five years. This is one of those things where I’ve built up immunity I think to that level of vitriol. It’s still disappointing, but you go like, oh yeah, I mean that’s just kind of sad, but also, okay, whatever. I mean if you contrast this for example to the two weeks we spent battling the most valuable company in the world, Apple, for the right for hey.com to exist. This is just such a minute minor thing. Or if you contrast it to the debacle we had a few years ago about politics at work.
(09:41): Again, this is just such a small thing and I think it’s useful to have gone through some of these more intense experiences because it then makes these other experiences seem so inconsequential and it becomes much easier to just take a sanguine look at it and go like, okay, so there’s some people on the internet who’s going to be excited for how long? Let’s see, it’s been 24 hours. I’ll give it another 36. Then we will have absolutely crested the thing. It’s going to be a small amber that’s left and then okay, and so what, there are people who have opinions about how we like to cut our meat. You hold your knife wrong, you should be holding your knife is not long enough. How can you cut some meat if the life is not long enough? I make up these funny characters in my head when I read some of these things where I just try to recontextualize it, right?
(10:38): Imagining chefs arguing on the right length of the knife to cut the meat and then just being absolutely incensed that there are chefs somewhere else, making goddamn delicious food but cutting their meat wrong and you just go like, wow, does this happen? I’m actually curious if there are any chefs in the audience maybe they can write in to tell us whether these kinds of debates also happen in the chef world because I could imagine that they do. I don’t think programmers are actually that special. I think they may be more connected, they’re more very online a lot of the time, so that accelerates some of this stuff. But I also think humans just have this need to some extent to associate with a group of people and sometimes that association turned into a bit of mob like behavior because we’re all committing our pieties here and we are on this tribe and this tribe must defend its honor that’s been besmirched by someone not liking our dogmas.
Jason (11:38): Think part of it, by the way, if I could just jump in, part of it is the binary aspect of it. It’s like you’re for statically typed or dynamically typed. It’s like the air cooled versus water cooled world and Porsches or it’s like a car collector who’s like original paint or respray is fine, but if you’re an original paint guy you will not buy a car with an ounce of respray. It’s these things where you can take very clear sides. I don’t know if the knife, I dunno, you were just making it up. The knife might be too, it might be too much variation in the knife, but it could be the type of knife you must use a cleaver or a paring knife or whatever the hell it would be. If there’s these binaries that exist and you can be on one side or the other and there’s no gray space, that’s when the flames begin. You see it everywhere.
Kimberly (12:25): And that’s what all the comments were very polarized one way or another. Either this is the best thing I’ve ever heard of and way to go, David or David, you’re an idiot and we’re going to burn it down to the ground.
David (12:38): And I think a lot of that comes because people yearn to be part of teams. This is one of the reasons why sports are such a powerful and helpful outlet for those kinds of activities and I think sadly not enough nerds are into sport so they don’t get the outlet from that. They don’t go like I’m for Team Buffaloes. If there’s a team called Buffaloes and that’s where I can get that team belonging energy out my team beat the other team or the other team is stupid or their coach is an idiot or I think that’s just the human sort of need to get some of that out there and there are healthy outlets for it. I think sports I think is a wonderful outlet and I did not used to appreciate this. I didn’t care that much for that much sports for a long time and now I go, you know what?
(13:33): I should get more into whatever sport team buffaloes is playing because I also need some of this, right? And this is why I can look at the discussion with a bit of amusement because I can recognize parts of it in the mirror, not necessarily the tactics. I love having these fierce debates about even polarized technical topics at the level of ideas. I think actually engaging with ideas, even if the people engaging in that moment aren’t going to move is helpful, is actually good. We should be discussing ideas. And occasionally there are breakthroughs in those ideas. I don’t think on these topics but in other topics. But so often the team dynamic takes over the tribe dynamic territory and then becomes about people. You are an idiot because you like this idea or because you like this knife or because you statically type to dynamic type. That’s where I feel like it crosses over and become human behavior, yes, but still unfortunate and it’s also become worse.
(14:39): The internet has in that regard become worse. What drives so much of engagement on social media is the particular outrage that you can tickle when it’s about people. We just are these social animals and it becomes more fierce and intense and viral when you have one person calling another person an idiot directly or what was it? One of the people said this was dickwadery or something like that. Once it gets to that sort of juicy level of someone is throwing the mud, everyone shows up exactly with the popcorn because it looks like a fight. And I think we’re just built for spectating that with a certain amount of glee. But I don’t think, it’s not the place where ideas move forward. It’s actually the place where the discussion about ideas go to die because once it becomes that level of low level team individual sports stuff, it just entrenches everyone to a sense of animosity where their brain just goes smack, closed for business.
(15:44): I mean there’s the whatever lympic node or something, the reptile part of the brain is in full mode, but all the cognitive power is that like, oh, allow me to entertain a challenging idea for a moment just to spin it around and see it from another side. That’s just goes by the wayside. And I think that’s sad because one of the most enjoyable programming experiences I’ve had recently was diving into a statically type language. So I dove into the swift language that you use to build iOS applications and had great appreciation for that. I could see the benefits, oh yeah, I can see how this really helps here. And you have the ID and so forth. And then I spent a couple of weeks doing that and read through the language manuals and all this other stuff and took some ideas away and took some inspiration away.
(16:32): And then I got back to programming Ruby and I just went like, ah, this is what me likes. Right? There was just sort of a sense of relief of like, do you know what? I can appreciate these other ideas. I think it’s fun to spin 'em around, but this is what speaks to me and I think this is the other sort of sad part of the tribal personal part of it is like what’s the ultimate outcome supposed to be here, that we all like to program in exactly the same way with exactly the same languages? Man, life would be so boring. I mean it would be just dreadfully uninteresting if we all like everything exactly the same way. If every single chef had exactly the same techniques such that we could eat exactly the same kind of food coming off the assembly line, where’s the spice in that?
(17:24): Where’s the diversity and the interesting and the variety that just gives this life its energy and its zest. I was reminded about this too. I just spent some time in Japan. And to me Japan is one of the most fascinating countries that I’ve ever been to in the world because it is superly advanced society that is utterly and completely different in almost all the ways at once, completely different culture. And I just had such a good time appreciating how this is the anti United States, how this is the anti Europe. And then I also wanted to go back. I’m like, I can appreciate and have a good time on a vacation seeing something different and appreciate it because it’s different. And then also go back to living where I live. I didn’t go away from that going, I must move to Japan. And because I had that experience, I just go like, oh, that’s great. How wonderful. And I have this experience all the time in technology. I’ll try a piece of technology and I go like, wow, I really appreciate being here in Japan, statically type Japan land where everything is kind of different and a little quirky and I have to tilt my head to make sense of things and not all the symbols add up for me and then I come back from that vacation and enjoy myself.
Kimberly (18:42): Okay. David, I have a question for you. Does all of this negativity that you didn’t expect around this one change make you feel any differently about open source and sharing all the things that we share?
David (18:52): Oh, absolutely not. So this is one of the things, unfortunately that does happen to a lot of people. I’ve seen countless numbers of open source maintainers go like, fuck this, not worth it. I’m sharing this for free with people as a gift. Literally the license for example, for the Turbo repositories, it’s called the MIT license, which is basically the you do whatever the hell you want, but don’t hold me responsible for the code that I’m giving you away. Especially when you look at something like Turbo that we develop on company dime. We’ve spent literally millions on Hotwire as a whole umbrella of technologies over the years and we’re giving all of it away. No strings attached, no licensing deals, oh, if you use this, you have to give us a cut of your revenues. None of that. It’s just literally all gifts and someone doesn’t like the gift and they want a refund? On what? You didn’t pay for this shit.
(19:53): So that is an instinct I think a lot of open source maintainers have, I am just giving you this stuff and you’re showing up and going, like the gift you gave me for free should be another gift and you’re an idiot for not giving me the gift I wanted instead of the one you made. But I’ve also found what you see on the internet is you hear from a very small vocal group, and I mean small, maybe still hundreds of people or even thousands of people, but that is an absolute drop. I find when I meet people directly or I talk to them over email or some other medium that’s not sort of this thunderdome stage that Twitter and X is that they’re lovely. They appreciated even if they don’t use it, they usually appreciate it. They appreciate ideas. You can have good discussions, you can have all of these things.
(20:40): And for me, I just keep that top of mind and then I also keep just top of mind. I had a slide way back in the day when Rails was first introduced that just said, fuck you, right? As in fuck you. So you don’t like the gift. Okay, I like making the gift, so I’m going to keep making the gift. I’m doing this for me. And I think this is sometime what gets people riled up, right? Then I’m quite honest about that. I’m predominantly doing open source for me. I love sharing also, but I’m not just doing it for the sharing. I’m not here showing up as a volunteer labor force for whatever gifts you would like to have. I show up with my gifts that I made at our company because we enjoy 'em and because we need them and I’m just giving them to you.
(21:26): You can take them, you cannot take them. It’s all good, but could you not spit in the soup for everyone else, perhaps along the way too much to ask sometimes. But no, I think again, this inoculation I’ve had of the slowly ratcheting intensity that’s been in these discussions over 20 years, we went from the flame wars on the mailing list that felt very small compared to sort of the dunk fest that people love to participate in today’s social media. So I kind of got an inoculate along the way, but I can totally appreciate if someone looks at an episode like that and go, why would I spend my time on open source? And I think that is a bit of the tragedy of it that other peoples look at that level of hooliganism, people just opening frivolous pull requests on our source just as a way to obstruct or grind the gears of us making forward progress and go like, yeah, no, I don’t need that in my life.
(22:21): And I think that’s sad if that’s happening. So I would like to be the, I dunno model of saying you don’t have to do anything. You can also close to Twitter. Literally all of it goes away if you just close Twitter, mostly. Now there’s some contamination into GitHub and other places, but mostly it just goes away if you close it and then you get the emails, which I’ve gotten in this case for example, just like tons of emails from people going like, yeah, also I didn’t like TypeScript so much, but I was afraid to say it because these people are really loud if you say you don’t like it and I didn’t need that, but I am really glad you said it, right? That to me gives me just some sort of, it’s nice to hear that there’s a level of preference falsification going on that people who then get affirmed in the belief that’s counter to whatever the current active narrative can find some solace in.
(23:16): And I think this is actually one of the things we so often see, not just with technology, but in all the things we say. REWORK, for example, I think Jason, if we had to pick one thing that is a recurring thread, perhaps the most recurring thread is people write in and say, I also believed, for example, that meetings are toxic. I also believe that inspiration is perishable. I took five of these essays. They really rung true because I believed them, but I didn’t think you could say out loud. I like to be of service to say things out loud that other people are hesitant.
Kimberly (23:51): Okay. And last question before we wrap it up. Has there been any fallout at the company? Meaning is this affecting anyone else other than David you who’s getting all these messages?
David (24:01): As best as I know, absolutely not. Maybe some of the contamination stress, it’s always whenever people get riled up online, there’s a little bit of ooh. But this is one of those things where we had the knife we didn’t like cutting with so much, so we put it at the side and used another knife. So in terms of how we work internally, absolutely not. In terms of sort of just the social warming that is evident in these kinds of discussions, I don’t know, maybe. Definitely it’s reasonable to take something away and go like, this is a little uncomfortable, but this is a good reminder of this too, shall pass. Everything passes online. People can’t remember what the controversy was last week. It’s so intense. And then it just slides off. And all the people who were tourists who didn’t even know what Turbo was in the first place, who just showed up to grandstand with their tribe about their beliefs on how to type a language, they will move on to the other thing and we’ll get back to work and continue to make progress and great products and sharing our gifts.
Kimberly (25:06): Okay, well until the next controversy, we will see you back here . REWORK… oh wait,
David (25:12): I’m getting right now. There is another one. It is throwing right now. No, I’m just kidding. I’m sure actually there is. I’m sure. I’m actually not kidding.
Kimberly (25:19): I’m sure by the time this actually goes live, there’ll be something else. Yes. Well, you’ll know where to find it. REWORK is a production 37 signals you can find show notes and transcripts and links to the next controversy on our website at 37signals.com/podcast. Full video episodes are on Twitter / X and also YouTube. And if you have a question for Jason or David, you can just tweet them or send us an email to rework@37signals.com or leave us a voicemail at 708-628-7850 and we just might answer that on an upcoming episode.