 the way that it, like, spoofed the chat GPT API and, like, fed the responses through. I was like, God, I didn't know it could work that way. I was like, this is brilliant. Hello, everyone. My name is Oliver. I'm joined today by Patrick Kettner, and we're both developer relations engineers on the Google Chrome team. We're joined today by Matt Frisbee. Matt is a Google Developer Expert and author of the book, Building Browser Extensions. Matt, I'm really excited to have you with us today. Yeah. Well, first, thanks for having me on. I'm excited to be here to talk about extensions, a piece of technology that is near and dear to my heart. Yeah, so I published the book, Building Browser Extensions, at the end of last year. It was, it remains the only major title about browser extensions, and we'll get into the reasons why that is. And then my full-time job is I run a startup whose product is a open source and free browser extension. And we'll get into the details of that as well. But it has proved to be both lucrative and very effective in the space that I work in. So, yeah, I do a lot of extension work in a lot of different ways. So is there actually a connection between the book and the startup, or like which one came first? There is a very intimate connection between those two things. So if we rewind about five years ago, I left Google, I used to work here, and I left to start a startup in the cannabis industry focused on compliance tech. Most states have centered upon this one platform, which is called Metric. And so the startup that I started working on, we basically wanted to build a marketplace that directly interacted with this compliance platform metric. And so this was five years ago, and the company ultimately didn't work out. But where extensions kind of come into the fold is that I was the only technical member on the founding team. And so it was put onto me to develop this huge piece of tech to integrate with this compliance platform, which has a public API. It's not very good. It's hard to use. The documentation is not good. And it doesn't actually do everything that you need. And so it is still the case today, five years later, that most of the legal industry in the United States is still using the website as the primary way to use this compliance platform, even though they have an API, because the API cannot do everything. And on top of that, if you want to use the API, it's not open. You have to pass each state that you want to use it in. So right now, I think it's available in 23 states. So as a single developer, I would have to go, if we wanted to roll out nationally, I would have to pass this test that they run in 23 different states. And then there's also other things like some states you have to have special insurance and things like that. It was just prohibitive for a small startup. So we spent a year and a half building this monstrosity of a tech platform that was like trying to direct this API and it was just not happening. And so at one point we said, okay, everyone's using the website, forget the API, let's go directly to the website. So I started to look at their website directly, which is all these companies are logging in and recording their compliance on it. And I said, okay, a much more effective way of a single developer integrating with this platform is to me just build an extension that talks directly to their web servers, which are using a completely different API, but a complete one. And I don't have to pass all these tests. And so that was the genesis of this product. So the first piece of this extension that I ended up building was there were wildfires in California that burned down a bunch of farms I probably four years ago now. And there are some communities that I was following to just kind of get a finger on the pulse of what people were doing. And so there was this very to like, as part of the compliance platform, there's like these, you have to like tag everything in it. So you can like track it in the platform. And so when the farms burned down, they had to like void all these tags. And so these farmers that that had to, you know, go and like void these tags in this, in the compliance platform, they would have to go and like click, click, click, click, and then like wait for that to submit. That's one tag. And they have like to do 10,000 of those. And so they're farm burned down and they're like spending their like, they're spending like multiple evenings, like just they're lively. Okay, okay. Right. And so I look at this and I go, this is insane. Let's automate this, right? Like obvious solution. So that was the V1. So the V1 of this product was I built it overnight, because the extension is very easy to build. And like all it was, it was just like this simple plugin that just automated all, all the clicking to do this. And so instead of spending six hours clicking on this platform, you can do it in 10 seconds. And I would say this is such a common story that we hear of like old enterprise software that it's really hard to modify. But there's something that you want to do, which should be really easy to build. And like extensions are such a nice way to do that, I think. Yes. And starting from that like simple point, I think as I, because I didn't know anything about extensions, like that was totally self taught. It was like, all right, well, let's, let's see where this goes. And then as the rich API of extension started to unfold, I was like, oh, well, this is an interesting place that we could, you know, let's explore this area. Like let's, you know, like use their like cookies, like their authentic cookies. And like, we can talk to the server directly, like, oh, let's, you know, manipulate the page in these interesting ways, we can like automate these like very lengthy tasks. And so like, it just started to make its own gravy and it just, it kept going. And so now, you know, fast forward, you know, so the, the company ultimately shut down. But I, I basically, I have since I started over and I basically rebuilt the product into the current iteration, which is called track and trace tools, which is an open source and free extension for the cannabis community that integrates directly with this compliance platform that everyone has to use. And so it is, it's used by 1000 companies, you know, hundreds of hundreds of them use it every day, you know, from mom and pop shops to like the absolute, the absolute multi statement strassities, lots of them use it and it's, it solves a lot of problems for them. It's, it's a very strange space to work in, like not a lot of people have found success in this way, but it is a totally unique solution that really you cannot replicate any other way. Like there's a sort of like, building this like gross headless browser solution, which I don't even know if that's, if that would even fix things, like there's just, there's not a way to address this problem with the limitations. So the business that I run now is grown organically in this kind of unusual way and it's all fueled by the ubiquity and power of extensions. That's fascinating. So like, I think all it's a really common user experience to go to a website, especially like government mandated websites, and they're built by the lowest bidder. They're usually overwhelmed with all kinds of a lot of technical requests, and they're not the best UX and you were able to kind of give them the end user what they really want in the system that was actually safe and legal for them to use. That's amazing that you've been able to do that. So how did that lead to a book? Yeah, so this was so after the first company shut down, I was kind of, and before I had, I launched the second version of the extension, I was kind of, I was kind of sitting there kind of figuring what I wanted to do next. And part of it was like, you know, I have gathered all this knowledge of how to build an extension and like the knowledge that you develop, starting with like no knowledge, like that, that series of like just cutting your teeth on like not knowing what you're doing and having to slog through documentation and figure it out is cannot be replicated any other way. Like it's just, it's the slog of building something is paramount to like truly understanding something. But you also gain insight into the mind of a novice. Like it's very hard like as a, you know, when you're a seasoned developer, you forget what it's like to not understand a subject. And I remember kind of coming out with all this knowledge like, okay, I know how to build extensions now, but also, I also have a very intimate knowledge of what the landscape looks like. So at that time it was extensions were right in between like Manavest v2 and v3. So there was this huge fragmentation of like all the examples on the web. And so I remember I was like, you know, you'd find an example like, oh, let's, you know, how to use this API or like how to build a simple extension. But the code, the code snippets are not like tagged mv2 or mv3. And so it's like, God, like, is this applicable? Does this even work? Like how, you know, are these things even possible? Like, oh, this person built this using, you know, because some things between mv2 and mv3 are totally incompatible. So I was like, God, this is a nightmare. And then like, you know, some of the API is, you know, we're not as well documented as others. And it was all very confusing. And so I was like, okay, let's put together this single repository that's geared tour or not repository, let's put together a text. Because I had written a number of books before. So the rhythm of it, I had kind of gotten into. And I kind of, I know what resonates well with developers who are kind of looking to, you know, dip their toes in the water or jump in entirely. And so I was like, okay, let's, you know, there's so much I could go in this book. And like, there's so many angles, because it's like the way that browser extensions work, like it's, it's in this like weird hybrid. I think I think I started up the book, I was saying, they're like weird and wonderful parasites, which people took issue with. But I really, I really stick by that because it's true, like they're not there, it's not a standalone product. It's the whole utility of them is that they sit on top of the open web. But like, therein lies the magic of like building extensions. And they're, you know, as you start to unpack all the available API is like, they're massively powerful. I almost to a fault, and I'm sure we'll touch on that later. But it was like, I was like, okay, like I started to like put together the outline for this book. And I was like, oh, like, let's do, you know, let's cover like all the basic components. Oh, let's do a section on deployment. Oh, let's, you know, Safari is like, you know, running a extension program now, like they're, so you build extensions in X code. And like, oh, so, you know, just started, it's just on and on and on, like how do permissions work? What are the best ways to deploy like this knowledge that like is kind of spread out in some ways and doesn't exist at all. And so I was like, all right, let's just smush it all into one place and like, put it in a book and like, because there's nothing like I searched, I searched Amazon, and I was like, you know, there's 8,000 books on how to write Python. But like, I was like, build an extension. I mean, there's, yeah, no, there's nothing. I was like, how is this possible? Like there are, and you look at like, and it's, you know, extensions are, I like I ran the numbers on like the comparative sizes of like marketplaces. So obviously the app store is going to be bigger, but it's not that much bigger. And so and then the other thing is you look at like, I think there, you know, there are a couple big examples, like the, the Honey Chrome extension, which I think was acquired by PayPal for like billions of dollars, like a very hefty payday. And like, there are huge, you know, huge, like a company called Loom, I know one of the founders personally, and like their first product was Chrome extension, like for recording video. And so they're like the, you know, it's, it really does follow a power law of like some of these the biggest extensions are like huge user bases and like really are super useful. And so, you know, you can keep going, like you can look at like every, you know, I, you know, ad blockers and password managers are two of the most important pieces of like user privacy software that you can use in like any context. And so extensions have, I, the book sort of wrote itself because like you put down the outline and it's just like, oh, like I can, I can just write forever about this. And so like, you know, when you're, when it's rolling downhill like that, like you just roll with it. And so, yeah, that's, that was the genesis of the book. So you mentioned that extensions are a really big space and it's sort of challenging to break down into the initial steps for a new developer coming to the platform. How did you go about that in the book? What do you think of the, the specific steps that you would recommend to someone getting started? Yeah, so the book was intentionally designed to sort of go step by step from a more digestible piece of extensions into some of the more obscure pieces. So the more digestible pieces are pieces that are replicative of like what a website is. So like the pop up, for example, like that's a very easy to understand. It's like its own web page that has some special rules, but like it has an interface that, you know, is, is basically like a website. And there are, there are pieces extension pop, the extension pop, you click the button and the pop up comes up. That's a lot of, you know, a lot of sites use that, or not a lot of sites, a lot of extensions use that. It's a very easy, you know, it's easy for the user to understand. It's easy to work with. So that's a very approachable piece of extensions. Then you, you know, you can go into options pages and, you know, you go into developer tools and things like that, things that have user interfaces. And then building on top of that are the more abstract stuff. So it's like once, once you get into things that don't have a user interface that are tying together these disparate pieces, that's, you know, you kind of like work into that because I think one of the pieces that I sort of struggle to understand when I got started with extensions is that there's not, it's not like a mobile app or there's, there's an interface, like there's a, there's always an interface and it all starts from there, right? You can, there are buttons to press and it's like, it's, you know, visually it's very easy to understand. Sometimes you install an extension and there's no interface. It just like it automatically works or like it's, you know, the, the place where you're setting, you know, changing settings and things like that are like hidden or hard to get to or, you know, it's sometimes it's like totally transparent. Like you install an ad blocker and you'll, you may never open. You use the analogy earlier of like building on top of the browser. And I think that's really nice. Like you may be running code in specific tabs or you may be running some code in the background that you can, you can really decide what makes sense for your extension. It's super adaptable. And I think that's, once you, once you're able to sort, once you have the entire kind of network of all the different pieces that are available at your disposal, I think that that's when you really like the light bulb moment goes on and you're like, oh, like this is super powerful. I can do all these like really interesting things with it. So yeah. And I, you know, I spent a lot of time in the book kind of laying out the landscape of like how all these pieces talk to each other. Like none of these are technically required other than it's like very, you know, basically the manifest and you can go hog wild, like at all. Yeah, go, you can sort of take it wherever you want. So it really it's like once you once you kind of have the mental model of like what extensions can do and where they, you know, where they touch and like how it's going to be driven and like all the different ways I think that's that's when the the learning developer can really start to like grasp how all the pieces fit together and like all the different ways that they can be applied. So in your research into the book and your startup and everything else, was there something on the extension platform that was surprising to you? Like you were relatively novice, but by the time you wrote a book, presumably you felt fairly comfortable with it. Did you end up learning stuff? Do you feel like it was really digestible? You knew the whole platform already? Oh, no, I so yeah, I mean, I, you know, I'm just about to publish my fifth book and I can say definitively that like, and any author who tells you otherwise is lying that like you're learning as you're writing. I mean, you know enough to like put together the outline, but it is first and foremost a self guided research project because you're really, it's one thing to like know something to but to be able to put it, lay it out in a way that is accessible to a reader, especially a reader who doesn't know anything necessarily. That process is still a learning process. You're still going to uncover stuff that you don't understand. You're like, oh, I like, I didn't know it worked that way. I mean, the high level, like you know how it works, but like the, the minutia of like all these different places, like it is absolutely a learning experience. And so, I mean, even now, like I still, I still, I'm like, I'll still see stuff from like God, I didn't know like exceptions could work that way. I'll give you an example. So, you know, chat GPT launched at the beginning of this year, it was a phenomenon. And right away, someone built an extension chat GPT for Google, that was like, it was a, you know, I'm a big hacker news person. And so, it was like, number one hacker news, never went crazy about it. And I'm like, I'm like, immediately, I'm like, oh, extension chat GPT, like, let's, this is, you know, this is great. That was after publishing the book, I was like, oh, this is what a brilliant application of like, this relatively simple, you know, LLM anyway. So, I still am learning stuff. And it's such a, it's such a wide space that I think it's really, it's a ripe area for creativity. Because it's like, it's, I mean, it sounds like a cliche to say, it's like, it's unlimited what you can do, but it really, it's really, it really is limited by your imagination, just because the APIs are so vast and so broad and so powerful. You know, it's funny that you mentioned AI. I feel like that's something that our team is really excited about how we can maybe introduce AI to more and more websites over time, something that folks can add to their own websites or websites they have to use at their work or whatever. And, you know, is it, do you feel like that is a growth area that it has a lot of future? Is that something that is more flash in the pan? Absolutely. And so, I think that extensions and AI, specifically large language models, are uniquely paired for each other. So, on one side we've got, we've got like the OpenWeb, which is a tech space platform, right? HTML and JavaScript are all, you know, all open and readable from the browser. Then we've got extensions, which are capable of reading all these and understanding them. And then we've got the language models, such as ChatGPT and Bar, who are able to ingest large bodies of text and understand them in very intelligent ways. And so, right when ChatGPT came out, I wrote a blog post that talked about how there's going to be this explosion. I called it the Cambrian explosion of AI extensions saying, you know, that this pairing is, it's right there. Like people are going to figure this out really quickly. And when I wrote it, I was like, there's probably 100 extensions. And I said, you know, there's going to be like a thousand and three months. There's probably way more than that now because everyone figured out really quickly that you go, all right, I can just suck all the text out of this page, throw it to the extension and have it summarize it for me, you know, figure out, you know, give me answers about it, you know, analyze it. It's all instant. It's amazing. And so, and it can be done trivially, truly, right? Using, you know, using these widely used APIs that everyone is building on top of, the pairing is frankly beautiful and it's perfect. And we've only sort of scratched the surface because, you know, we're, you know, the area of AI is still in its infancy. And I mean, we are certainly not far from having AI be like a core piece of like how we interact with the web itself, just by virtue of like how powerful and how perfectly it is paired to just interact with the web in general. And I think that we're going to see a huge transformation in the coming years of like how we browse the web in general. And it seems likely, in fact, probable that AI-powered extensions are going to be a big piece of that. I think one of the really interesting things that we saw was that a lot of these extensions that we're building with AI were built by developers who had never built an extension before. So I'm interested given like your experience and writing the book, does that surprise you? How easy do you think it is to build your first extension? It's a great question. And you know, I see, spent a lot of time on Reddit and I see people asking all the time like, what is an idea for an extension that I can build? And I, you know, I, it's a tough, I understand the mindset. It's like, you see this exciting platform, but the platform is not enough. It's like, it's just like, okay, like that's just the, you the open field that I can run with, but like I need an idea, I need a direction to go. And so, you know, this year when like all these AI platforms started to come in, I think people went, oh, that's the direction. That's how I can, you know, because it's very simple to understand like, oh, let's feed in, let's feed in text and like get back interesting things. And so that I think developers saw, they saw the extension platform. They saw the application of, you know, using these, you know, these pieces of AI tech that they can feed it into and they go, that's, that's where I'll start. So it's a very, it's, it's, it's relatively simple to build. You know, if you have any web development experience, like, you know, you're, you know, you're working with a relatively simple API and like, you know, you're pulling text out of the page, these are easy things to do. So it's a super addressable way to like get in and make something that's frankly amazing really easily. So it is, it is no surprise to me that early developers are jumping into AI extensions because it's new and exciting and powerful. And that's a, that's an intoxicating combination. So we mentioned that there can be challenges building extensions. I think maybe one elephant in the room to jump back a little bit was you were talking about building on top of existing websites. And when you build on top of an existing website, that website is prone to change. So is that something you've had difficulties with? Like, how do you approach that? It's difficult, actually. Right before we started recording this, I actually had to push a patch to my product just because something had changed. Yeah, it's, it's a problem and it's sort of, it's something that you have to wrestle with. It's just the nature of developing extensions that like you're building on top of an undocumented platform. And so you sort of have to weigh, you know, what are the consequences of that. So I think there's a couple ways to think about it. One is that I, there's, I would say that there's a built-in sort of forgiveness from people who are using extensions, like your, if it's sufficiently good and it's, it's advanced their productivity or it's helpful enough, like, and you're responsible, you know, responsive enough as a developer, I think that there's some forgiveness provided you, you're pushing patches regularly. But yeah, you sort of have to figure out creative ways to figure out, you know, when these platforms are advancing and some are easier to build on top of than others. I think you have to be, you have to be judicious about exactly the ways you're integrating. So, you know, some websites that are, you know, have are, you know, if, if, if a platform you're building on top of is like, I don't know, an Angular React platform, that's like, you know, compiled and minified to hell. It's like, it's really, it's really hard to, to build on top of that when like you're, you know, if you're poking through the, the, the HTML and you're like, you know, these classes are unrecognizable, it's really hard to be like, oh, we'll integrate in this way. And on the other hand, like if there's, you know, if you, if you aren't as tightly integrated with the page and you're sort of building this like supplemental piece of software, which is the way that I do it, it's, you sort of arrive at this kind of stable equilibrium where, yeah, you're a little bit exposed to late changes they might have, but you know, it's, it's just sort of the cost of doing business. And, you know, you, you integrate with the pieces that are the most powerful. So like, you know, talking with the web servers, which are just naturally probably going to change less, because they're not going to be swapping around their APIs all the time. And, you know, you, you'll build supplemental interfaces that are like totally dependent on how the page works. And so I think actually that's so, it brings up an interesting point is that that is one of the most interesting, having worked on extensions in the way that I do for so long, I think that has been a really interesting piece that I've had to learn is building resilience. So the, the product that I work on has multiple tiers of failovers. So like everything you write, the way that you integrate with the page, the way that you're integrating with APIs, like you have to sort of expect it to change and you would like to have like a graceful fallback. So if one piece breaks, the whole thing doesn't collapse, you are detected in a way that you go, okay, this fails, like let the user know it's not working, but like everything else will be untouched and like this small piece will just like fail on its own. So you really, it's, it's an excellent exercise in building resilience software. And ultimately the product you build, you know, even if a small piece breaks, like people are still extremely happy with it. Yeah, so it's, it's still totally possible, even though it's a little bit more fragile than you might be in other contexts, like it's still totally possible to build a great piece of software, you know, provided that you've taken the proper precautions and you're being a responsible developer and maintaining it. And I think something that I would add is that this certainly isn't the case for all extensions. And I think you sort of know what you're signing up for. If you choose to build an extension, which is really dependent on the page, then you run into some of these problems. At the same time, you could build an extension that's like letting a user take notes beside a page. And that will be less prone to break and is maybe a good place to start. So that's a great point. So they're not, yeah, not all pieces of extensions are susceptible to this. So if you're building, if you're building like sort of a standalone extension that's sitting on top of a supported API, you're not really exposed to this at all. Like if you're, if it's living in the pop up, and, you know, so it's completely sandboxed from the page, and, you know, you're talking to the supported API, and, you know, maybe you're only minimally talking to the page itself, like you're just not going to be exposed to these same problems. Whereas if you're tightly integrating with like direct pieces of like, if you're, for like an example is like a lot of people build them like Gmail extensions, sort of like go to the Gmail page. Have you seen the Gmail HTML? It's a nightmare to build around. Oh my God. It's like, oh, it just takes, takes so long to get anywhere. And, you know, who, you know, who knows what, you know, Google might change it tomorrow because it's their platform. And so you're exposed to that. So, I mean, I think, I think what we can point out specifically content scripts is like kind of the Wild West part of extensions, like, You can, can you explain content scripts? Oh, yeah, sorry. That might not be familiar. Yeah. So content scripts, right. So you're able to, in a couple of different ways, inject JavaScript and CSS directly into the page, modify the page, read things out of the page, interact with the page, change the page, you know, dispatch, click events, things like that. So this is probably one of the most powerful pieces, but also kind of the most unruly pieces, kind of hard to wrangle. Because, you know, when you inject stuff into the page, like, you're kind of fighting with the pages, JavaScript, if you're not careful. And so, but you can add in widgets, you can change colors, you can change the appearance, which like, users love, like how many extensions are there out there that like, change how your Facebook looks or something like that, like people love it. And so it's a really, it's, I mean, they're awesome. But you're, you're really subject to kind of all the, all the nastiness of like, basically fighting with the host page, which must still work or you're, you know, they're going to install your extension immediately. One thing I'm interested in is, as a product that is built on top of existing web pages that may be breaking at any time, you mentioned today, there was a break today. How do you actually monitor that? And what's the kind of plan for rolling out something? Is it something you can push an update for immediately? Or how does that go? It's difficult. I mean, you have to be, so there's, there's a couple of different ways. One is, I mean, the most, the most effective way is to have a good relationship with your users and like kind of make it easier for them to like quickly report bugs. So like this, the bug that I fixed today was reported by user, they go, hey, this isn't working. They've, I mean, some of them are really good at reporting bugs, like they know to, you know, send screenshots and like, I have a place that they can record bugs. So if you make it easy for them, that's the simplest way. But you know, you can't always rely on your, you know, having such an intimate, I, you know, I work with larger businesses. And so they're motivated to have this product. But if it's just, you know, if you're, you know, appealing to consumers who are, may not pay you money or, you know, are, you're going to be not talking with at all, yeah, you'll need to have more automated solutions. So I have also built built in ways of kind of monitoring the host page. So, and this is, you're not going to find an off-the-shelf solution for this, you're kind of kind of need to need ways to monitor the host page. So, you know, pages will often display a version number. So you can kind of monitor, you know, you can have a reporting service that like uses a content script, like read out the version number and go, Oh, it updated. Maybe I should check the page or even more, you know, they're monitor sections of like, Hey, here's this, like, take a hash of this JavaScript blog and like every time it changes, you go, you know, I should, you know, this is, I know that the host pages is a critical section of their JavaScript, like maybe I should check it or, you know, have some sort of like Sentinel on the page looking for like, Hey, like this text changed or like these pieces changed, you know, kind of watching for changes and then you can react to it faster. But there's not a, I, there's not a once a fits all solution for this. And I, it's not a bad thing. I think it's just, it's just the nature of extensions, like you're, you're the parasite. Sometimes, sometimes the host is going to try and throw you off. Yeah, but it's not, it is a solvable problem. It just, it requires a little bit of creativity. And yeah, care. I think maybe the answer that comes to mind for some of those things is sort of automated testing of extensions. Is that something that you do or that you've looked at in the past? Totally. So I mean, you can't, you can't ship an extension without tests. It is, I guess one, one thing that's especially challenging extensions is that like, going outside of, outside of like unit testing, as things get, I would say more than a little sticky, probably a lot sticky. It's something that I dip my toe in just to kind of see what it's like. And it's kind of, it's a little bit ugly. Yeah. So like figuring out ways to basically automate testing, you know, you'll have to, unit tasting is the big part of it. Kind of like mocking out like whatever your host page looks like. That, that's a big part of it. Yeah, testing, testing is hard just because of kind of the nature of extensions. And so you're not going, like if you're, if you're running like a, you know, a regular website, like you can like spin up the website and you know, do, you know, end to end testing, things like that. And that's significantly more difficult with extension just because like now we're mocking out like a whole browser and like the host web page, you know, maybe you're, maybe you're running your testing against like an old version of the host web page or like, you know, you have to mock up the authentication or like all sorts of nastiness. So yeah, you have to, I mean, personally, my solution is like, I really lean on like unit tests and like a lot of manual testing. That's just, that's just part of it. Like it's kind of hard to, it's very difficult to break out of that and just being very religious about like writing your test suites and making them good. And you know, just a lot of manual testing, like that's, that's just, that's just going to be part of it. Yeah, that's the, that's kind of how I tackle that problem. Yeah. That's actually something I'd like to, I think our team could really work on in the next year coming time is, is improving of automated testing of extensions. I think that's something that I personally, before I joined the team, something I wanted with my extensions. And if there were more requests of our team, like automated testing, or if people wanted to give feedback, maybe you could share how they could give feedback to us as a team. Do you want to do? Yeah, so we have the Chromium extensions mailing list. That's a great place to go. You can leave feedback there and we sort of hang out there and try and answer questions. Also, there's the web extensions community group. That's a great place to leave feedback on things that more generally you'd like the extensions ecosystem to address. So I know we were at TPAC last week, which is sort of a big gathering of people working on these sorts of things. And we were talking a lot about testing. And I think it's a really exciting space. Already, like puppeteer and playwright frameworks like that have some very basic support for extensions. But I think we can do so much more to make that better. Absolutely. You know, it's something I'm really excited. I feel like we're in a very active time, a lot of growth for the community. And I am really excited to see, you know, where we go. So we were at TPAC last week. And I think the topic that was top of mind for everyone that was there at all the different browsers was actually the Manifest V3 change that's been coming out for quite some time. You mentioned that your book was written during the MV2 to MV3 swap time periods sort of thing. I think we're coming up on the five-year anniversary of the initial announcement of MV3 changes coming to Chrome. Can you give folks at home maybe a bit of background on what exactly is the Manifest V3 change as a whole? So yeah, so it's a number of different things bundled into one. But there's a couple that stand out as I think would be the most distinct for developers who are used to MV2. So in MV2, the background takes the form of a headless page. And, you know, it's you could control persistence and have it run indefinitely. And, you know, you can basically puppet this headless page to, you know, do your bidding. And very useful. I mean, it worked pretty well. But I think that there were there were some implications for consuming system resources because, you know, you essentially, you know, when you install an extension, like you might have it installed for five years. And so are you just going to have this like extra background page running for the next five years? So thanks to think about. And so in Manifest V3, that has become the background now takes the form of a service worker. And they can do a lot of the same thing is just in kind of a different way. But just by the nature of there no longer being a DOM in the background, like you lose access to APIs and have to like reform them in different ways. And so that's probably one of the bigger headaches for developers that are kind of switching over to MV3. And then the other big one is that in Chrome, you can't use remotely hosted code anymore. So previously, like if you like you can't call an eval anywhere, and you can't, you know, you can't load JavaScript from some remote website. It has to be like bundled. It has to be bundled. Right. And so, yeah, and I think that that is for people who are coming from like a web development thing that that probably feels a little bit unnatural, like if you want to load like the Google Analytics Analytics JavaScript, like you can't just like slap in a script tag anymore. And quite often you'll just get like a link to a CDM, which is what the framework provides. Right. And so, yeah, so there's there's a little more finagling needed to make things work. And there's other, there's other pieces mixed in that. So, right, the declarative net request is not strictly part of MV3, but it kind of was rolled out at the exact same time. And that's kind of the deprecation of the web request API. That's a big changeover just because, and I think a big part of that was just because of the abuse that happens from the web request API, like a truly a very, very frightening API that can be abused in a lot of... Yeah, the web request for folks that aren't familiar, is what allows you to run arbitrary code at any request. So you can inspect headers, you can inspect cooking, anything about the request you could do something with. And so that's how a lot of like content filtering ad block and stuff is built on top of that. And so the issue as a browser, I think that we were really trying to focus on with that, with changes to like declarative net requests when we were working with all the other browsers on that, was how can we allow folks to have the same capabilities without the abuse that comes with that? Because when you have a hook that lets you run arbitrary code at every network request, I mean, if you've loaded any popular website, that's several thousand requests just to get the thing going, right? You look at how, you know, being able to, you know, have all these like different hooks for like every single web request and like running arbitrary JavaScript at each point, like just on its face you go, this cannot possibly scale. So it is a very sensible thing to address just because of kind of the nature of it. And just to clarify, the web request API is still supported in some cases, if you don't need to specifically act on a request and decide to block it or to redirect it, what we're really trying to do is take some of the common use cases. So for example, content filtering and move that into a new API where you can do the same things, but without some of those trade-offs that we just discussed. Yeah, the actual APIs were designed with and by some of the major content filters, like Adbots. Yeah, for sure. And we continue to work with them to try and sort of make sure the API is covering all of the use cases that we can see. Absolutely. So I think it might be interesting to take a step back now. We've spoken a lot about the state of the platform today, but are there things that you'd like to see us work on in the future? I mean, I think the biggest thing to that I would love to see addressed is kind of the developer experience. I mean, there are a lot of promising platforms that are kind of going after this, but I, you know, developing extensions is just in kind of a weird space. And like there's, you know, there are, you know, things like Parcel, which I'm a big fan of, you know, platforms like, you know, Plasma and all these other ones are kind of addressing developer experience to make a great and multi-platform, or sorry, multi-browser. Yeah, but like we talked about testing before, I think that there is so much that can be done to like make the developer experience great, just because it's like, you know, you're a lot of the tools that I end up using in my day-to-day are kind of just, you know, built on top of this, you know, it's just, it's a very raw platform in terms of like what the developer experience is. And but the end result is like so powerful that I see there's tremendous potential for just making it easier for people to get into and to like quickly learn how to do it and like, you know, get in, you know, start to use like these exciting APIs. Yeah, so I guess addressing a developer experience would be like item one, a top of the list. And I think there's so much low-hanging fruit there. Absolutely. I'd love for us to look at that as browsers. And also I'm really hoping that the community continues to work on things. You mentioned a few companies there. I've seen different projects coming up to sort of add features like hot module reloading to extension development. Yes. Oh my god, yes. Yeah, I think that's something that we would all like and would all like to be easier. So I'm really hoping we keep seeing things like that coming forward for sure. So something that you're particularly thinking, what's your number one like task? Yeah, I guess I asked the question. So I should have something in mind. I think UI is a really interesting space as we recently launched the side panel API and that's a way to like similar to the pop-up that we discussed, show some extension content in a place outside of the web page. And I think continuing to look at things like that is really interesting because like we discussed injecting stuff into a web page has some caveats and can be tricky. And so I think giving extensions more places to surface is something I'd love to see. The sidebar API is very exciting. I'm thinking of creative ways to include it because I've yeah, I was for a long time, I was like, man, I really wish I had like a sidebar bar thing on the side that I could just like throw some stuff into and I was like, ah, there it is. Well, this has been such a great chat. So thank you so much for joining us, but we do only have so much time. So I think we have to wrap it up. I'm curious, is there anything that you want to say to the audience before we finish? If you haven't built an extension, go do it. It's the most fun I've had writing stuff for the web and it's really a unique platform. And I love it. You can find out, you can find my book on Amazon, Building Browser Extensions. And if you're interested in the platform that I work on, it's track-and-trace.tools or just Google Track-and-Trace Tools. And if you want to check out the source code, it's on GitHub. If somebody has questions about you, is there a platform or something that they can contact you about? Yeah, you can find me on Twitter, my handles at Matt Frizz. Yeah, that's probably the best way to reach me. Awesome. So thanks again, Matt Frizzby, for joining us, and thank you all for watching.