| # What’s Up With Web Platform |
| |
| This is a transcript of [What's Up With |
| That](https://www.youtube.com/playlist?list=PL9ioqAuyl6ULIdZQys3fwRxi3G3ns39Hq) |
| Episode 10, a 2023 video discussion between [Sharon ([email protected]) |
| and Rick ([email protected])](https://www.youtube.com/watch?v=zFwSAMMCYxI). |
| |
| The transcript was automatically generated by speech-to-text software. It may |
| contain minor errors. |
| |
| --- |
| |
| Chrome is how people access the internet and the web, so what exactly is the |
| web platform? Is it just the internet? Today's special guest is Rick, who has |
| worked on input, scrolling and was formerly the director of the Blink web |
| platform team. Currently he's working on transactions. |
| |
| Notes: |
| |
| - https://docs.google.com/document/d/17jLBCyXFkbHCk81JayoRe93dkO3X4GncvIlLfDAD1WU/edit |
| |
| Links: |
| |
| - [What's Up With Mojo] |
| - [What's Up With Open Source] |
| - [What's Up With Processes] |
| - [What's Up With Site Isolation] |
| - [bit.ly/blink-compat] |
| |
| --- |
| |
| 00:00 SHARON: Hello, and welcome to What's Up With That, the series that |
| demystifies all things Chrome. I'm your host, Sharon. And today, we're talking |
| about the web platform. What is the web platform? Isn't that just the internet? |
| How does Chrome fit into that? Here to answer all that and more is today's |
| special guest, Rick. He's worked on input, scrolling, previously, he was the |
| director of the Blink web platform team, and currently, he's working on |
| transactions. Welcome, Rick. |
| |
| 00:25 RICK: Thanks. |
| |
| 00:25 SHARON: For the show. Cool. So let's start with, what is the web |
| platform? |
| |
| 00:31 RICK: It sounds like an easy question, but actually, it's tough to say. I |
| would describe the web platform as what's in a web developers mind when they're |
| writing code. What are they targeting? What's the platform they're targeting? |
| And I think we've had this long history, I think, as we work as Chrome |
| engineers, we often think of, what's the platform we're creating through Chrome |
| or through Chromium. And that's often quite different from the platform that |
| the web developer has in their mind as they're writing code. It's some kind of |
| union or intersection of all of the browsers that their users might be using. |
| |
| 01:01 SHARON: Right. I think platform is going to be a term that's going to be |
| very overloaded in this discussion, because I think when people who are working |
| on Chrome think about platform, they think about, oh, does this work on Mac and |
| Windows and Linux and stuff. So that's what platform means to them. |
| |
| 01:14 RICK: Native platform, yeah. |
| |
| 01:14 SHARON: But to people like web developers, that's not what platform |
| means. I mean, it might be, right? There might be certain differences. |
| |
| 01:20 RICK: I think when you say web platform, you mean, what is the virtual |
| operating system that a web application runs in, or a web page runs in. |
| |
| 01:28 SHARON: OK. And is that different from the web ecosystem? |
| |
| 01:35 RICK: I think so. I think when I hear the term web ecosystem, I think |
| there's a lot of players in the web. So for example, say, frameworks, I would |
| say React is part of the web ecosystem. They're not part of the web platform, |
| in the sense that they're something that runs on top of the web platform. And |
| then maybe the way I describe web platform is it's the thing developers are |
| coding to. Maybe from that perspective, React is part of the web platform. But |
| I use the term to think, like, what's the lowest level API surface area, the |
| boundary between the user land of the web operating system and the kernel of |
| the web operating system. But these frameworks, I would say, sit somewhere in |
| the middle there. Developers might think of them as core to the platform |
| they're using. But we wouldn't consider them part of the web platform. |
| |
| 02:10 SHARON: OK. And how does that relate to the open web, which is another |
| term we hear around? |
| |
| 02:17 RICK: Yeah, I've heard a bunch of people complain that saying open web is |
| redundant because the only web that exists is an open one. But sometimes it's |
| useful to qualify, when we're talking about the web, we're talking about this |
| consensus platform, effectively. It's the only major platform in history that |
| it's not owned by - Linux, I guess, is an open platform that's not owned by - |
| well, anyway, we could debate this for a long time, probably. Most computing |
| platforms are owned by some company that just directs their future, where the |
| web isn't. The web is open in the sense that anyone can build a browser. Anyone |
| can try to convince people to use their browser. And through browsers and web |
| standards, anyone can contribute to what the web platform is. |
| |
| 03:08 SHARON: OK. If that stuff seems interesting, we have an episode about |
| open source, so check that out. This kind of thing is covered there a bit. |
| Yeah, OK, so platform, in this case, in the past, we've talked about how the |
| browser is like an operating system because that's what it is nowadays. |
| |
| 03:26 RICK: Yep. |
| |
| 03:26 SHARON: So I guess it makes sense, the browser runs on different |
| platforms. But then it itself is a platform that other things now run on. And a |
| lot... |
| |
| 03:32 RICK: It's like a meta platform, sometimes the term we use. |
| |
| 03:39 SHARON: Yeah, OK, that's what we're talking about. There are lots of |
| browsers. The internet is a big place, so I hear. How do we make sure that |
| things just work across all the different browsers, because most people, if |
| you're just using the internet, you're like, I'll just open whatever my browser |
| app is, and things just work. And that's kind of crazy. |
| |
| 03:59 RICK: Yeah, it is. |
| |
| 03:59 SHARON: Can you tell us a bit about what goes into making all that work? |
| |
| 04:05 RICK: The easy, obvious answer here, of course, is standards. But |
| actually, I think people overemphasize. I think there's a lot of things that go |
| into making that work. And you think, actually, this existed to some extent |
| before we really had web standards in the form they're in today, right? So I |
| would say, in some sense, competition and cloning. The web has this long |
| history of when someone wants to make a browser, the first thing they do is |
| they try to make something that works with existing web pages. And so they'll |
| just go outright copy the behavior of other browsers. And I think that's how |
| the web has always evolved. And then standards are a tool to help make that |
| easier and avoid IP legal risks in doing that. But I think it's important that |
| we see standards as just one of many tools that we use to help create, the term |
| we would use, is an interoperable web, right? A web that developers can expect |
| that it mostly behaves consistently, regardless of where their user is coming |
| from. But there's lots of other tools that we use. The other one that I think |
| is really undervalued is conformance test suites. For most of my time working |
| on Chrome, we saw Chromium's test suite as our primary thing that we were |
| passing. I mean, yeah, there was the ACID test. There were other test suites |
| that we ran. But over the last six years or so, we've really gone through this |
| transition of saying, hey, for the web platform, our first class test suite |
| really is this web platform test suite that we share with all the other browser |
| vendors. The idea being that passing these tests is arguably maybe even more |
| important than standards, or at least as important as standards to creating an |
| interoperable web. |
| |
| 05:36 SHARON: Standards seems like a big topic. Maybe we'll get into that next |
| time. But we'll talk about all the other stuff that goes into making the |
| internet work for everyone approximately here. So with that, can you tell us a |
| bit, briefly, just what part of, I guess, the internet is covered by web |
| standards? Because in the last episode, we were talking about site isolation |
| and how that's more of a browser-specific feature. It's more of an |
| implementation detail because how it works doesn't really matter to the web |
| developers. So can you tell us a bit about which parts of the browser relate to |
| web standards and which part less so? |
| |
| 06:14 RICK: Yeah, I think of it in terms of what's the contract with |
| developers. And it's tricky. It's important that there be a bit of a blurry |
| line here, because it's part of what enables innovation and competition in the |
| browser space is to ensure that browsers are free to vary their behavior in |
| ways that they think their particular users might prefer compared to other |
| browsers. But usually you can think of it in terms of, to what extent does it |
| impact what code a developer needs to write. So for site isolation, there are |
| some subtle edge cases maybe, where we had to make some platform changes. When |
| exactly does the way different tabs interact with each other? And I forget the |
| exact details, but you can do window.open to open a tab. And you get a handle, |
| and you can talk to that window, right? So we have to make sure all that stuff |
| works. But then there's other nuances of that we could choose to break to make |
| site isolation work better. |
| |
| 07:16 SHARON: And so you mentioned, sometimes you do make what are called |
| breaking changes. Can you just tell us about - briefly define what that is? |
| |
| 7:23 RICK: Sure. Yeah, it's especially challenging for the web platform. It's |
| this very long-lived platform that's existed for a long time that has lots and |
| lots of code written for it. If we insisted on making sure that all code ever |
| written for the web continues to behave identically forever, I think we would |
| quickly run into a place where we were stuck, where we couldn't change the web |
| anymore. Sometimes even making something faster exposes a bug in an application |
| that causes it to break. And so I think it's important that we try to, on the |
| one hand, we have this responsibility that a web page written 20 years ago, you |
| might find it on the Internet Archive or it might be on a server that's never |
| ever going to be updated, we want almost everything that was written in the |
| past to continue working. But we also want to make some exceptions. And this |
| gets especially tricky as we start to say, for example, we want to improve the |
| privacy of the web. How can we meaningfully prevent tracking cross-site if we |
| can't make some breaking changes? So a breaking change just means the contract |
| that we had with developers previously, we're now changing that contract. |
| There's code that was written in the past that might now function differently. |
| |
| 08:28 SHARON: Yeah, this is something that - I haven't been a web developer, |
| despite working on Chrome. But there are changes where it's like, oh, we can't |
| do that. That's a breaking change. And I'm like, but we can just change it, |
| right? And then if your website breaks, to what extent is that just on the |
| developers to stay up-to-date with this web and the platform and things that |
| are running on versus the trade-off of making sure that the web, at large, |
| still works as expected? Because if you have an app, you get an operating |
| system update and it stops working, you want people to use it, you have to keep |
| updating, keep up-to-date, right? So where is that trade-off there? |
| |
| 09:03 RICK: I think it's a really tough balance. In general, I think we've made |
| mistakes in the past. Sometimes I think we've had too much hubris in saying, |
| hey, we can do what we want. I think the web's strength is the fact that |
| there's so many developers building for it, so much code written for it. The |
| web's strength is really this interoperability where you can write something |
| and it can run everywhere forever effectively. So I think we have a big |
| responsibility to keep breaking changes to the bare minimum. In practice, we |
| have this whole process that we go through called - we have this process on our |
| blink-dev mailing list, where if you want to propose a change to the web |
| platform, you have to go through this public process where the trade-offs of |
| that change can be debated. And specifically, for breaking changes, we have a |
| set of things that we ask people to look at. And there's a doc, you can see it |
| at [bit.ly/blink-compat] I wrote this doc years ago. And it was the guidelines |
| that the API owners like myself and others would use to try to evaluate whether |
| the benefits of a change seemed to outweigh the risks, or how do we quantify |
| the risks of this breaking change. The simple example that people like to point |
| to all the time is the UseCounter. What fraction of page loads use thing? At |
| the very extreme, we've had a few cases where somebody wanted to delete an API, |
| and we've gone, whoo, that sounds scary. What are you going to break? And we've |
| checked our anonymized data from the field, and we found this API has never |
| been called, more or less, basically, it's literally like never, or maybe there |
| was a couple people loading a test page or something. And it's like, well, |
| yeah, we should just change that. Why should we feel constrained by that? But |
| it's overly simplistic to say, oh, if your page is used on more than 0.0001% of |
| page loads, then you can't change it. It's a lot more complicated than that. |
| But there's a lot of different signals we try to look at. But at the end of the |
| day, the real test is let's try making this change and see what happens. And if |
| it causes - if our data suggests it is going to be low risk and then we try it |
| and we put it in Canary and Beta and we get reports that things are breaking, |
| then we got to stop and we got to rethink. |
| |
| 11:11 SHARON: Yeah, I guess a lot of the difficulty of this comes from the |
| internet being just a very fat-tailed place. And that's part of the risk. Yeah, |
| so in terms... |
| |
| 11:19 RICK: There's also a very big difference in degree in different types of |
| breakage. Sometimes you make a change and sites just stop working entirely. And |
| that's a much greater risk. We've got to be a lot more careful with that. |
| Sometimes we can design things where the severity of breakage is a lot more |
| moderate. Maybe we've got a security hole in a particular case - there's one |
| that we've been looking at recently where SVG images embedded in a certain way |
| where they're using the spritesheet in a way that, first of all, is really bad |
| for performance, but second of all, it leads to a security risk. And we found a |
| few sites that are relying on this pattern. And when we fix it to have Chrome |
| behave the same as WebKit, we see sometimes an icon doesn't show up. And it's, |
| like, well, OK, that severity of breakage, that's not good. We don't want to |
| make icon stop showing up. But the trade-off of get this performance and |
| security win, we think, even though that might be on a higher fraction of pages |
| than we would be comfortable saying is trivial, that's something where we say, |
| well, actually, that one might be OK, because it doesn't really break the |
| functionality of web pages as far as we can tell. |
| |
| 12:30 SHARON: OK. Yeah, everything is just a trade-off, right? |
| |
| 12:30 RICK: Yeah, exactly. All sorts of trade-offs. |
| |
| 12:35 SHARON: Yeah. So with all these changes, who out here is wanting these |
| changes? |
| |
| 12:40 RICK: So it varies a lot. The easiest example to defend, I think, is |
| privacy, right? Removing third-party cookies, that is a huge breaking change. |
| And it's debatable. |
| |
| 12:46 SHARON: You can turn that on yourself, if you go into the settings and |
| stuff, if you want to. |
| |
| 12:52 RICK: Yep. Yeah, absolutely. Yeah. |
| |
| 12:52 SHARON: It's in bug reports. |
| |
| 12:52 RICK: Yep. So in that case, I would say, that's really driven by our |
| users. Our users want to use a web that involves less tracking. And so we're |
| going to accept some breaking changes with a whole lot of different mitigations |
| to try to minimize the cost. In that particular case, we have a user opt out |
| where users can - we warn people and say, oh, you just reloaded this web page. |
| Maybe it's broken because of third-party cookies. Do you want to click here to |
| turn third-party cookies back on for this web page only, for example. So those |
| are the kind of mitigations we can put in place. You can think of this too. If |
| you've ever seen the pop-up blocker, this is one of the web's first non-trivial |
| breaking changes is the web used to be allowed to open as many new windows as |
| you wanted. And at some point, people realized, oh, we probably shouldn't let |
| any web page open 10,000 windows. |
| |
| 13:36 SHARON: Right. |
| |
| 13:36 RICK: So maybe we should limit it to one window per click. But that was a |
| breaking change. And so we introduced a pop-up blocker UI that could say, hey, |
| this website is trying to open a pop-ups without you clicking, asking for a |
| pop-up with a user gesture, would you like to allow it? |
| |
| 13:49 SHARON: This is one of those things that if you do it well, people don't |
| notice, because I remember, somewhat, the pop-ups and all being a whole thing. |
| And it's like, oh yeah, they just stopped being a problem one day. Cool. |
| |
| 13:59 RICK: Yeah, except when you're doing some company internal training and |
| the first step in the training is turn off your pop-up blocker. |
| |
| 14:05 SHARON: Yeah. Yeah, well, what can you do? So the users here is a group |
| who wants changes. What are other groups and entities that are wanting changes |
| in functions and directions in the web? |
| |
| 14:22 RICK: So another really good one that's come up a lot is in the sake of |
| interoperability. We've had some - sometimes, it's just, hey, we've got this |
| bug, and some website's depending on it. One I was involved with is Gmail was |
| depending on - I think we were parsing the CSS border-image property in a way |
| that was defined in a draft spec that was never the official spec or something |
| like that. And Gmail came to rely on this. And so there's not some user saying |
| that they want this to behave better, but Firefox was conforming to the spec. |
| And so we have to have this whole debate, well, this isn't good long-term. This |
| is an interoperability problem on the web. Do we need to update the spec to say |
| what Chrome is currently implemented should be supported everywhere? And we |
| went - sometimes that's the right thing to do. But we went through discussing |
| with Mozilla folks and other folks in the CSS working group, and we said, no, |
| really that's just a bad design. And if it wasn't for a few sites depending on |
| it, we would just do the right. So in that particular case, the big question at |
| the time was, is it just Gmail? How many other sites are there? And this is |
| before we had the ability to do site specific telemetry. We just landed a bit |
| of a hack into Chromium to say, any time you see this weird border-image thing |
| being used, check to see if you're on Gmail. And if you're not on Gmail, report |
| a metric to say how often it's hit. And what we found was there was very few |
| sites other than Gmail that was relying on this quirk. So we said, OK, we're |
| not going to let Gmail hold back interoperability of the web. We're going to |
| make this breaking change. And at the time, Gmail didn't want us to change it. |
| It was a legacy Gmail product. It was their mobile product. They didn't have |
| anybody working on it. But at the end of the day, it was the web standards |
| community saying, this is how browsers should behave. And it's not reasonable |
| to ask Firefox to go implement this hack, implement a bug, basically, for some |
| website to work. So all browser vendors just agreed that we're going to support |
| the spec here. And then once we did, once that was in Canary, we talked to the |
| Gmail team, and they grudgingly agreed to go fix Gmail to rely on the spec |
| behavior. |
| |
| 16:15 SHARON: Classic Gmail. |
| |
| 16:15 RICK: Yeah. |
| |
| 16:21 SHARON: So the spec, which spec is that? There's only one spec? |
| |
| 16:21 RICK: No, so this one was for border-image. But yes, this is the problem. |
| I mean, sometimes - hopefully, in the best case scenario, every web platform |
| feature has one spec somewhere, or at least a spec - usually a spec will have |
| different versions, effectively. So in this case, it was CSS border-image. I |
| forget which CSS spec it was in. But yeah, there would be a spec somewhere |
| defining this as a semantics for border-image. But then it gets tricky, because |
| sometimes, if you Google border-image spec, you might get a link to the W3C |
| recommendation, which might be what the spec was, basically, four years ago. |
| And there might be an editor's draft today that is different. And so one of the |
| philosophies we have in Chromium that's a little controversial around this is |
| that we really believe in a living web, living standards, the idea that the web |
| is always evolving. And so we generally just use whatever the current editor's |
| draft is of any spec. So it's usually not the first search result you will get |
| for a spec. You often have to go and click on the editor's draft to see, oh, |
| this is the version of the spec that we're trying to support in Chrome. |
| |
| 17:26 SHARON: OK. And who out here is responsible for these specs? |
| |
| 17:34 RICK: A lot of the times - I always say that feature teams working in |
| Chromium, working on API features should feel like they have some |
| responsibility over the spec, making sure that the spec and their |
| implementation are consistent. And if you think the spec is wrong, it's your |
| responsibility to go and start a conversation. But any spec, there's usually |
| some group. Eventually, we want to get - I should clarify. A spec is just a |
| definition of how an API should behave. And usually our intent with every spec |
| is that it be on a standards track to become a standard. And a standard is a |
| spec that's blessed by a standards development organization to be something |
| that has multiple implementations conforming to it and has reached a level of |
| maturity to say this should be considered a standard. The distinction there |
| sounds a little academic. But it's important to know, we ship things in |
| Chromium all the time based on specs that aren't yet standards. But we have an |
| Intent to - our whole Blink process and the Intent to Ship email threads that |
| we do are all about trying to ensure that the platform that we're creating in |
| Chromium is moving towards a standardized one, is expected to become |
| interoperable over time. And there's delicate balance to walk there because we |
| don't want to slow the pace of evolution of the web. And we always say, |
| Chromium's velocity can't be blocked by others. We don't want to say that |
| anybody in the web standards community can say, no, this can't go into |
| Chromium, because that's really important to competition between browsers, that |
| browsers can ship what they think is right for their users. But at the same |
| time, we want to trend towards a web that is interoperable and standardized. |
| |
| 19:17 SHARON: Right. Yeah, it seems like a balance there, because on one hand, |
| you want a website to load on all these different browsers. But if they all are |
| just implementing the spec, then what makes them different? And why pick one |
| over the other? |
| |
| 19:29 RICK: Yep. Yeah, there's definitely a balance. |
| |
| 19:34 SHARON: In terms of the different organizations responsible for the |
| specs, is there one organization with multiple divisions, I guess, branches? Or |
| are there different organizations that are responsible for different areas? |
| |
| 19:46 RICK: Yeah, there's lots of different organizations. So we call it the |
| SDOs, Standards Development Organizations. So we work a lot with the W3C. |
| People are probably familiar with the W3C. People are maybe less familiar with |
| a lot of the web's core functionality, so HTML and DOM, core things of the web |
| have not been really driven by the W3C for a long time. There's a fascinating |
| history. Chris Wilson could probably tell you more about this if you interview |
| him at some point. But at some point, the W3C decided the web was for |
| documents. And a group of browsers got together and said, we really want to |
| make web apps. And the W3C said, the web is not for apps. And so they created a |
| different SDO called WHATWG, the Web Hypertext Application - blah, blah, blah - |
| Working Group, and basically, had to write a new HTML spec from scratch. And |
| then that really became what all the browsers pointed at as the HTML. But for a |
| while there, we had two different specs that were both labeled HTML. And people |
| assumed that W3C HTML was what the web implemented, where, in fact, every |
| single browser really implemented WHATWG HTML. And there was politics involved |
| and all of that. But due to some great work by Shruthi and others, we got that |
| worked out now. So now WHATWG and W3C collaborate, but still, HTML and DOM are |
| really done in WHATWG. The JavaScript language is done in a different standards |
| group called ECMA. Yeah, the IETF, like, lower level networking stuff, there's |
| the IETF group. And yeah, there's a bunch of different standard groups. And |
| even within W3C, there's different levels of maturity. There are working groups |
| that produce these standard track documents. That's great for stuff that's |
| fairly mature. But when you want to start exploring and trying to explore a new |
| area and do something that's cheap to fail, that overhead doesn't really work. |
| And so things start in community groups, which are much lighter weight process. |
| So a lot of the new APIs that we do start in a group called the Web Incubator |
| Community Group in the W3C. And the idea is that you can start with a small |
| group of folks who are interested. And it's really, whoever is interested in |
| trying to solve a problem can get together in this forum, and really, it's just |
| about collaborating on GitHub trying to work together toward something that |
| might eventually become a spec that could be on the standards track in a |
| working group somewhere. |
| |
| 12:03 SHARON: And who are the people typically working in these organizations? |
| Are they people who have day jobs working on a browser or other open source |
| projects or what kind of things? |
| |
| 22:16 RICK: This is one of the things I love about working on the web. It's a |
| wide variety, even more so than you'd see if you look at who's contributing to |
| Chromium, right? There's people who contribute to Chromium just as a hobby in |
| their free time. But it's mostly Google employees and employees of Microsoft |
| and stuff like that. But in the standards world, I find there's a lot more |
| independence. There's a lot more - there's people who will - contribution can |
| be everything from chiming in on a few GitHub issues to being an editor of the |
| specification. So the investment can vary quite a lot. But yeah, so, certainly, |
| browser vendors invest a lot. A lot of spec work is done by browser vendors. |
| But then also, the people using those APIs - so sometimes somebody will have a |
| particular need for an API in their product, and they'll care enough about it |
| to go and invest in either doing the standards work themselves or hiring an |
| external consultant to go and do that standards work. My favorite example of |
| that, if you've ever used CSS Grid, a lot of that work for Grid - I mean, I |
| think a lot of the standards work was done by Microsoft initially. And I'm sure |
| there's other browser folks involved. But at the end of the day, Bloomberg, the |
| financial company, they have these Bloomberg terminals, right? They run an |
| application that's just running inside of Chromium. And it's not really running |
| on the web. It's just running inside of Chromium. But they're the ones who |
| hired Igalia, which is a consultants company to go and implement this grid |
| feature in Chromium and WebKit, I believe. |
| |
| 23:47 SHARON: Can you tell us a bit more about Igalia? Because if you look at |
| changes - if you just look at the blame in Chromium code search, you see Igalia |
| emails come up a lot. So who are they? |
| |
| 24:00 RICK: Igalia is the number one contributor to Chromium outside of Google. |
| |
| 24:00 SHARON: OK. |
| |
| 24:05 RICK: And they're a collective, which means they're a group of folks. So |
| they're not a company, but you can think of them as an independent consultancy |
| agency, basically, that are web browser or open source experts. They don't just |
| do web, they do other stuff as well. But they're really open source experts for |
| hire. And so, yeah, it's really cool. It means that any some company thinks, |
| oh, I really wish the web was better in this way, but I don't know how to make |
| that happen. They can just go hire Igalia. And there's others there's some |
| other companies like Bocoup. And there's a few other consulting companies. But |
| Igalia is the one that's really biggest into contributing directly to browser |
| engines. |
| |
| 24:43 SHARON: Oh, neat. OK. |
| |
| 24:43 RICK: And Google, ourselves, sometimes we find it makes a lot of sense |
| for us to just hire Igalia to do some work. |
| |
| 24:48 SHARON: Right, like the Mojo legacy IPC transition. |
| |
| 24:55 RICK: Yeah, some of our code health stuff, we've found it to be most |
| effective to hire a guy to help us with some of it. |
| |
| 25:00 SHARON: OK, cool. I didn't know that. |
| |
| 25:00 RICK: Yeah. |
| |
| 25:00 SHARON: Neat. With the open source versus proprietary - I don't know, |
| company browsers, how does Chrome versus Chromium fit into this whole web |
| platform as a whole? |
| |
| 25:12 RICK: So in general, we want the platform to be consistent across |
| browsers. So, I mean, Chrome and Chromium are already almost identical in a |
| bunch of ways, in most ways. There are places where Chrome adds, and actually, |
| I guess you could even argue, Chrome does add some things to the platform. So |
| media codecs, for example, is H.264 is a video codec that requires a license. |
| And so Chromium doesn't come with an H.264 decoder because you've got to get a |
| license to have that. Whereas, Google Chrome pays the license fee in order to |
| be able to ship an H.264 decoder. So in that sense, that is really an aspect of |
| the platform. You have a web page that plays H.264 videos. That is a web page |
| that will work in Google Chrome and not Chromium. But that's an exception. We |
| don't like that. In general, we would try to avoid ever getting that situation |
| ever again. But otherwise, from a platform perspective, you can expect them to |
| really be identical. |
| |
| 26:10 SHARON: OK. With Chrome, and probably to a lesser extent, Chromium, but |
| not really, there's a lot of people who use this browser. So how do people who |
| work on Chrome try to maintain an open web and have everybody have a say in |
| things, when if Chrome just went ahead and made a change, it would force other |
| browsers to do a similar thing. And generally, we don't want that. So how do we |
| balance that? |
| |
| 26:40 RICK: Yeah, there's a tricky balance. Like I said, ultimately, at the end |
| of the day, Google feels accountable to our users to build the web that we |
| think our users want. But we also feel accountable to the web industry, the |
| ecosystem, to have an interoperable and standards-based web. And so one thing |
| we try to do is we have this the Blink launch process I mentioned earlier, |
| where a key part of that process is we want to make sure that any time we want |
| to make a change to the web platform in Chromium, that change needs to be |
| described in a way that others could implement, so that means a specification. |
| And critically, it means a specification that has IP rights, that other people |
| could implement it in a way that they're not likely to get sued for patent |
| infringement for. But also, we want to have a public debate of the trade-offs, |
| the maturity level of this, is this API well enough justified, is the |
| specification a high enough quality. Any time we're shipping a new API, we also |
| want to make sure that we have solicited feedback from others. So we generally |
| will file standards positions. Both WebKit and Gecko, the Firefox engine, have |
| a process for us to file a request for standards position to ask, hey, what's |
| your opinion of this. And just because they don't like it doesn't mean we won't |
| ship it. But we have a group of us called API owners, who, anytime somebody |
| wants to ship a new API, we review these criteria - which, by the way, if you |
| go to [chromestatus.com], you can see each of the features we're shipping. And |
| you can see all the fields that people have to fill in, in order to request |
| permission to ship a new API. And then the API owners review those and make a |
| judgment call on whether the benefit of shipping this outweighs the cost or the |
| risk that this won't be an interoperable behavior across browsers. |
| |
| 28:26 SHARON: OK, yeah. I feel like it's the kind of thing where the more you |
| hear about it, the more you're just like, how does any of this work? |
| |
| 28:32 RICK: Yeah, it's kind of incredible. It feels like a lot of process |
| overhead sometimes. And I really feel - we try to make it as lightweight as |
| possible. We try to make it also - we want it to be an environment where it's |
| OK to make - if you're posting to this mailing list that lots of people watch, |
| and it's OK to make mistakes there. I've made a bunch of mistakes in some of my |
| engagement on some of this stuff in public. So it can be a little nerve |
| wracking sometimes working in public. I know Elly talked about that a little |
| bit in open source as well. Yeah, but it's incredible at the end of the day, we |
| do end up with a web that mostly works the same across browsers. In fact, I |
| would argue, if you look at the whole history of the web, I would say that the |
| web is probably more interoperable today than - I mean, it used to be that it |
| was common for websites to say best viewed in. Best viewed in Netscape |
| Navigator 4, right? And that was - it took a lot more heroics, I would say, |
| back in the day to make a website that worked consistently across browsers, |
| where now we have much more of a culture of each of the browser engines, |
| generally, typically, prefers to ship only when there's a good quality spec and |
| plausible interoperability between engines. But that's still relatively new |
| when you think about it in terms of the whole history of the web. |
| |
| 29:54 SHARON: With the point of the web being more interoperable than before, |
| now with things being, like, you see Chromium based things in the most random |
| places, right? Cars, that space thing... |
| |
| 30:11 RICK: Yeah, SpaceX. |
| |
| 30:11 SHARON: Right. All sorts of devices, embedded systems, and all that kind |
| of stuff. So how has that kind of thing - more things becoming internet enabled |
| and connected - I was trying to buy a washer, and only one model was not |
| internet connected. I was like, I don't need this. But anyway. |
| |
| 30:31 RICK: I have a blender that runs a version of WebKit maintained by |
| Igalia. |
| |
| 30:38 SHARON: Yeah. |
| |
| 30:38 RICK: It's pretty cool, because it has a screen that you can pull up |
| recipes on, stuff like that. |
| |
| 30:44 SHARON: OK. Yeah, so now that all these other things are now computers, |
| that not that long ago, only computers were computers, how has that affected |
| the web platform? Because a lot of times, in - so my mom works in navigation, |
| which affects a lot of this stuff. And sometimes you'll hear things like, why |
| is this using Chromium? So how has the craziness increase of the uses of |
| Chromium, how has that affected the web platform? |
| |
| 31:11 RICK: Yeah, it's interesting. We created Chromium to be a great web |
| browser. And we've often been faced with this struggle, we wanted Chromium to |
| be open source. We wanted people to get whatever benefit from it that they |
| could. We wanted them to use it for other reasons. But we've also found it to |
| be important to really stick to the principles, what is Chromium for? And so we |
| say, Chromium is intended to be a web browser. And people use Chromium in other |
| environments, like, you can use Electron as an application platform. You can |
| build Slack or VS Code or whatever. I think Darin talked about this a bunch in |
| his... |
| |
| 31:52 SHARON: You watch the videos. Wow. |
| |
| 31:52 RICK: Of course I did. [LAUGHTER] But I think that's awesome. But it's |
| dangerous, I think, to think that, hey, we should just make Chromium. Chromium |
| should be a project that should be an operating system for everything. And so |
| instead, what we've sometimes found ourselves saying is, hey, you're using this |
| for a fork of the web, therefore, you should use a fork of Chromium. So I mean, |
| even e-readers, some e-readers like EPUB format is CSS with some bespoke |
| additional things in it that aren't available in web browsers. |
| |
| 32:25 SHARON: Right. |
| |
| 32:25 RICK: And so we've said, hey - at least, it was at some point. I don't |
| know the current state. Maybe this has changed. There's TVs that have web |
| browsers built into them. And then they have some non-web extensions to the web |
| platform for their TV platform. And so in all those cases, our principle is, |
| hey, it would make it - it would be an unreasonable maintenance burden on |
| Chromium to support all of these different use cases. Think of your CQ. We've |
| got enough bots on the CQ already, right? If we had to have bots for all these |
| different... |
| |
| 32:55 SHARON: TV, fridge, blender. |
| |
| 33:01 RICK: Yeah, exactly, from every different manufacturer, every different |
| version, right? |
| |
| 33:01 SHARON: Yeah. |
| |
| 33:01 RICK: So we think it's great if people want to use Chromium for other use |
| cases than what it is intended, which is building browsers. But that's not a |
| cost we're willing to then impose back on the upstream repository. |
| |
| 33:14 SHARON: Right. Yeah, I guess that's another trade-off too, of just |
| simplicity and hand-in-hand security versus features, because just from what I |
| see, there's so many cases where it's like, oh, we needed this. And there's |
| just all these edge cases. And it's very hard to reason about. And you pay for |
| that, in terms of security and just how long it takes to figure out what to do, |
| what you're doing. |
| |
| 33:41 RICK: Yeah. And we saw this. I mean, this is a trade-off that I think any |
| open source project needs to make. It's reach versus complexity or something. |
| And I remember back when Chromium was using WebKit as our browser engine, |
| WebKit did support a variety of different use cases that Chromium didn't |
| support. And it did, for example, there were - I forget the number - there was |
| five or six different build systems that you could use to build WebKit. And so |
| when you added a file, you had to go and update five or six different build |
| rules, right? We take it for granted now that you just have to update one GN |
| file. But for those of us that worked in the WebKit days, and I'm guessing |
| maybe it's somewhat better now. But I'm sure there's still an aspect of that. |
| And it's a trade-off, right? There's a benefit of, you can get broader reach if |
| you're willing to support a wider variety of configurations. What toolchains do |
| you use? We've taken a pretty hard hardline stance on Chromium supports Clang. |
| And Igalia's heroics notwithstanding, they do a lot of work to make sure that |
| GCC can still work. But officially, Chromium just supports Clang because it's |
| already so complicated to reason about all of our different dependencies, that |
| we want to take every opportunity we can to say, hey, the core of the project, |
| we're just going to pay these costs and try to avoid these multiplicative |
| matrices of test environments. |
| |
| 34:57 SHARON: Yeah. Yeah, I think, looking at things now and learning about how |
| things are now, it's like, oh, everything is so hard. But then you hear about |
| stuff like this, you're like, oh, things used to be so much worse. |
| |
| 35:02 RICK: Yeah, and that was - I mean, another aspect of the complexity here |
| is where do you define your repository boundaries? Chromium is a |
| self-contained, well, it's not self-contained. Chromium is designed to be a |
| browser, pulls in a bunch of third-party dependencies. So, for example, V8, our |
| JavaScript Engine, comes from a different repository. But the Chromium UI and |
| the web platform Blink sit in one repository today. It used to be, obviously, |
| when we were using WebKit, that was a different repository. Apple owned the |
| WebKit repository. We would pull it into Chromium. But then it would mean, |
| those of us who work back in that day, a lot of changes you wanted to make, you |
| had to do these three-sided patches, where it's like, oh, you're going to want |
| to use something in - let's see, how did this work? Man, this was a long time |
| ago. You had to add some code to Chromium, some scaffolding for some APIs that |
| WebKit might call into. And then you'd go and you'd land the WebKit patch that |
| could call into those Chromium APIs. And then you had to go land the Chromium |
| patch that would call into the WebKit API. So it was pretty common that one |
| feature that would be one commit for us today would be three separate commits |
| in the old days. And if you want to make a breaking change, man, that's even |
| harder. You're trying to change the protocol between WebKit and Chromium, |
| you've got to basically add a new version of the API into Chromium first, and |
| then update in one commit. And then your next commit, you have WebKit call into |
| that new one. And then your third commit could go remove the old one. And it |
| was just - there's a trade-off there. It's more generality, but a lot more |
| complexity. |
| |
| 36:28 SHARON: Oh, my goodness. [LAUGHTER] Right, so now that we have reduced |
| some of that complexity in that way, it's like, if you have a bigger spaces, |
| you fill it with stuff, right? |
| |
| 36:40 RICK: Yeah, that's true. |
| |
| 36:45 SHARON: Now that difficulty has been taken away, what difficulty has |
| moved in to replace it? |
| |
| 36:45 RICK: I mean, we've just added a lot of code, a lot of complexity. The |
| web platform's gotten a lot more complicated. Again, this is a trade-off that |
| people would debate. As we've gone to try to meet more and more use cases on |
| the web, we've made the web platform more complicated. We've added more APIs |
| that can do different things. You could argue, should I be able to build a |
| website that controls my LEGO robot over Bluetooth, or maybe you could just |
| say, that's not a use case we care about on the web. This is something we |
| actively debate, we disagree with other browsers on. On Chrome, partly, we take |
| the security philosophy of saying, well, we would rather our users are using an |
| API that could have some abuse risk than installing a native application that |
| almost certainly is riskier. |
| |
| 37:33 SHARON: Right. |
| |
| 37:33 RICK: So again, there's a trade-off to be struck. But the complexity |
| cost, the burden that we're creating on the whole web platform by having all |
| this complexity in the long run, is it actually paying for itself? Reasonable |
| people will disagree on that. |
| |
| 37:47 SHARON: This is more of just a miscellaneous curiosity question. But in |
| terms of the people debating these kinds of things, who are actively working on |
| standards and all that kind of stuff, do you have an idea of ballpark how many |
| people across various organizations and individuals... |
| |
| 38:05 RICK: That's a good question. |
| |
| 38:05 SHARON: Are doing it? Because when I first joined Chromium and stuff, a |
| lot of people work on Chrome. But it's not as many people as you would think |
| for how widely used it is. Anytime you're using the internet, Chrome is in |
| there somewhere, probably, like Chromium. And for that amount of use, it's |
| like, oh, there's not a ton of people working on this. |
| |
| 38:24 RICK: I would say, if you just say for the web, what's the set of folks |
| who are working on trying to evolve the web platform, the web standards |
| community. And I assume we'd probably go all the way down to HTTP. And it |
| depends a lot where you draw the line. |
| |
| 38:36 SHARON: Right. |
| |
| 38:36 RICK: Because there's a ton of people, for example, in the identity |
| community that talk about different standards for identity that browsers don't |
| necessarily understand. It's built on top of the web. So if we exclude all that |
| and we just say, like, number of people involved in trying to evolve the |
| specifications that make up the web platform, my guess would be somewhere on |
| the order of probably less than 10,000. It's probably more than a couple |
| thousand. But yeah, that'd be my guess. |
| |
| 39:07 SHARON: Yeah. Because that's somehow both more and less than I expected. |
| I don't know what I expected. |
| |
| 39:13 RICK: Yeah, I mean, that might be an overestimate. I mean, you go to a |
| conference, like, W3C TPAC is W3C is annual conference. And I think - I don't |
| know the numbers off the top of my head. But I think there's often a couple |
| hundred people there. |
| |
| 39:19 SHARON: OK. |
| |
| 39:25 RICK: Right. So those are probably the most - and including virtual |
| attendees, I think it's 200 or 300 or something like that. Anyway, I probably |
| should know those numbers off the top of my head. |
| |
| 39:31 SHARON: I don't think - that doesn't seem like that useful information to |
| have. |
| |
| 39:37 RICK: I think it's a really good - it's a really interesting question. If |
| you think of the web as this organic ecosystem, like, we're talking about web |
| ecosystem. So you can think of - and it's almost like this living, breathing |
| entity that changes over time. Some basic questions like, well, how big is it? |
| How many people are contributing to it? How much money is going into evolving |
| the web ecosystem? For the most part, we just don't know. And also, then you |
| could ask, well, is that good or bad? Does society as a whole benefit when more |
| money goes into making the web better? Or actually, would society benefit more |
| if there was this is a more stability and there was more constraint and the web |
| was changing less? There's really hard questions. And I think it's just like we |
| see with climate or any question about natural ecosystems, it's a very complex |
| system that's just incredibly hard to reason about. Oftentimes, the best you |
| can do is be scientific and go do a study. Change something and see the |
| reaction. |
| |
| 40:34 SHARON: Right. Yeah, I mean, it's very crazy to think about because a lot |
| of the web is available just for free. And you're not paying for it, but it all |
| works. There's a lot of work that goes into it and keeping it running. So |
| what's going on there? |
| |
| 40:52 RICK: It's really fascinating to think about the economics of this. For |
| every platform, what's the economics that led to this platform existing? And |
| early computing, it was really about device sales. You would buy an IBM |
| mainframe or something, and the cost of buying that mainframe would go to build |
| the operating system, I'm assuming. I didn't use computers back then. But |
| certainly, like, Windows, Windows was funded by - you buy a PC, and you pay for |
| a Windows license. So you're really buying the operating system. Where does the |
| money come from for building browsers? The reality today is that there's |
| multiple reasons why companies might want to build browsers. At Google, one of |
| the reasons we invest in browsers is because we want to make sure that Google |
| services can have a platform that they can run on, a stable platform for you to |
| be able to use Gmail or whatever. But, of course, search engines are a big part |
| of that as well. A lot of browsers are funded by search engines, at the end of |
| the day. |
| |
| 41:52 SHARON: Yeah. That makes sense. Anyway, that's very complicated. That is |
| not my day job, at least. So we will not talk about things we don't know about. |
| Yeah. We have a bit of time left. Do you have any just general fun stories |
| about web platform things and the time you've worked on it? Hot takes, we like |
| those. |
| |
| 42:09 RICK: Yeah, what was the one I was telling you I was going to tell you |
| about? |
| |
| 42:14 SHARON: Oh. |
| |
| 42:14 RICK: I forgot now. |
| |
| 42:14 SHARON: OK. Something about a breaking change? |
| |
| 42:19 RICK: Yeah, I don't know. |
| |
| 42:19 SHARON: OK. |
| |
| 42:19 RICK: I mean, one of my fun - just going back to this question. We were |
| talking earlier about compatibility. And it's interesting to me, whenever a new |
| browser gets started, it's always a big challenge to go make it work with the |
| existing web. And once a browser becomes popular, then somehow it becomes less |
| of a challenge. It's like, oh, developers are going to do the work now to make |
| sure that it works in this browser. And so it was, I think six or seven years |
| ago or something, and I was doing some work for Gmail. And I was seeing how |
| hard it was to make Gmail work reliably across websites. And we're also talking |
| with, I think this was the time when Microsoft decided to build their Edge HTML |
| browser engine. They were basically building a new browser engine from scratch |
| and trying to make it be compatible for the web. And we realized, man, a lot of |
| our ideals about, hey, the web is standards-based and whatnot, like, it was |
| falling down in practice, right? The web was actually - Edge HTML was having to |
| basically reverse engineer a lot of things and put a bunch of behavior into |
| their engine that wasn't in any spec anywhere. And we realized, holy crap, this |
| is actually a really big problem. We realized that we really weren't taking |
| this idea of conformance testing as a first class property of the web. If we're |
| trying to design the web to be a coherent platform, it's like software |
| engineering 101 to say, if you want a reliable platform, that platform needs to |
| have a test suite. And we really didn't have a test suite for the web back |
| then. Things like web platform tests existed back then. But we weren't treating |
| it as a first class part of our engineering process. And so we had this dream |
| back then to say, we need to put this as a first class part of our engineering |
| process such that whenever we change the web, we're always making sure that we |
| are contributing to this test suite. We imagined a future where any time |
| anything ever went into the web, it was always getting added to this test suite |
| so that conforming to this test suite was your test whether or not your browser |
| could actually run the web. Anyway, I bring this up just because, to me, it's |
| mind-blowing to realize, back then, that seemed like such an impossible task. |
| And I'd say, now, we've really crossed this threshold where all the browsers |
| now see conformance test suites, web platform tests, and some of the other |
| projects have their own test suites, as a first class part of the engineering, |
| the way we engineer the web. So I would say we've really up-leveled the |
| engineering of the web to be more disciplined. And I think everyone who's |
| worked on the web platform over the last 5, 10 years should feel proud of how |
| it's now engineered more like a real - not, congratulations, we have a test |
| suite. |
| |
| 44:49 SHARON: So for engineers who work on Chrome or other browsers, for a lot |
| of them, they don't really ever interact with the open web part of it, right? |
| So even in navigation, which seems like it affects a lot of stuff, very rarely |
| does it intersect with open web facing stuff. |
| |
| 45:08 RICK: If you're lucky. I don't know about you, usually it intersects |
| accidentally, right? I don't know about you, but every time I've had an intern |
| or a Noogler, and we said, oh, this would be a good starter bug. And it's |
| turned out, it's like, oh, this is going to be a one week bug as your starter |
| bug. And it's turned out, oh, it turns out when they went to fix it, some weird |
| web page somewhere broke. And it turned into a six month project of |
| understanding the compatibility constraints and trying to find a way to do it |
| in a way that doesn't break websites. |
| |
| 45:32 SHARON: OK, yeah, that is my everyday life. Not necessarily always for - |
| more importantly, I guess, even for where I am, having a solid understanding of |
| how the web platform works is not strictly necessary for getting a lot of |
| things done. For some things, it is. So for people who don't really interact |
| with the more open web standards, that side of things, what do you think they |
| should know about the open web for just being someone who works on a browser? |
| |
| 46:03 RICK: That's a good question. Certainly, there's a line of thought that |
| anybody working on a browser should try being a web developer. Try building |
| just a little hobby website. But I don't know if that's - I think there's some |
| benefit to that. When I started on Chrome, I said, how am I going to work on |
| Chrome? I haven't built for the web - I think the line I used, I did some work |
| for a website development company back in the mid '90s. So I was like, hey, |
| last time I built for the web, tables were new. So I went to work - that's why |
| I was working on Gmail for a little while. I was trying to get myself |
| experience in what it's actually like. And actually, that served me really |
| well. That helped me see that we were missing this big problem with |
| interoperability. But I don't think it's necessarily for everyone. I think it's |
| very reasonable to say that you don't need to be an expert. Being a web |
| developer and being a browser engineer are very different jobs. And I don't |
| consider myself an expert web developer at all. And so, I think, in general, it |
| is totally fine to be an expert in browser navigation, for example, without |
| being an expert in web development. It might get harder - depending maybe if |
| you're lower in the stack, it's probably easier. For example, if you work on |
| the layout system or the style system, you probably need to at least have some |
| understanding of web design and how you would use the style system to make UI |
| in different ways. |
| |
| 47:32 SHARON: Yeah, because I think, since working with a bunch of security |
| folks, a lot of them do have compatibility-based aspects to their job of just, |
| how do we make the HTTP headers, for example, kind of thing. And then, like, |
| oh, I don't know how any of this works, OK. |
| |
| 47:58 RICK: I mean, one thing I'll say is anytime - I found it useful for me, |
| working on browsers for - it's been 13 years now, I guess - is when I've worked |
| on a problem, I very often start on MDN. And I say, oh, here's a bug that |
| somebody's filed. What is this web platform API that they're using? And I've |
| often gone back and forth between MDN, Mozilla Developer Network, is the API |
| reference docs for the web. And it's pretty darn good. It does a good job of |
| explaining. I would never start with a spec, even for somebody that's - the |
| specs go into the minutia detail. They're not intended for web developers. |
| They're intended for browser engineers. So I usually go back and forth between |
| MDN and then a simple editor like JSBin or something, where you can just take a |
| chunk of HTML and CSS and JavaScript and just paste it over here and just hack |
| on changing it. And I always find that to be the best way to learn. |
| |
| 48:44 SHARON: OK. All right, well, go and make some websites, guys. Yeah. All |
| right, well, that was cool. Yeah, it's very neat to hear about how Chrome fits |
| in with the web at large, because if you're working on a browser, it's like, |
| OK, this is my project, my job, whatever. And if you don't interact with the |
| rest of - if you're not in one of these other - working on a thing that is open |
| web facing, it's easy to forget about all of that. Like, oh yeah, this is part |
| of the internet. |
| |
| 49:20 RICK: I think it's really easy to get focused on your area of expertise. |
| And I think it's helpful to take a step back every now and again and look at |
| the 10,000 foot view and realize, hey, collectively together, we're building |
| this unique thing, this open computing platform that is, by far, the world's |
| dominant computing platform. There's more web developers than developers of any |
| other platform, I think, by an order of magnitude or something like that. And |
| it's this crazy, messy, chaotic thing. It's like Wikipedia in a way, right? |
| Most people would assume, it couldn't possibly work. But actually, when we get |
| the incentives aligned right, it actually seems to work over time. And we're |
| actually making this open platform that gets more and more powerful over time. |
| It's pretty cool. |
| |
| 50:04 SHARON: Yeah, the topics I've been trying to cover so far have been like, |
| these seem like very important things. And I feel like - it's like, oh, I |
| should know about this. I don't, but I should. And this is another very good |
| step along that journey. Thank you very much for sitting down, talking. |
| |
| 50:18 RICK: Thank you, it was fun. |
| |
| 50:18 SHARON: Yeah, have a good day. |
| |
| 50:24 RICK: Thanks, you too. |
| |
| 50:24 SHARON: There are two in person, and they're both - they're clearly a |
| work in progress. |
| |
| [What's Up With Mojo]: https://www.youtube.com/watch?v=at_35qCGJPQ |
| [What's Up With Open Source]: https://www.youtube.com/watch?v=zOr64ee7FV4 |
| [What's Up With Processes]: https://www.youtube.com/watch?v=Qfy6T6KIWkI |
| [What's Up With Site Isolation]: https://www.youtube.com/watch?v=OH-bt7spDgo |
| [bit.ly/blink-compat]: https://bit.ly/blink-compat |
| [chromestatus.com]: https://chromestatus.com/ |