The Changelog: Software Development, Open Source - The serenity of building your own OS (Interview)

Episode Date: August 24, 2023

This week we're talking to Andreas Kling about SerenityOS and Ladybird. Andreas started SerenityOS as a means of therapy. It's self-described as a love letter to "'90s user interfaces with a custom Un...ix-like core." Andreas previously worked at Nokia and later at Apple on the WebKit team, so he had an itch to do something along the lines of a browser, and that's where Ladybird came from. We get into the details of compilers, OSs, browsers, web specifications, and the love of making software.

Transcript
Discussion (0)
Starting point is 00:00:00 what's up friends welcome back this week on the change law we're talking to andreas cling about his work on serenity os and ladybird andreas started serenity os as a means of therapy it is self-described as a love letter to 90s user interfaces and a custom unix light core andreas previously worked at nokia and later at apple on the webkit team so he had an itch to Thanks for watching. A massive thank you to our friends and our partners at Fastly and Fly. This podcast got you fast because Fastly is fast, super fast, globally. Check them out at Fastly.com and our friends at Fly Help Us Putter app and our database close to you wherever you're at in the world with no ops. And they'll do it for you, too. Check them out at fly.io. What's up, friends?
Starting point is 00:01:14 I'm here with James Cowling, co-founder and CTO at Convex. They're one of our new sponsors, and they're building a full-stack platform for the TypeScript era. So, James, in your main navigation, you link to a page called Convex versus Firebase. How similar is Convex to Firebase? And if someone is quickly trying to grok what Convex is, is that a good comparison? I think it's a good starting point for sure. I mean, Firebase has been very impactful. And the people we speak to who use Firebase often love it. And they often lament the time they have to move off of Firebase because it's kind of failed to meet their needs as a growing company. So Firebase falls short in a few ways.
Starting point is 00:01:53 One is in terms of like a fully relational document model. One is in terms of having strong type system. One is in terms of having this full end-to-end consistency story where you write functions that run on an API server on the data that you can subscribe to. And so one thing I think we see in the Firebase style development model is that you have web applications talking directly to a database in a cloud firestore. With Convex, what is different is you have your code talking to actual fully fledged TypeScript functions running on your data that you can subscribe to. But I think the Firebase's comparison is fairly apt. And if someone is a Firebase user, I think you will love Convex.
Starting point is 00:02:34 And it's certainly designed to fill that niche in the market. It's people who want to build applications without having to mess with infrastructure. In what way has infrastructure failed specifically application developers? I think if one was to compare what it looked like to build an application 10 plus years ago to today, it's gotten more complex, not less complex. There's a bewildering amount of frameworks. I think Google, for all their amazing work they do, has had a bad influence on how people build systems. Because oftentimes when someone wants to build a web app these days, they're told to like learn Kubernetes or something ridiculous like that.
Starting point is 00:03:08 You know, these infrastructure platforms really resemble the shape of the underlying implementation, not the shape of the problem that the application developer is facing. And so even when before we started ComEx, we're talking to customers, people were like, well, I just want someone to like manage my Kafka cluster.
Starting point is 00:03:24 And I'd say, well, why do you even have Kafka? And like, well, I don't really know. talking to customers people was like well i just want someone to like manage my kafka cluster and i'd say well why do you even have kafka and like well i don't really know i think the database falls over if i don't put a queue in front of it or like i need to like buffer some data somewhere and what became clear is is that the the tools just weren't serving the needs of the application developers and i think application developers and framework front-end framework engineers understand the problem space because they spend all day doing it. They sometimes don't have the power to fix the problem because they don't build the database themselves. And I think oftentimes infra folks, including myself, don't have enough empathy for the application developer.
Starting point is 00:03:58 At the end of the day, all that matters is the application. Okay. If you're looking for a better type of backend, Convex is the full stack TypeScript development platform you've been looking for. Replace your database, server functions, and glue code. Get started at Convex.dev. That's C-O-N-V-E-X.dev. Again, Convex.dev. Thank you. Well, we're joined by Andreas Kling. Maybe you know of Awesome Kling on the internet. Maybe you've heard of Serenity OS. Maybe you've heard of Lady Bird. Maybe you haven't, but we're here to hear about all those things and more. Welcome to the show, Andreas. Well, thank you.
Starting point is 00:05:04 This is a listener request, anonymous. They would like to remain anonymous. But I have to say, probably not even the first time somebody said, please talk to Andreas about SerenityOS on the podcast. So a couple of our listeners have been begging, dying for this particular episode. So your reputation precedes you. I'm just taken aback by what you've taken on. I think Adam and I both agree with this. We were talking about this conversation yesterday
Starting point is 00:05:30 and we were both kind of like, wow, an operating system and a web browser that runs on set operating system. I'm assuming that's a lot to take on. Like why? I think Adam, I'm stealing your question. You're like, what I want to ask him is why? And was like dang it I wanted to ask him that too so we both are asking you why why are you doing this right uh well it's a long and complicated story but um I used to work on web browsers at Apple for many years and at one point I quit and I didn't really know what I was going to do with my life. And I ended up doing drugs with my life. And that was not a very good life. And eventually led to me going to a rehab program.
Starting point is 00:06:15 And when I came out of there, I found myself with so much time. Because when you do drugs, they tend to take up all your time and then you stop doing them. And then suddenly you have nothing but time. And it's really, really strange how many hours there are in a day when I'd never thought about that before, but I really felt it then. And I wanted to just find something to fill my days with. And I kind of tried a bunch of different things. Like I tried to go to a literature class and I wanted to learn some new profession, but I just ended up programming after a while. And I kind of started skipping my English literature classes actually, because I was working on programming stuff instead.
Starting point is 00:06:58 And yeah, it just quickly fell back into programming, which I had always loved. I had a couple of things that I always wanted to do as a programmer, but never really like engaged with properly. And one of them was building my own operating system. Because I think that's one of those things that everybody who programs at some point, at least thinks, well, what if I made all this stuff myself? Like, how would that be like, wouldn't it be cool if like my computer had my operating system? I don't know. It's just like an idle daydream. I think everybody has at one point.
Starting point is 00:07:32 And I was really just so desperate for something to fill up all my time. It's hard to explain if for people who haven't been in that situation. But suddenly, like building an operating system seemed like maybe that would take up some of that time um yeah lots of it probably yeah so i just kind of started poking at it and i didn't feel inhibited by the hugeness of the task in a way that you normally would and it became kind of a therapeutic project to keep me busy and keep my mind off of falling back into drug habits and just do something wholesome with my time. And it was just me hacking away in a little cabin by myself that I had, I had rented a little place outside of town for a while just to
Starting point is 00:08:20 have somewhere to stay, give everybody a break from myself, and just sitting there working on this. And after about six months or so, I made a little video about it, because that was when my rental agreement ran out on that cabin. And I thought, okay, well, I got to leave this place where I've built this thing, I'll make a little video commemorating what I managed to do. And I posted that video to YouTube. And I think the next day, somebody had posted it to Hacker News. And people were, I guess, impressed with the level of detail I had managed
Starting point is 00:08:57 to squeeze into this little thing in a fairly short time. Looking back on it now, it's like incredibly primitive. But of course, at the time, it didn't feel that way. It felt like an amazing thing because it had a GUI and networking and could log on to IRC and chat with people and stuff. And that was interesting, because it kind of showed me that there are lots of people out there who think this is fun and interesting and they might like to help out. And sure enough, people started making pull requests to my GitHub project. I think the very first pull request I got was somebody adding a script to build the system because when it was first published, there was no way to build it.
Starting point is 00:09:45 It was just like a big source code dump for my home directory. So, you know, overnight, I got a couple of thousand people seeing the system and learning about it on Hacker News and people wanting to try it and there was no way to do that. So I felt a little bit silly, but I just wasn't prepared for the visitors. Anyway, that's sort of where the whole thing began. And then slowly but surely, a community formed around the project, and it's been growing ever since. We went from just by myself at first, and then like 10 people or so over the next couple of weeks. And then more and more people kept joining. And today we are, it's hard to measure, but we have over 900 contributors on GitHub. And on our Discord server, there's, I think, over 8000 people
Starting point is 00:10:33 hanging out. Of course, not all of them active, but it still gives you a sense of the scale. And yeah, that's kind of what happened. And it started as a therapeutic thing for me, right? Like just as a way to keep myself busy. And I really love that aspect of it. And I wanted to give all the people who come to the project, I want to give them like a chance to make it something like that for themselves. Like maybe not necessarily exactly what I have, but just some kind of playground or a place and a space to
Starting point is 00:11:06 engage their curiosity about programming. So I always encourage people to implement something that they would like to know how it works, or just mess around with some kind of software that you don't know anything about. So we've had people implement like TLS and different compression algorithms. We have JPEG decoders and encoders and stuff like that. Somebody made a spreadsheet and there's just all kinds of stuff. And of course within all kinds of stuff you eventually also find a web browser which I guess is sort of the the second part of the greater story. Because at some point, I didn't really want to make a web browser for the longest time.
Starting point is 00:11:53 People kept asking me that because they knew my background in working on browsers at Apple. So people kept asking me on YouTube and on IRC, like, hey, are you going to build a browser for Serenity OS? Like, you know how to do it, right? So why don't you just do it? And I always just told them, I spent so many years working on browsers. I don't want to do that again. Like, do something new here. Like, give me a break.
Starting point is 00:12:12 But at some point I thought, you know what? All the texts that we have in Serenity OS is kind of single typeface, single font, single style. And there's no way to have rich text. And wouldn't it be nice if you could display rich text, you know, with bold and italic and stuff like that? And yeah, we should probably have a rich text widget of some type so you can display that. And what's a good internal storage format for rich text?
Starting point is 00:12:38 Well, why not HTML? Like that's rich text. And I just started hacking together a very simple little HTML display widget. And then I got a little bit like bitten by a bug while doing that. And I just kept adding stuff to it. So I eventually had like a CSS engine and then it gained like network loading capabilities.
Starting point is 00:13:01 And it just spiraled very quickly. And now it supports Intersection Observer, which I just learned from your recent. Now it supports Intersection Observer, which I just learned from your recent update. Wow, Intersection Observer. So you're getting to the most minute web APIs at this point. You're going for them all now. Yeah, but really, for a long time, I genuinely
Starting point is 00:13:17 believed I was not building a browser. I was just trying to make a rich text widget. Very competent rich text widget, but still, it wasn't a browser. And I think the way that I convinced myself that it wasn't a browser for a long time was that we didn't have JavaScript. So I kept saying like, no, no, no, it's not a browser because then it would have JavaScript. And then for whatever reason, and I think in March of 2020, I just started making a JavaScript engine for it because it seemed like it would be fun to do that. I started building the thing in a YouTube video.
Starting point is 00:13:50 So this whole time I was making random YouTube videos of just programming the system. And the one where I started just building a JavaScript engine from nothing ended up being like a crowd favorite, basically, because people saw that and they thought, wait, this looks like something you can just do. Like I could do this. And a lot of people just joined in to help out. So I got many pull requests just after that first video, people adding new operators to the language and implementing various APIs that you have in JavaScript.
Starting point is 00:14:22 Like very quickly, the community just kind of attached itself to this new thing I started doing. And that has been a theme in Serenity OS in general, that somebody starts building something, a little corner, and then people take notice, and then they just gang up on that and help out. And it's kind of magical when you see it, because you think that these things are going to take a long time or they're not going to happen. And then you just need that spark that lights the fire and then the people come and fuel it. And yeah, that's kind of what happened with JavaScript. And then at this point, it was hard to not admit that it's a browser.
Starting point is 00:15:03 It has the JavaScript engine in there. Is it or is it not a browser. So it has the JavaScript engine in there. Is it or is it not a browser.com? Yeah. It's not building a browser. But even still, even still, it was only runnable on Serenity OS and it stayed that way for a very long time. So in order to work on it, you had to work on the code on your host operating system and then boot into Serenity OS in a virtual machine just to run the browser, which was pretty cumbersome. But we worked on it that way for years
Starting point is 00:15:30 until last year when I thought it would be kind of cool to have a shell for this thing on Linux so I don't have to boot into the virtual machine every time. And somebody had already ported the web engine library in the JavaScript engine to Linux. So all we were missing was just like a graphical shell for it. We had a simple headless browser command, which let you like you gave it a URL, and it would render the URL as a PNG. And at that point, it's like, you almost have a browser, you just need the GUI with the buttons and the stuff. So I built that. And then suddenly, that's was the start of Ladybird, which is now today, sort of the name for the whole greater browser project that came out of this. And it's been a weird evolution. But in some ways, it seems like I started building the operating system just so that I could eventually build a browser again. So I could go back to being a browser hacker
Starting point is 00:16:30 because that's what I just naturally want to be. And that's what happened. And now I'm just working on browsers all day again. And it's great. Full circle. How do you install this? Like what can you install this on? Do you have to like build it on top of Linux or do you have to build it in this virtual machine does it run on a Raspberry Pi help me understand
Starting point is 00:16:50 like how I can get to an environment right so depends on what you want to run do you want to run Serenity OS or the Lady Bird
Starting point is 00:16:56 browser if you want to run the whole operating system OS I want the whole kit and caboodle I want it all
Starting point is 00:17:01 yeah the whole thing that you can build on Mac OS or Linux at the moment, and probably on Windows if you have WSL. And you check out the repository on GitHub, and then we have a build script that just takes care of everything for you. So you essentially run one command, and it takes a while. But once it's finished, it will spawn a virtual machine with the system running in it. So very, very little required from you. And really, it's slow the first time you build it because we have to build a custom compiler for the system the very first time.
Starting point is 00:17:36 So that ends up taking a bit of time. But if you have a modern computer, it takes maybe like 20 minutes or something. Does it only run in the VM then? Or is it meant to be a host operating system? I mostly run it in a VM. Some people are really into running on hardware. So we have a sort of a sub-community that focuses on bare metal.
Starting point is 00:17:56 That's me. That's why I'm asking this. Because I'm like, before I have more questions, I want to know how I install and play with it. So I don't see any ISOs to download. So I'm like, how do I get there? Do I i have to build this why do i have to build it why can't you just give me isos kind of thing you gotta be hardcore yeah you have to build it because we can't boot from an iso at the moment and it's not something that we've really focused on and
Starting point is 00:18:19 from early on we've tried to kind of have a little bit of a barrier to entry to keep tire kickers and sort of people who are likely to make more noise than contribution. Just keep them at bay a little bit because... The freeloaders. I'm just kidding. That was the tongue in cheek to some real stuff. I don't know, Adam, could you make more noise than contribution? No, I just, I've been in open source and the open source world since, I don't know, however long, like for the last 20 years.
Starting point is 00:18:50 And I'm very familiar with the people that come and kick your tires. And I think when I set up this project, I was just a little bit tired of that and I didn't want that type of energy. So I thought, what if I just say you have to build it yourself? Okay. My hypothesis was this would keep out 90% of annoying people. Not me just say you have to build it yourself okay my hypothesis was this would keep out 90 of annoying people not me i'm gonna try it i'm gonna build it like distro hoppers kind of people they're just like i want to just try out a new disc like they think of it like a
Starting point is 00:19:14 new linux distro yeah exactly exactly yeah and but it's it's always been a hard thing to convey that in a friendly way because it's not meant to be like elitist or anything like that. It's just to keep our environment where we communicate with each other, like keep that focused on development instead of helping people who are just like kind of casually interested. That was definitely an issue on our old IRC channel that we had in the past that people would just come in and dominate the conversation for half an hour with their build issues. And nowadays it's less of an issue, but we still don't have the ISO.
Starting point is 00:19:57 I think, honestly, if somebody wanted to just add an ISO and add a build procedure for producing these kinds of things, I wouldn't mind if somebody did that. It's just nobody has stepped up to do it because in our community, people just work on what they're interested in. That's, um, we don't have any like shared plans or goals or anything. Everybody is invited to make their own plans, make their own goals. And because of that focus tends to be kind of flaky a little bit, but overall it's still seems to work out just,. Just things that you might expect in a system that's been around for this long might not be there because nobody thought they
Starting point is 00:20:30 were interesting. Those questions kind of come back to the why, because your why of why it exists is different than the why that it exists. You know, like what does SerenityOS accomplish is different than the why that you made it you know so your why is this therapeutic outlet the obvious trauma in your life that you know you had to recover from and thank god you did but now Serenity OS has a different why and so my question was the ISOs because like hey I want to check this thing out can I can I put it on some simple hardware like a raspberry pi or just something pi-like because there's lots of orange Pis and you've got Zumba boards out there. You've got lots of little things you could do to allow tinkerers to sort of play in your sandbox.
Starting point is 00:21:15 And the why of Servered iOS might elicit that. Yeah, sorry. I got lost in the details. That's okay. No, to answer to your question, we have an ongoing port to 64-bit ARM architecture, but it's not super stable yet.
Starting point is 00:21:32 We can boot into the GUI desktop and I think some people... I've seen video of people booting it on Raspberry Pi, but not all the way to a usable GUI. I think one of the blockers is that we can't take keyboard input on those machines yet
Starting point is 00:21:47 because we don't support the USB controllers. So there's some stuff there to implement. So if somebody out there wants to learn how to support USB controllers on a Raspberry Pi, they can go to SerenityOS as an outlet to enable to be the
Starting point is 00:22:03 proving ground to hack on right absolutely yeah i mean that's that's what that's kind of what this exists for is like yeah just to tinker it's not meant to be while it can be a graphical user interface that pays homage to the old 90 days that gives us that you know some of us that are in our 30s and 40s that nostalgic feel of the younger generation 20s is probably not gonna get that that. Nostalgically, they'll see it as, you know, I don't know, just something to play with. But that kind of gives us a chance to go back into that era of a GUI. But it's a playground.
Starting point is 00:22:35 It's not meant to be. Well, it can be, but it's not meant to be a daily driver. Like you're not going to use it as your host OS, the daily driver. It's meant to be a playground to explore and to tinker and to commune with other folks that have similar interests. Yeah, I agree with that for the most part. It seems like it. I'm not saying that's what it is. It seems like it based on your description.
Starting point is 00:22:55 Yeah, no, no. I think that's basically how most people engage with it. And I'm really happy that it can be that for people. But for me personally, I do have a very long-term goal of using it as a daily driver. So I do tend to just focus on working on things that I want to use. So that's kind of how I ended up motivating myself to build a browser also. Because if you're serious about building a daily driver, you're going to need a browser. Because daily driving happens in the browser.
Starting point is 00:23:28 This is a weird thing, but I get into a lot of arguments with people about this because I keep insisting that an operating system today includes a browser. You can't have an operating system without a browser because nobody would ever use that. Then there are purists who say that an operating system is just a kernel or just a kernel on a command line or whatever.
Starting point is 00:23:45 Well, a GUI OS, I think, requires a browser. A headless OS, like Linux, is used in most cases, does not necessarily require a browser. Yeah, fair enough. Fair enough. So it depends on what you're using it for. Yeah. The important qualifier. You're right.
Starting point is 00:24:01 But I can see where you might say, well, where do you draw the line? Where does an operating system end and client applications begin? You could definitely bike shed the definition of that. But I think, and maybe you don't want to be a competitive operating system, but if you wanted to have people use you
Starting point is 00:24:18 as a daily driver, you have to at least provide access to a web browser. Maybe it's not part of the OS, but it has to be an app getaway, or I don't think there's a package manager. Maybe there is, but like it has to be installable, available, hopefully. I mean, right there, pre-installed. I mean, most OSs today, even look at the newer OSs, like iOS comes with a browser. That's a new operating system in terms of OSs. Android comes with a browser. So it's got operating system in terms of OSs. Yeah. Android comes with a browser.
Starting point is 00:24:45 So, it's got to be available. You probably can't apt-get anything. You probably can't RPM. You probably can't brew install. Well, we do have a
Starting point is 00:24:54 ports system. So, we have, I think, a couple of hundred packages ported to the system at this point. Although,
Starting point is 00:25:01 no graphical browser. We have a couple of text browsers. But, the system doesn't come with any third party software. That's kind of part of the whole spirit is that we just insist on building everything ourselves to the point of stubbornness, just because it's fun and because it's challenging, right? So we have a lot of stuff that we do that's incomplete or not very fast or just missing entirely, just waiting for somebody to add it.
Starting point is 00:25:29 But that's just kind of adds to the charm of the system. I think that there's just this endless supply of tasks that somebody could find and engage with. There's always a reason to join the project. Like we get new people joining all the time, picking up super basic stuff to work on. And people ask me, like, how do you recommend getting into this? Like, what should I do to contribute? And I always tell them, just mess around with the system until you find something that's missing or something that bugs
Starting point is 00:25:54 you. And then try to do that. And that's worked out beautifully, because everybody finds like their own angle. And nobody ever picks the same thing as somebody else i think a couple of days ago we had the first time ever that we had two pull requests solving the same thing and that had never happened before and we've had like thousands of pull requests was it a bug or was like a missing feature i think it was a bug like you would do some interaction in the spreadsheet application and then it would crash and then two people independently discovered that and fixed it well you're hitting critical mass at that point you know that's right double the bugs two people using the same part of the system that's huge i was trying to think about an analogy though i was trying to think like what if you stayed in
Starting point is 00:26:35 the bed and breakfast and when you went there they like didn't have your bedroom so you had to build it you know right or like in daily driver mode or like a coffee table yeah right or like a home it's like well i gotta go to the bathroom but there is no bathroom so i suppose i should or in daily driver mode. Or like a coffee table. Right, or like a home. It's like, well, I've got to go to the bathroom, but there is no bathroom. So I suppose I should build the bathroom. It's kind of like that. I try to think of some sort of analogy of just-in-time need.
Starting point is 00:26:55 Right. So far we haven't needed a bathroom, but apparently you need one, so I'll build it. Let's work on that. Yeah. I mean, in part it's because it's fun that we're set up this way, but it's also heavily inspired by my background at Apple because while working there, I just worked on browser performance, but it was so convenient to have all the experts on everything,
Starting point is 00:27:19 just all gathered in one place. And whatever issue I had anywhere in the stack at Apple, like somewhere in Mac OS, there was something making Safari slow, I could go and find the expert, he was probably like, in the next building, at worst, maybe two buildings away. And that kind of environment doesn't really exist in open source, I feel, at least not on the sort of macro scale where you have an entire desktop and then it's built in a cohesive way by a team that all communicate with each other and have take the pros and the cons of that and try to build kind of a very high accountability culture, I guess, where whatever goes wrong, the person responsible is somewhere in our community.
Starting point is 00:28:16 Like, you can never point a finger outside. And really, that has ended up working really well as well. The only time fingers ever do get pointed is somebody pointing either at the compiler or at the virtual machine that we're using. We have found bugs both in compilers and VMs, but those are rare. 99% of the time, of course, it's our own fault.
Starting point is 00:28:37 You didn't write the compiler, did you? This is off the shelf. What are you using? What's your tech on? Yeah, we're using GCC and Clang, so just standard open source compilers. We do also have our own language in the works, but it's not yet mature to the point where we're using it for the system.
Starting point is 00:28:55 But a little over a year ago, I started working on a new language after kind of getting frustrated with C++ because I felt that other languages were making progress on memory safety, like Rust and Swift and these other modern languages. And C++ was not really moving forward on that particular issue as fast as I would like. And I teamed up with one of the Rust core team folks,
Starting point is 00:29:24 my friend JT, and we put together a simple memory-safe language that transpiles to C++. So you would write code in this sort of limited language that's memory-safe and then generate C++ from that, and then it would just fit into our existing C++ system. That was sort of the theory. So in practice, it's turned out it takes a long time
Starting point is 00:29:48 to get this working just right. So we haven't integrated it into the system yet, but it is being worked on. And it's an interesting area. Does it have a name? Yes, it's called Jakt, which is J-A-K-T. That's Swedish for hunt, as in the hunt for a better programming language I guess
Starting point is 00:30:08 okay yeah I like it and then it turned out that I didn't know it when we started working on that but it turned out that there were multiple similar efforts going on at the same time so Google had a
Starting point is 00:30:23 carbon language that works much in the same way that they transpiled to C++. And one of the C++ standards committee folks, Herb Sutter, he was working on CPP2, which also works in the same way transpiles to C++. So it seems like we kind of, I don't know, joined some frustrated with C++ zeitgeist moment there. And I'm still interested to see how that pans out. Because as I said,
Starting point is 00:30:54 like I want to build something to use every day as my daily driver. And it seems sad to build something that is not safe that has like all the classic memory safety issues and all those C language family bugs and just dealing with those for the next 30 years. Just, I don't know, it doesn't sound appealing. So I need an escape hatch out of that timeline. And why not Rust then? Why not just? Right. So that's a question that I get fairly often. So we actually evaluated Rust for a couple of weeks, and I prototyped parts of SerenityOS in Rust. And I just ended up not liking how Rust has taken sort of a stance against object-oriented programming.
Starting point is 00:31:37 And our operating system is like heavily object-oriented. It's just written in this classical GUI programming style because it's a classical GUI operating system, as you can see from the way it looks. And that particular paradigm of programming is kind of, well, I don't know what word to use, maybe shunned by the Rust language creators. They seem to have something very much against that way of programming,
Starting point is 00:32:02 so they don't make it easy to write those types of programs in Rust. Yeah, in particular, like virtual dispatch and inheritance hierarchies where you can create like a generic widget and then a button is a widget and these kinds of things, right? Those are very cumbersome to express in Rust. And that just became frustrating to me when we were trying
Starting point is 00:32:25 to prototype stuff. And then I just thought, I mean, we're doing everything else ourselves. What's the language? How hard can it be? Right? Yeah. How hard can it be? Here's what seems hard to me is, you know, it's 2023. You wake up in the morning. There's SerenityOS. There's Ladybird. There's Yoct. What do you work on and why? Like, how do you decide what to do? You got like three, at least three, maybe there's more you haven't told us about, major things in the works. Yeah.
Starting point is 00:32:54 So lately I work on Ladybird, so the browser, and that's sort of become my focus over the last couple of months. I think for many reasons, but one is that I started seeing that we're making really good progress on it. We're able now to render real websites with not perfect fidelity, but getting better and better. And we're able to run complex JavaScript and stuff. I don't know. It's just starting to feel like it could become a real browser.
Starting point is 00:33:25 I watched you render apple.com and your demo. Yeah. And I thought, that's a pretty complicated website. Yeah, it really is. And they use a lot of technology to make a really slick website, you know? Yeah. And, you know, we lag when you load it and there are little hiccups and glitches. But for the most part, we do get it right.
Starting point is 00:33:43 And there's a million things that we need to improve. But I started seeing that we could actually build something here that could be useful to people, like not just fun to work on, but also useful. And as much as I love working on an operating system and building that with my friends, the idea of making something that could be useful to others is very appealing. And I don't even know in what way it would be useful, like in what the application would be or whatever. But I think there is a lack of independent browsers,
Starting point is 00:34:21 independent browser engines. Nobody wants to build browser engines anymore. Everybody just wants to package Chromium. And you look at what happened with Microsoft, they gave up on their engine, switched to using Chromium. Opera, they used to have their own engine, they gave up on that switch to using Chromium. So you got these big players with essentially infinite money for these intents and purposes, and they just give up. And they don't want to do it. And I think that's really sad.
Starting point is 00:34:51 So in some way, it's kind of up to hackers and enthusiasts to build new engines if we want to see new engines. So I think there's a space for us here to do that. And even though it started with me just wanting to have a rich text display widget, now why not go all the way and just build a browser engine that people could use for something? And yeah, it turns out this kind of resonates with a lot of people. So over the last couple of months, I've been reaching out to some folks and asking if they want to fund Ladybird development and kind of accelerate our progress. And I was able to get some quite big
Starting point is 00:35:34 support from Shopify, for example, they signed up to sponsor our project and had a German real estate website called One Makler, which gave us a nice sponsorship as well, just for making their website work in Lady Bird. What does Shopify see in the project? Or like, you know, what would incentivize them to do that? So according to Toby, the CEO, he is really into more web engines, like just diversity of engines. And we talked briefly about that. And he kind of sees it the same way that I do that it's sad that everybody's consolidating on Chromium. And we need more, more is better, more is always better. And there was another guy inside Shopify
Starting point is 00:36:20 named Mike Shaver, who kind of started standing up for this as well during while I was in contact with them. And he's one of the original founders of Mozilla. Back when they started, I think he was one of the first people there. And, and then I also got some large sponsorships from people who wanted to be anonymous as well. So I wish I could tell you who they are. But maybe, maybe someday I will. What's up, friends, I'm here with jeremy tanner devro at tailscale and i've been using tailscale for the past i want to say the last year and i consider critical home lab infrastructure for me as you may know i'm a home labber so that means i take pride in a solid home network wi-fi services that make the home run home assistant for for automation, lighting. And of course, I run
Starting point is 00:37:26 PiHole to block ads at the network level and to protect my family from ad tracking. And PiHole has this web UI that you can access from the land. But for a while there, I just didn't have access to this service or other services like Portainer or just anything else that had a web UI or something I would access via IP on the local area network. But Jeremy, tell me about a world where via Tailscale, you can access Piehole, Portainer, or any of these other services you might run in your home lab and access it externally from a local area network. Yeah, you hit it when you said anything, anything and from anywhere. And so Piehole being a DNS black hole.
Starting point is 00:38:05 If you notice the difference between the comfy experience that you had at home and when you were out of your house, whether it was for work, a coffee shop or even on your mobile devices, the being able to set up a tail scale on your mobile device and have access to the same pie hole and filtering rules that you do at home wherever you have an internet connection is a thing. Same thing when talking about streaming, instead of exposing your network storage to the internet and getting that ransomware, keeping that on your private network, but extending the private network to any device that can run the client. And so having, um, anything that can run the client includes your Steam Deck. That's just a Linux box with, uh, the controllers grafted onto the sides of it. And so if you're somewhere that has internet connection and wants to watch some of your video, plug it up to a large TV. And if you're in a hotel room, use that as your, uh, as your media center, that's playing the, uh, the shows that you're trying to catch
Starting point is 00:39:05 up on from home instead of whatever hotel TV has on it. Instead of buying a service or paying a small monthly subscription, you have compute and storage at home. It's just an easy way to get back to those instead of usually inventing a bunch of things that you'd love to do. But those sorts of things become accessible to you on your phone while you're outside the house, instead of something that's neat to use, but then you miss while you're away. Yeah, for sure.
Starting point is 00:39:33 You know, I run Plex, so I'm in big agreement with that, of course. But just being able to do what you can do with TLS scale is so cool. Without having to learn all the VPN things, it's just such an easy tool to use, easy tool to install on anything, really Linux, Windows, Mac, so easy to use. Big, big fan of Tailscale. And for my Homelab users out there, you can totally use Tailscale 100% for free.
Starting point is 00:39:58 You get three users up to 100 devices, which is like way more devices than I think I would ever need to use Tailscale on. The free forever tier is amazing and a great place to start, and especially to use it for your home lab needs alone. Check them out at changelog.com slash tailscale. The free forever tier is waiting for you to try it out. Again, changelog.com slash tailscale.
Starting point is 00:40:22 And make sure you tell them your friends at ChangeLog sent you. What was the sadness mentioned from Toby or for you? I get that more is better, but why does the world need more browser engines? What's the permutations of how that negatively or positively affects, I guess, the web? Well, I'll give you a concrete example. So when I logged in to the studio to chat with you two, it said you have to use a Chromium-based browser because I tried to log in with Firefox at first and it wouldn't let me. And I think this is exactly what happens
Starting point is 00:41:20 when you have kind of a monoculture develop around a single engine. Because as we saw a couple of decades ago with Internet Explorer, that people just started targeting a single engine because it was dominant in the browser marketplace. You eventually get into a position where that browser just decides what the web is. And I think we're kind of heading towards that a little bit. We still do have Apple pushing against Google with Safari. Like if Safari says no to something, they still control a fair bit of, especially the mobile browser market.
Starting point is 00:41:57 But on the desktop, Chrome is so dominant that websites are now getting brazen enough to say like, well, you need Chrome to use this. And I think that is not a good state of the platform. And it's something that we do need to steer away from so that the web can be, I guess, like more democratically controlled, or at least have more than a single implementation so that you have. It's kind of warding off the the typical monopoly drawbacks right like if you get to a monoculture right the incentives to improve i mean this was the
Starting point is 00:42:31 internet explorer problem that we lived through and really firefox helped bust that thing up and have something else that you had to also pay attention to and caused Microsoft to innovate, et cetera, to catch up and all the things. Typical monopoly things is like, well, what we say goes because we're the only one that matters here. And as we've made Chromium the dominant platform, we being the world, I guess, of users who decided to install it, we see Google doing things inside of chrome that are not in the user's best interest some are some aren't and you can argue about the individual things but like you just don't want that to be the only thing that matters because then there's no checks or balances so i think
Starting point is 00:43:17 it's cool that ladybird is like the is like an opportunity to escape the serendios and like become like this more generally used piece of software that you don't have to be a OS hacker or tinkerer or even a distro hopper. Eventually, if you deliver on it, just a person who wants a browser that aligns with their
Starting point is 00:43:37 tastes or desires. Why we pick browsers in the first place. It's pretty cool that you built this hesitantly. You weren't building a web browser. I mean, you kept saying it was not a web browser, you know, for yourself to use and your friends. And it may eventually be, you know, more important than Serenity in the first place. That could be kind of a cool turn of events, you know?
Starting point is 00:44:03 Yeah, I guess so. One thing that we already have heard from folks who are doing web standards is that they appreciate what we're doing because we are putting their standards to the test because it's been a long time since anybody picked up the web standard specifications and tried to actually implement them from scratch. Oh, I see. And we've certainly found many issues that just don't come
Starting point is 00:44:26 up if somebody is just working on like an existing mature implementation but us having to do everything from scratch we kind of discover missing things and inconsistencies and stuff so that's something that we're engaging with more and more just the standards community and trying to help improve the standards just to i guess guess, like, leave them better than we found them in a way and help make it possible for other browser engines to come up as well. And I should mention there is the servo browser engine effort as well, which started inside Mozilla, but eventually they, I think, laid off everybody working on that, which was pretty sad. But now, earlier this year, it started up again because the Egalia, the Spanish co-op
Starting point is 00:45:14 company, they signed on a bunch of full-time people to work on Servo, like pick it up and bootstrap the community again. And I think that's fantastic to see that effort continue and get revived. So it looks like we might have two new browser engines coming up in a space where there was very little new activity for a long time. Isn't a browser engine similar to the way Linux is used, though? I mean, itself, Linux has a kernel, there's many flavors, many distros.
Starting point is 00:45:43 Chromium is open source. I'm still not sure I understand why it's such an issue that we only have one dominant. Chromium is open source, but it's effectively controlled by the hundreds of Google full-time engineers who work on it. Yes, they let other people in, but it's ultimately Google who decides what goes in the Chrome browser.
Starting point is 00:46:05 They have just a way bigger power than anybody else over what happens over there. And some of the downstream consumers of Chromium are better about pushing back or removing some of Google's things. I know Brave in particular, they do change and tweak quite a lot of things about Chromium before giving you Brave. But even so, like at the core of it, there's still the completely or not completely, but there's still the Google controlled Chromium engine. And I think just like we don't want to have every car have the same engine, because that wouldn't be fun. And in the same way, we don't want to have every browser have the same engine. Does having many engines mean repeating?
Starting point is 00:46:49 Like multiple JavaScript engines, you know, that kind of thing. Wouldn't that produce more bugs potentially or, you know, more breakpoints for the web? I think the one issue with the web as it's trended up, obviously, like the internet has, it is the web. But, you know, specifically like web apps web browsers you know websites apple.com even you know like we've been able to like i recall days when it was like just super super challenging to
Starting point is 00:47:16 build for the web because it was the early days you know when there was bugs everywhere multiple browsers and that was like wouldn't that just produce more breakpoints to make the job of a developer that's already hard even harder because there's more diversity in engines to produce more bugs and more breakpoints? That's a really good question. So it's funny because in the last couple of days, I've been messing around with 1997 era browsers.
Starting point is 00:47:43 So I got IE4 and Netscape 4 on my computer. And then I've been just doing web dev as if it's 1997, just to amuse myself. And it's exactly like you say, it's impossible to get them to run the same scripts because they were so different. And it was just a totally different time in the browser world where they were just aggressively pursuing what they thought would be sweet features. So Netscape thought, oh, like dynamic content should work in this way. And they just added their own elements for that and their own APIs and their own ways of doing it.
Starting point is 00:48:18 And then IE came along and they had some other ideas and they added that. And I don't know if you did web dev back in the 90s. I was just a kid, but I would... 2000s. 2000s, okay. 2000s plus, yeah. So I had my first homepage, I think, in 96 or 97, and I definitely remember copy-pasting sweet JavaScript snippets.
Starting point is 00:48:40 And they very often had these big if statements where it was like, detect N where it was like detect Netscape 4, detect Netscape 3, detect IE, detect Mosaic. Like everything had to be built in that way. But to your question, today, standardization has come so far that there's a much, much greater consistency and interoperability between engines. And standards have become really, really good compared to the way they used to be. And that's actually one of the big things I would credit with our ability to even build Ladybird is
Starting point is 00:49:09 that standards have gotten so good that you can sit down and implement them. Whereas, you know, 10 years ago, you would read the standard and then you would try to figure out what browsers are actually doing. And then you would do kind of somewhere in between those things. But today, standards are fantastic. And there's millions of tests written by the people who make the standards and people who work on browsers. And there's even a shared effort between browser vendors called the web platform tests, where I forget how many tests exactly, but it's over a million tests, which are just unit tests. It's sort of you can use to verify that you are interoperable with the way other browsers behave. And we don't, we haven't even begun to run that test suite properly yet because we can only run
Starting point is 00:49:54 parts of it. But given that it exists, I'm reasonably confident that if we can get to a point where we pass all those tests, or at least as many tests as other engines do, then you could argue that we are compatible, as far as you can measure, at least, with one or more other browsers. And yeah, in the past, I would have totally agreed. More implementations means more chances for bugs. But today, it's so much easier to verify that your implementation is correct,
Starting point is 00:50:22 or at least, if not correct, then still compatible because correct is kind of a flexible concept in the browser world. Yeah. So because web standards are so strong and so well documented and so vetted out, there's room for multiple engines because, and then you can only support X standards because I'm sure you don't support all the standards
Starting point is 00:50:41 as you mentioned already, right? So you can have a grid similar to I can use, for example. Which do I support? Do I support these features or those features or these standards? It's similar to that. Because the standards are so strong, that's why you're advocating for more engines.
Starting point is 00:50:58 Yeah, that's a good way of putting it. And I think more engines also means that the standards can become stronger because more engines verify that the standards actually live up to their name, that they actually deliver on describing exactly how something should work. And yeah, it seems to be working so far. But at the same time, I don't want to pretend like we support all of these features because we do have
Starting point is 00:51:25 a lot of partial implementations. It's hard to say that, oh, I support CSS Flexbox, because Flexbox has a lot of interesting peculiarities and edge cases. But it's much easier when you take the total battery of tests from the web platform tests that cover Flexbox. And then you can say like, Oh, I support 89% of those tests. Right. And we don't have a way to produce that number yet. So it'll be interesting when we do. It would be interesting if that was like a, a feature of implementing the standard,
Starting point is 00:51:55 because then that would encourage more engines because you can easily, or in some way standardized the way you would depict what percentage of the standard you support you know yeah it's kind of interesting that we have chromium and webkit and i'm not sure because i'm not from elsewhere in the world but at least here in the states where i live and my experience in life is my choice or my choice as a developer is to build on either those two engines essentially if i wanted to do something. That's what Safari's built on. And everybody else,
Starting point is 00:52:28 as you had said already, has kind of given up and they build on Chromium. What do you got? Gecko. You got Firefox. Well, haven't they given up too?
Starting point is 00:52:34 Pretty sure they're like Chromium, aren't they? No, Gecko's a thing. Gecko's still out there. Gecko lives. Is Firefox built on Gecko
Starting point is 00:52:41 then still yet? Yep. I'm pretty sure. I thought they gave up and went Chromium too. No, Gecko is, or Firefox in general, is very well funded. Is that right? Yeah, they pull in a lot of money
Starting point is 00:52:52 because they still have the Google search deal. So Google is paying handsomely for the privilege of being the default search provider. So of course, I don't know how long that deal will last, but at least for the time being, they are very well-funded. It says right here, Firefox runs on our quantum browser engine built specifically for Firefox,
Starting point is 00:53:12 so we can ensure your data is handled respectfully and kept private. And that's from the Firefox FAQ on Mozilla.org. The question, the FAQ is, is Firefox Chromium-based? Firefox is not based on Chromium, it says.org. The question, the FAQ is, is Firefox Chromium-based? Firefox is not based on Chromium, it says. Yeah. So, okay, I take that back.
Starting point is 00:53:30 Three, we got Quantum, WebKit, Chromium. Sure. So why don't you pick up Quantum then versus... Because he wants to write everything from scratch. Yeah, that's right. I want to write everything from scratch. For fun. Okay, all right.
Starting point is 00:53:44 We're getting to the whys here. We're getting to the whys here. This is the why. What's interesting about it is there's an educational angle at this, I think, which is very valuable for us humans. Those who want to learn how to do these things is how a web browser works is a complicated thing. And if you wanted to learn about it, having a simple web browser, and I'm saying simple in terms of just length of life,
Starting point is 00:54:07 because the longer software lives, the more complex it becomes just by the nature of change. And so my imagination is that Lady Bird is quite a bit simpler than even Firefox, which is an open source thing that you can go and read and look at and probably has masses and masses of deadlines of code and everything else in there over its lifetime.
Starting point is 00:54:28 I'm not saying it's not good software. I'm just saying you could probably learn a lot from Lady Bird just because you could probably grok it better than you could grok. And the same thing probably goes for Serenity. Do you think that's the case, Andreas? Do people come and learn a lot about systems programming, learn a lot about how a web browser works, how an operating system works?
Starting point is 00:54:47 Because what you have is somewhat bespoke and according to your desires, so maybe not full-fledged, but you have a kernel and a base of applications that don't have thousands and thousands of developers over many, many years and just the legacy code. Yeah, that's absolutely true. Yeah, yeah, yeah. Yeah, I think that's cool.
Starting point is 00:55:11 Yeah, it's one of the big draws for people, I think, is that they get to learn about systems programming and they get to develop themselves as programmers. And one of my weird pleasures in life is seeing people like learn new things and get better i didn't know i had this passion when i started building serenity os but over time i've seen it happen again and again like especially young people come in and they just uh you know have been programming for a couple years and never really worked on anything big and then they come into our project and they engage with these big things and they push themselves and they learn, get really good, really fast. And it's so cool to see, I think. And it's, I don't know, it makes me really excited about the next generation of programmers because I was programming when I was very young, but
Starting point is 00:56:01 information was so scarce back then. And likewise with community, like I didn't have internet access until I was in my early teens, but I was programming long before that. And in terms of books, I had like whatever books I could find at the local library, but they had to be translated to Swedish. So there was that. And nowadays, kids around the world who are interested in programming, they can find infinite reading material and they can find infinite communities who are super excited about programming as well.
Starting point is 00:56:35 And you can really see the difference in just the pace that they learn at these days. It's so cool to me. And to get to sort of provide a space where some of that development happens, that gives me tremendous joy. And yeah, I just love to see that, like young people getting into programming and going berserk with it. So cool. Well, I'm just trying to grok the Gecko versus Quantum thing as we talk here. Just to speak to complexity, I mean, just the Wikipedia page about how Quantum is a new project that encompasses Gecko
Starting point is 00:57:10 plus a CSS thing, some servo stuff. And it's like, if I was to say, how does a web browser work? And if I was going to go download the Firefox source code, my guess is I'd have a harder time picking up exactly how it works than if I would having downloaded Lady Bird. For sure. And read through it. For sure.
Starting point is 00:57:29 Yeah. And one of the things, I mean, you mentioned sort of accumulating cruft over the years. Yeah. Which no doubt has happened to Firefox and to WebKit and Chromium as well. Although I know, at least I know from experience that WebKit and Chromium have very, very strong sort of continuous refactoring cultures where they aggressively add tests and then they aggressively refactor. Whenever somebody thinks of a better way to do something, they're not afraid to go into this deep refactoring. But even so, a code base that's
Starting point is 00:58:02 decades old is bound to be heavy and clunky. So we do have that advantage. And I think one of the ways that we try to maintain as much of this advantage as possible is that we try to write code that's as close to spec as possible. And that's something that it wasn't obvious to me because from my background in WebKit, in WebKit, not everything is written the same way it says in the spec to do it. Like WebKit happily invents their own things and their own concepts. And I think all the major engines are that way.
Starting point is 00:58:35 Like somebody puts a spec in your hand, they tell you to implement this and you're like, oh, well, I know how I can do this, right? We have been far more meticulous about just sticking to sort of the precise architectures described in specs to the extent possible. And our hope has been that that will make the code easier for new people to work on because you put the spec side by side with the code and it's kind of, here's English, here's C++. You can easily see what maps to what. But also that it will allow us to continue to work on this over a longer period of time because these specs, they're alive.
Starting point is 00:59:14 They have people working on them every day and changing little things here and there, which is really weird when you see it for the first time. These things are not static documents. You load the HTML spec today and then you do it again in two weeks and it's going to be different well that's a that's gonna be frustrating right that's a moving target you're coding it up and all of a sudden it's different and you're like wait a second yeah it's definitely frustrating but it's the nature of the platform is that it's it is a living standard which is nice when you're
Starting point is 00:59:40 you can provide feedback you said you're working with them to a certain degree now yeah right like if you can have a voice there, that kind of makes up for the frustrations of the moving target because you're actually, it's a target that you can influence for the better for the implementers.
Starting point is 00:59:52 Yeah, for sure. For sure. And at least I believe that by sticking as close to spec as possible and trying to track, like when the spec's changed, we try to update our implementation
Starting point is 01:00:02 so it matches. Sometimes it takes a while to catch up, but by doing that, it just makes it easier to stay on top of the situation. Whereas if we would implement a spec once and then just go leave it alone and work on other stuff, it's harder to get synced again in the future when some new feature comes in and then you want to implement that and then the spec talks about all these things that you haven't,
Starting point is 01:00:25 you don't have sort of an architectural equivalent of, if that makes sense. How do you diff that? How do you diff your implementation versus the ever-changing spec? Rationally, like, is it just like a literal diff or do you have to like grok it as a human and then determine and then implement? In practice, you have to grok it as a human.
Starting point is 01:00:44 So that is probably the hardest part of continuous work on a browser engine is that you have to read a lot of specs and sort of internalize how they work, especially when it comes to... It's tedious, man, right? It can be really tedious. Fraught with error or possible error, right?
Starting point is 01:01:02 Yeah, but that's why we have tests. TDM is one of the things that programmers are most used to right i mean yeah yeah well what i'm getting at i suppose the reason why i'm asking this question is not that i suggest you do it but like what if the path to multiple engines was the ease of that diff right like if you didn't have to grok it as a human and read it and discern you know what if what if there was a way to say here's my implementation here's the spec where do they where back to that percentage you know how easy could i programmatically reproduce my adherence to the spec yeah because if you could do that in a programmatic way and you knew
Starting point is 01:01:40 without having to like waste your mental cycles you'd probably like your life better. And two, you might encourage more folks to build more browser engines because it gets a little easier to diff the implementation to the spec. For sure. I don't know what the answer is to that or why they don't work that way. One thing I have heard from somebody who worked on specs
Starting point is 01:02:01 was that they preferred to keep the spec sort of language agnostic to encourage the widest range of implementations. Because if you like the tighter you spec something, the harder it becomes to sort of come up with shortcuts and optimizations and things like that. Because if you like if you hammer it down too tight, then there's no room for cleverness anymore. And I know that it's been a complaint, when some specs have been too strict, and like demanding that certain things happen in a certain order, for example. And then browser vendors complain because they say like, Oh, well, there's this optimization opportunity, if we didn't have to have this specific order, then we could do these things in parallel.
Starting point is 01:02:46 But because of the spec, you're not letting us do that. And I know that has been a complaint, but I don't know. I personally agree with what you're saying. I think it would be better if specs were closer to, like, programming language that you could actually just take and implement. And if you look at JavaScript, the JavaScript specifications are closer to what you described. They have sort of a stricter syntax for their pseudocode.
Starting point is 01:03:13 And in fact, we actually had somebody just this week who's been writing a JavaScript specification parser that reads the JavaScript spec in English and then produces a parse tree. And now we're going to see if we can turn that into a code generator that would just generate the C++ for our browser. Nice. Which would be super cool if that's possible.
Starting point is 01:03:34 Yeah. And I would love to see same capabilities with other specifications, but I don't know why it's not that way. I imagine that there's a reason that they don't want to work that way. So your long-term goal for SerenityOS is to be your own personal daily driver, right? Along the way, tinkering, joy, education, hacker, Ladybird, long-term goal. I mean, 10% global market share. I mean, what are you thinking? Like what would be success for Ladybird? I think success would be if I can give it to my family members who are not programmers and they can do all of their
Starting point is 01:04:11 browsing with it. And it would be no real difference as compared to if they were to use Safari or Firefox or Chrome. And I think it's obviously unrealistic to expect that we could compete on performance with, you know, a trillion dollar funded team of hundreds of engineers at a big tech company, but to build something that has sort of acceptable performance on typical web content that my family members would browse, that to me would be a huge, amazing success. Well, with the increased performance yields from ever better hardware, you know, at a certain point, slow software is less slow than it used to be, you know, maybe just fast enough for the majority of people on the majority of websites to the point where
Starting point is 01:05:03 eking out those performance gains don't matter quite as much as they used to maybe true yeah it's a shame we didn't get those superconductors but yeah i know right it was debunked wasn't it yeah it's not it's not all that it cracked up for a moment there we were all so happy for a moment yeah yeah it was a fun it's an interesting week or two whenever we're all like excited and hopeful but yeah no i think that's sort of the success metric that i have is that it just becomes something that's usable to a non-programmer i like that yeah i think that's achievable you know i think that's still a lot of work definitely where would you say it is like if that if that's 100 like what percentage is it along the path
Starting point is 01:05:45 of a potential roadmap to that? No, that's a great question. I feel like we're at about 20%. So there's a long way to go. More ahead of you than behind you. More ahead than behind. Yeah, yeah. Because the devil's in the details, I think.
Starting point is 01:06:00 And there's going to be like a million little things that we're going to have to get right. And it's easy to paint with the big strokes, right? But to get all the details to look good, you're just going to have to get down in the details and the weeds with a million little spec issues and stuff. And especially go out and test big complex websites. It's going to be issues like,
Starting point is 01:06:21 oh, if I'm halfway through this YouTube video and then I try to seek to be issues like, oh, if I'm halfway through this YouTube video, and then I try to seek to this point in the video, then it doesn't work right. And those kind of things can take a long time to debug, right? Because you have to understand how their player works and how the scripts interact with that. And yeah, I know from experience of working on Safari that those kind of issues end up taking a long time. But I also know that they're perfectly approachable, perfectly solvable issues. They just take time.
Starting point is 01:06:53 I guess I'm hoping that browser developer is not like a magical skill that only some people have, but it's something that it's like a gift I can give to everybody to, if they want to, they can learn browser development by just joining up and participating and doing it until they learn how to do it. Does it currently support the video element? Can you put a video element into the page and have a video play? You can, you can, uh, and we can play VP nine video. So we have Gregory, one of our developers wrote a VP nine codec, so we can play those. And we have video elements, audio elements, but we don't support a lot of video and audio
Starting point is 01:07:33 formats. But we can always add more. It's just, it is hard to implement those things, because it's a lot of math and a lot of tedious work, one might say. But there are some people who just love that type of work. And eventually they find out what we're doing and they'll come implement more video formats and stuff. So it's interesting because it would obviously be a lot easier to go and just take a bunch of third-party code and glue it all together. And we would have a working browser much, much sooner.
Starting point is 01:08:05 But then we would lose something i think we would lose that stubborn amazing feeling of having built this whole thing by ourselves um which is kind of the whole point right yeah you would yeah you missed the forest for the trees yeah you get there faster maybe be better code or software than you're gonna write personally or your you know your community but it's not the point like it's completely missing the point yeah yeah exactly and sometimes like new people join the community and they ask this question like why don't we just take this thing and then somebody explains to them what we're doing and why it's awesome and everybody always always understands. And then they become, become one of us and get it or they're out.
Starting point is 01:08:49 That's right. Okay. Or they're like that. You know what? I like that. That's cool. I'll hack, I'll hack on a VP nine for sure.
Starting point is 01:08:55 Codec. Yeah, no, but we have, we have just, um, just an amazing community of people who are interested in such diverse range of things.
Starting point is 01:09:03 And they just come and work on random stuff that they are interested in. And we patch it together and we make it into an operating system and into a browser. And there's an interesting amount of co-chairing between an operating system and a browser. So there's a great symbiosis or synergy between the two. Because you might think that those are two separate things. But a browser is built on top of a huge stack of operating system libraries. This is just core stuff like inter-process communication and 2D graphics and
Starting point is 01:09:40 loading image formats and fonts and all kinds of stuff. So even though I've been working mostly on browser issues recently, that still ends up benefiting the whole operating system anyway because I'm working on libraries that are used throughout the operating system, which is nice. You've been saying we a few times, or at least most times. Can you quantify, can you extrapolate on maybe Lady Bird in particular Because that's where you're working at currently now I know you mentioned community a few times
Starting point is 01:10:11 But can you express some of the we behind Lady Bird in particular And then maybe Serenity at large Yeah, so we have hundreds of contributors Who have contributed code throughout the years Since we started five years ago. Of course, not everybody's active. But we recently passed 900 individual contributors on GitHub. But I think in an average month, we tend to see code from about 100 people or so make its way into the project. And we all hang out on Discord all day and talk about programming.
Starting point is 01:10:46 And it's a lively, vibrant community of nerds from around the world. And I recently, because of the funding I mentioned earlier from some new browser supporters, I've been able to hire a full-time engineer to, to work on just the browser. Uh, so there's a, there's sort of a, a new form of, we starting to take shape as well, because I'm kind of building a little company and now I'm looking at hiring a second engineer as well. And then we'll see what happens because, you know, money is finite and I don't want to oversubscribe the funds that I do have. But I'm optimistic that I'll be able to provide some jobs for some people at least to work on this stuff. But there are just a lot of different interests among the people who come. Like most people don't want to work on this stuff. But there are just a lot of different interests
Starting point is 01:11:46 among the people who come. Like most people don't want to work on a browser, for example. That's kind of a niche within the SerenityOS community. Most people have some other thing that they want to work on. I just end up talking about the browser a lot because that's what I work on.
Starting point is 01:12:00 But I think like people actively working on Ladybird, that's less than 15, I would think, at least month to month. And then we have tons of people working on random other things. So it's a diverse community. And it's hard to not be because we have such a huge scope of what we're doing, right? We have the operating system with all the different GUI applications. And we have a kernel underneath that with device drivers and all kinds of stuff. And
Starting point is 01:12:29 we have the language and we have the browser. It's a lot. That is a lot. You mentioned company. I mean, cool for you to be able to hire somebody and cool for them to be able to be hired to work on to some degree, a toy, you know, a fun toy for folks to play with and learn. And eventually maybe it becomes something different with a long-term goal. How does a company play into that? To be able to hire somebody? Do you have company goals? How does licensing matter? Will people eventually get rug pulled? I'm just explaining some of the ways that open source transcends as you get
Starting point is 01:13:05 down the line of company and influence which is probably not where you're going but you know right no no my company the company that i have is just a kind of a necessity to be able to pay taxes correctly in sweden where i live so it's not a company that aims to make any kind of product it's more just um a way way for me to pay my dues with the government and do everything the right way. But it also allows me to pay other people to work on stuff, which is a very recent phenomenon. Like for the longest time I was making just enough to scrape by. And this is through GitHub sponsors primarily? Through GitHub sponsors and patreon and
Starting point is 01:13:45 some individual donations as well which is what i've been living off of you know for the the last two years and then when i decided to try fundraising a little bit for ladybird it just turned out to be immediately successful so it kind of changed the the whole uh situation and what was possible for me. So I've just been adapting to this over the last couple of weeks. And it's all very new and very confusing, but pretty cool. And as you say, like, it's super awesome to be able to pay somebody to work on a toy. Yeah. But I'll also like to start to think of it as something that could be more than just a toy, right? Even though it's very far out. And i'm definitely not trying to kid myself about it and get ahead of myself about the current quality and potential of what we're doing but i think if you look at like
Starting point is 01:14:37 ongoing projects that are attempting this we're definitely making more progress than anybody else trying to do it. Next to Servo, they're also quite far ahead, but they just have different goals, different focus than we do. I'd like to imagine that it can become more than a toy. What do you call a non-capitalistic product? Right? I mean, because it is a product.
Starting point is 01:15:02 It is a product. But it's not in the sense that it's capitalistic where you're trying to gain profit yeah necessarily the profit really is the the value to the community to support the project to continue at least in so far as we know of its current state right yeah so it's it's a non-capitalistic product yeah when i was young we called it freeware yeah freeware. I would say it's a gift. Yeah, it's kind of like a gift. Like a good gift, like you put work into it, you put thought into it, you probably put money into it.
Starting point is 01:15:32 Then you give it to somebody. It's a non-capitalistic product. Like here's a product, you take it. And that's really what's going on with open source in this pure form. It's like it's a gift to the world. Yeah, and I personally am a... Well, I was feeling bad for calling it a
Starting point is 01:15:45 toy as well i was trying to trying to give myself some some flex there because i didn't want to necessarily call it a toy because it doesn't sound sounds like you're belittling it to say yeah it sounds like a pejorative like i'm not trying to be kind to it like like it's it's an unkind thing to call it a toy which is not just a toy it's but to say it's an uncapitalistic product is too long-winded. I'm not going to do that. No, a gift is good. But I also think of it as kind of a gift, not just to the potential users,
Starting point is 01:16:14 but it's also all permissively licensed. So all the code is under a BSD license. So if anybody finds anything that they want to use in our code base for any reason, they can just grab it. That's something that I wanted from the very beginning to just make this thing maximally available to anybody who would find it useful. And that was from experience working at companies where I was not allowed to use GPL code. And that was irritating to me. And I don't want to do that to anybody else. Yeah. So engineers at Apple could take Lady Bird, put a nice wrapper around it,
Starting point is 01:16:54 and have their next version of a browser or something. If they wanted to, they would be welcome to. Well, Andreas, anything that we didn't ask you that you were hoping that we would, even waiting around for us to just ask about this or a particular angle into your story or anything that we haven't covered yet today. I don't know. I think it's all good. I hope that I did all right. I feel like I'm up much later than usually. So I hope I wasn't too low energy here.
Starting point is 01:17:23 Well, we apologize for that. We could have flexed on the time we could have gotten you nah it's all good it's all good earlier in the day I felt like you you delivered on all of what I was expecting and yeah very thoughtful very interesting stuff you make me want to go play with it but I'm also kind of afraid to go
Starting point is 01:17:38 play with it because I might just be too newbie and you might get the bug bite you know you might get bitten by the bug I might you know you're quitting the changelog and slinging Serenity OS. Building out a browser or something. I'm just joining Andreas' motley crew of hackers. Come on now. Hey, that'd be a story.
Starting point is 01:17:56 That would be a story. Let's plug some URLs. You got serenityos.org. That's the homepage for SerenityOS.org. That's the homepage for SerenityOS. And then you've got Lady Bird, the browser, which is LadyBird.dev. And then you've also got your sponsors page, which you mentioned. This is how you're at least one of the many legs that you potentially have to gain financial support from the community. And that's at github.com slash sponsors slash awesome cling all that will be in the show notes of course don't have to go there now but i want to verbalize that to really put a pin for
Starting point is 01:18:31 our listeners to say hey if if this is if you find value and support this kind of thing check it out go support it do what you got to do what else did i miss in terms of where they can go you still have the patreon what's the best place to place to sort of concentrate the funding or the donations or the support? So people have different preferences, and I try not to judge, but from my perspective, GitHub sponsors is the preferable because they
Starting point is 01:18:55 take the smallest fees. So if somebody wants to make sure that their gift is maximum impact. And many tiers that you get the monthly obviously, and you get the one times so if you want to give monthly there's five or six
Starting point is 01:19:08 different tiers there or you can do one time everybody knows how GIF sponsors works I'm sure but it's they do make it
Starting point is 01:19:14 pretty easy and I'm glad that they take less fees so that they can support fun non-commercial
Starting point is 01:19:19 non non-capitalistic products like yours the GIFs the GIFs of yours. The GIFs. The GIFs of open source. The GIFs. Yeah. What about my code?
Starting point is 01:19:29 If I want to donate my code, is it just github.com? Is it the Discord? Like, where's the best place to engage with you all in the community and, like, become a Serenity hacker? Right. So the best place to come chat
Starting point is 01:19:41 is on our Discord server, which is at discord.gg slash serenityOS. And if you have code to contribute, then come hang out with us on GitHub as well at github.com slash serenityOS slash serenity. Perfect. That's the easy button. Of course, as Adam said,
Starting point is 01:19:58 we link up everything in the show notes for you all. So you can just click through and get where you want to go. Andreas, thanks for coming on. Appreciate our multiple listeners who asked us to have you on the show. Might not have crossed our paths otherwise, but definitely I'm very interested in this project. I'm especially kind of bullish on Lady Bird and I want to see where you take that to the masses.
Starting point is 01:20:20 10% global market share. That's my goal for the product. How cool would that be? That'd be like the most amazing sorry okay if i i'll go five percent i'll take a five percent but even if it's just our friends and family i'd be happy with that as well but yeah love the project love hearing about it it was it's pretty cool yeah thanks for having me thanks andreas Okay, a good next step is to become a sponsor of Andreas Kling. He can be found at github.com slash sponsors slash awesomekling. We'll link that up in the show notes. So check the show notes for a link.
Starting point is 01:20:57 That makes it easier. So you don't have to memorize my words and put them into a browser. And if you're like me waiting for those ISOs, I guess just keep waiting because it's in VM only mode right now. So, play as you like. Play as you like. Or help them compile some ISOs. Either way, check it out. SerenityOS
Starting point is 01:21:16 and Ladybird linked in the show notes. A massive thank you again to our friends at Fastly, our friends at Fly, and our friends at TypeSense. They've got our back, and we love them. And of course, those beats from Breakmaster Cylinder.
Starting point is 01:21:32 Always love those beats. Breakmaster, you're the beatmaster in residence, and we love you. We got a little bonus here for you Plus Plus members, so stick around. If you're not a Plus Plus subscriber, you can do so at changelog.com you plus plus members so stick around if you're not a plus plus subscriber you could do so at changelog.com slash plus plus 10 bucks a month 100 bucks a year support us
Starting point is 01:21:53 directly drop the ads get a little closer to that cool metal and get bonus content like today once again jared and i will be at strange loop next month. So that's the last one. Make sure you go. If you're not going, check us out. If you're there, say hello. Links are in the show notes to get registered if you're not registered. But if you want to save time, just go to thestrangeloop.com. Big thanks to Alex for working with us to get to that conference. Much love, Alex.
Starting point is 01:22:22 That's it. This show's done. We'll see you very soon.

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