Nigel Tao | 187a479 | 2023-09-28 22:30:44 | [diff] [blame] | 1 | # What’s Up With Open Source |
| 2 | |
| 3 | This is a transcript of [What's Up With |
| 4 | That](https://www.youtube.com/playlist?list=PL9ioqAuyl6ULIdZQys3fwRxi3G3ns39Hq) |
| 5 | Episode 6, a 2023 video discussion between [Sharon ([email protected]) |
| 6 | and Elly |
| 7 | ([email protected])](https://www.youtube.com/watch?v=zOr64ee7FV4). |
| 8 | |
| 9 | The transcript was automatically generated by speech-to-text software. It may |
| 10 | contain minor errors. |
| 11 | |
| 12 | --- |
| 13 | |
| 14 | What does it mean for Chrome to be open source? What exactly is Chromium? Can |
| 15 | anyone contribute to the browser? Answering all that is today's special guest, |
| 16 | Elly. She worked all over Chrome and ChromeOS, and is passionate about |
| 17 | accessibility, the open web, and free and open-source software. |
| 18 | |
| 19 | Notes: |
| 20 | - https://docs.google.com/document/d/1a6sdrspJgAHDdQMMNGV0t7zo8QWgqq0hgsyV55tc_dk/edit |
| 21 | |
| 22 | Links: |
| 23 | - [What's Up With BUILD.gn](https://www.youtube.com/watch?v=NcvJG3MqquQ) |
| 24 | - [What's Up With //content](https://www.youtube.com/watch?v=SD3cjzZl25I) |
| 25 | - [What are Blink Intents?](https://www.youtube.com/watch?v=9cvzZ5J_DTg) |
| 26 | |
| 27 | --- |
| 28 | |
| 29 | 00:00 SHARON: Hello, and welcome to "What's Up With That?" the series that |
| 30 | demystifies all things Chrome. I'm your host, Sharon. And today, we're talking |
| 31 | about open source. What does it mean to be open source? I've heard of Chrome, |
| 32 | but what's Chromium? What are all the ways you can get involved? Answering |
| 33 | those questions and more is today's special guest, Elly. Elly currently works |
| 34 | on the Chrome content team, which is focused on making the web more fun and |
| 35 | interesting to use. Previously, she's worked all over Chrome and Chrome OS. |
| 36 | She's passionate about accessibility, the open web, and free and open-source |
| 37 | software. Welcome, Elly. |
| 38 | |
| 39 | 00:34 ELLY: Thank you, Sharon. |
| 40 | |
| 41 | 00:34 SHARON: All right. First question I think is pretty obvious. What is open |
| 42 | source? What does that mean? |
| 43 | |
| 44 | 00:40 ELLY: Yeah, so open source is a pretty old idea. And it basically just |
| 45 | means, in the purist sense, that the source code for a program is open to be |
| 46 | read by others. |
| 47 | |
| 48 | 00:51 SHARON: OK. And Chrome, the source code is available to be read by |
| 49 | anyone. What else is it? Open source - I've heard of open-source community. It |
| 50 | seems like there's a lot to it. So why don't you just tell us more about open |
| 51 | source, generally? |
| 52 | |
| 53 | 01:03 ELLY: Yeah, for sure. There's quite a bit of nuance here. And there's |
| 54 | been differing historical interpretations of some of these terms, so I'll - |
| 55 | there's two big camps that are important to talk about. One is open source, |
| 56 | which means what I said - the source is available to be viewed. There's also |
| 57 | the idea of free software, which is software that actually has license terms |
| 58 | that allow for people to modify it, to make their own derivative versions of |
| 59 | it, and that kind of thing. And so historically, there was a pretty big |
| 60 | difference between those things. These days, the two concepts are often talked |
| 61 | about pretty interchangeably because a lot of open-source projects are free |
| 62 | software, and all free software projects basically are open source. But the |
| 63 | distinction used to be very important and is still pretty important, I guess. |
| 64 | Chromium is both open source and free software. So we ship under a license that |
| 65 | allows for - not only for everyone to read and look at our code, but also for |
| 66 | other folks to make their own versions of Chromium. So, yeah, Chromium, both |
| 67 | open source and free software. |
| 68 | |
| 69 | 01:56 SHARON: OK, very cool. And you mentioned Chromium in there. But I think |
| 70 | for most people, when they think of the browser, they call it Chrome. So what |
| 71 | is the difference between Chrome and Chromium? Are they the same thing? I think |
| 72 | people, myself included, sometimes use those interchangeably, especially when |
| 73 | you work on it. So what is the difference there? |
| 74 | |
| 75 | 02:16 ELLY: Yeah, fantastic question. So Chromium is an open-source and free |
| 76 | software web browser that is made by the Chromium Foundation, which is like an |
| 77 | actual .org that exists somewhere on the internet. Chrome is a Google-branded |
| 78 | web browser that is basically made by taking Chromium, which is an open-source |
| 79 | and free software web browser, adding some kind of Google magic to it, like |
| 80 | integrations with some Google services, some kind of media codecs that maybe |
| 81 | aren't themselves free software, that kind of thing, bundling that up into a |
| 82 | more polished product which we call Google Chrome, and then shipping that as a |
| 83 | web browser. So Chromium is an open-source project. Google Chrome is a Google |
| 84 | product that is built on top of Chromium. |
| 85 | |
| 86 | 03:03 SHARON: OK. So Google Chrome is a Chromium-based browser, which is a term |
| 87 | I think that people who work in any browser stuff - it's a term that they've |
| 88 | all [INAUDIBLE] before. |
| 89 | |
| 90 | 03:08 ELLY: Yeah, exactly. And in fact, you alluded to the fact that we |
| 91 | sometimes use those terms interchangeably. And especially at Google, we |
| 92 | sometimes get a little confused about what we're talking about sometimes |
| 93 | because we're - the Google Chrome team are the biggest contributors to |
| 94 | Chromium, the open-source project. And so we tend to sometimes talk about the |
| 95 | two things as though they're the same. But there's a really important |
| 96 | difference for folks who are working on other Chromium-derived browsers. So if |
| 97 | you're working on a Chromium derivative that a Linux distribution ships, for |
| 98 | example, your browser is based on Chromium, and it's really not Chrome. It's |
| 99 | Chromium, right? It is the open-source browser that Chrome is based on. But |
| 100 | it's not the same thing at all. |
| 101 | |
| 102 | 03:52 SHARON: Yeah, if you want to learn a bit more about basing things on |
| 103 | Chromium, the content episode is a good one to check out. We talk a bit about |
| 104 | that and embedding Chrome in Chromium and what that means. So - |
| 105 | |
| 106 | 04:03 ELLY: Yeah, absolutely. |
| 107 | |
| 108 | 04:03 SHARON: check it out if you [INAUDIBLE]... |
| 109 | |
| 110 | 04:03 ELLY: And there's also, in the Chromium source tree, there's actually a |
| 111 | thing called Content Shell, which is a minimal demonstration browser. It's like |
| 112 | the rendering engine from Chromium wrapped in the least amount of browser |
| 113 | possible to make it work. And we use it for testing, but it's also a really |
| 114 | good starting point if you're trying to learn how to build a Chromium |
| 115 | derivative browser. |
| 116 | |
| 117 | 04:22 SHARON: OK, very neat. So I think a next very natural question to come |
| 118 | out of this is, why is Chrome or Chromium - Chromium rather - going to try to |
| 119 | be good about using those correctly here - but why is Chromium open source? |
| 120 | |
| 121 | 04:40 ELLY: Yeah, so this is the decision that we made right when we were |
| 122 | starting the project actually. And it's based on this really fundamental idea |
| 123 | that the web benefits when users have better browsers. So if we, like the |
| 124 | Chromium project, come up with some super clever way of doing something, or we |
| 125 | come up with some really ingenious optimization to our JavaScript Engine or |
| 126 | something like that, it's better for the web, better for everyone, and |
| 127 | ultimately even better for Google as a business if those improvements are |
| 128 | actually adopted by other people and taken by other people and used by them. So |
| 129 | it is better for us if other people make use of anything clever that we do. And |
| 130 | separately from that, there's this idea that's really prevalent in open-source |
| 131 | communities of, if people can read the code, they're more likely to find bugs |
| 132 | in it. And that's something that Chromium constantly benefits from, is folks |
| 133 | who are outside the project, just kind of looking through our code base, |
| 134 | reading and understanding it, spotting maybe security flaws that are in there. |
| 135 | That kind of research is so much easier to do when the source code is just |
| 136 | there, and you're not trying to reverse-engineer something you can't see the |
| 137 | source to. So we get a lot of benefit from being open-source like that. And |
| 138 | those are the reasons we had originally, and those still all hold totally true |
| 139 | today, I think. |
| 140 | |
| 141 | 05:51 SHARON: That makes sense. Yeah, it seems, at first, a bit odd for a big |
| 142 | company like Google to make something like this open source. But there are |
| 143 | other massive open-source things at Google - Android, I think, being the other |
| 144 | canonical example, which we don't know too much about, but we won't be getting |
| 145 | too into that. But there are other big open-source projects around. |
| 146 | |
| 147 | 06:08 ELLY: Yeah, absolutely. And there's also, like - there's Go. That's an |
| 148 | open-source programming environment, like a language and a compiler and a bunch |
| 149 | of tools around it that is open source built by Google. There are plenty of |
| 150 | other open-source and free software projects built by large corporations, often |
| 151 | for really the same reasons. We benefit because the entire web benefits from |
| 152 | better technology. |
| 153 | |
| 154 | 06:32 SHARON: Yeah, I think some of the Build stuff we do is open source. Check |
| 155 | out the previous episode for that. And that's, yeah, exactly - not strictly |
| 156 | only used by - |
| 157 | |
| 158 | 06:37 ELLY: Yeah, and by the way, partly because we're open source - like, for |
| 159 | example, the Chromium base library, which is part of our C++ software |
| 160 | environment - our base library is regularly used in other projects, even things |
| 161 | that are totally unrelated to browsers, because it provides a high-quality |
| 162 | implementation of a lot of basic things that you need to do. And so that code |
| 163 | is being used in so many places we would never have anticipated and has done |
| 164 | honestly more good in the world than it would do if it was just part of a |
| 165 | really excellent browser. |
| 166 | |
| 167 | 07:13 SHARON: Something that someone on my first team told me was, if you've |
| 168 | changed anything in base, that probably is going to get run any time the |
| 169 | internet gets run, somewhere in that stack, which, if you think about it, is so |
| 170 | crazy. |
| 171 | |
| 172 | 07:26 ELLY: Oh, Yeah. Absolutely. Early in my career, I added a particular |
| 173 | error message to part of the Chrome network stack. And that network stack, too, |
| 174 | is one of those components that gets reused in a lot of places. And so |
| 175 | occasionally, I'll be running some completely other program. Like, I'll be |
| 176 | running a video game or something, and I'll see that error message that I added |
| 177 | being emitted from this program. And I'm like, oh, my code is living on in a |
| 178 | place I would never have really thought of. |
| 179 | |
| 180 | 07:51 SHARON: Oh, that's very cool. |
| 181 | |
| 182 | 07:51 ELLY: Yeah. |
| 183 | |
| 184 | 07:51 SHARON: Yeah. |
| 185 | |
| 186 | 07:51 ELLY: It's one of those unique open-source experiences in my book, of |
| 187 | seeing your own work being used like that by other folks you wouldn't have |
| 188 | anticipated. |
| 189 | |
| 190 | 07:57 SHARON: Yeah, that's very cool. So something I think I've heard you say |
| 191 | before that I thought sounded very cool was the open-source dream. So can you |
| 192 | tell us a bit more about what that is. What is that vision? It sounds very |
| 193 | nice. |
| 194 | |
| 195 | 08:09 ELLY: Yeah, so I talked about this a little bit. And earlier, I cautioned |
| 196 | against conflating open-source and free software. But it really is more of the |
| 197 | free software dream than the open-source dream, in some sense. That dream is |
| 198 | this idea that if we have software that is made available for free, under |
| 199 | licenses that let people modify it and make derivative works and keep using it, |
| 200 | that over time, everyone will get access to really high-quality and |
| 201 | freely-available software. And we will have a situation where the software that |
| 202 | people need is built by their communities, built by the people who are in those |
| 203 | communities, instead of being something that they have to buy from a company |
| 204 | that makes it. It'll be something they can instead produce for themselves. And |
| 205 | over time, I think that this has really played out in that way. If you look at |
| 206 | the state of operating systems today, for example, there are these really |
| 207 | high-quality, freely-available open-source free software operating systems that |
| 208 | are readily available and anyone can use, and they really do meet the needs for |
| 209 | a lot of folks. And then, in fact, it kind of circles back to where Linux is a |
| 210 | high-quality, free software open-source operating system that Google can then |
| 211 | turn around and make really good use of to build something like Chromium OS, |
| 212 | which is another free software open-source project that uses Linux as one of |
| 213 | its major components. And then we get to produce a product that the Chromium OS |
| 214 | engineering team would have had to spend a lot of time if we weren't able to |
| 215 | make use of that existing Linux kernel work. So you get into this cycle of |
| 216 | giving back and sharing and benefiting from the effects of other people |
| 217 | sharing. That's the free software dream to me. |
| 218 | |
| 219 | 09:57 SHARON: It does - yeah, that sounds great. And for sure - I try to use |
| 220 | open-source options when I can. When I edit these videos, I use something |
| 221 | open-source. It feels appropriate for what we're doing here. So, yeah, that |
| 222 | sounds like it would be - it's a good system that everyone contributes to and |
| 223 | everyone benefits from. And that's really nice. |
| 224 | |
| 225 | 10:10 ELLY: Yeah, absolutely. |
| 226 | |
| 227 | 10:16 SHARON: So going away from that towards the more less open-source part, |
| 228 | so what kind of things in Chrome, the browser, are not open source? You |
| 229 | mentioned a couple of things earlier. Can you tell us a bit more about some of |
| 230 | those things? |
| 231 | |
| 232 | 10:27 ELLY: Yeah, I'm going to caveat this by saying that I don't personally |
| 233 | work on the stuff I'm about to talk about. And so my knowledge is more |
| 234 | superficial. There's a couple things I'm pretty confident about. So one is, for |
| 235 | example, there's a few video formats that Chrome can play that Chromium cannot |
| 236 | play because Google has agreements with the companies that make those codecs |
| 237 | that allow us to basically license and embed their thing and ship it as part of |
| 238 | Chrome. But those agreements, we can't really extend them to everyone who might |
| 239 | make a Chromium browser. And so it ends up in a situation where there is a |
| 240 | closed-source component that's included in Chrome to make that possible. I'm |
| 241 | struggling to think of another example right off the top of my head. I believe |
| 242 | that there's also a couple things in Chrome that are integrating with Google |
| 243 | APIs, where they're features that are Chrome-specific because they're |
| 244 | Google-specific. And one of the things that is generally true between the two |
| 245 | products is that Chrome will have more Google integrations and more Google |
| 246 | magic and more Google smarts than Chromium will. And so I think some of those |
| 247 | are actually closed-source components that come from Google that get embedded |
| 248 | into Chrome. But because they're a closed-source, we wouldn't want to put them |
| 249 | into Chromium. |
| 250 | |
| 251 | 11:37 SHARON: Right. It seems like, yeah, I can sign into Chrome. I don't |
| 252 | expect that I'd be able to sign in with my gmail.com into, say, Chromium. I'm |
| 253 | not sure it's actually part of it, but that's a guess. |
| 254 | |
| 255 | 11:49 ELLY: Yeah, so that does work, except that you need to - any Chromium |
| 256 | distributor needs to go and talk to - basically, talk to the sign-in team to |
| 257 | get an API key that allows their browser to sign in. There is a process for |
| 258 | doing that. It doesn't actually require any closed-source code components. But |
| 259 | there is still a thing where you have to talk to the accounts team and |
| 260 | basically be like, hey, we're a legitimate web browser, and we want to allow |
| 261 | users to sign in. Because we don't want a situation where bots or malware are |
| 262 | doing fake user sign-ins from - pretending to be Chromium. That's bad. |
| 263 | |
| 264 | 12:25 SHARON: Right. That makes sense. Yeah, and I think because of where |
| 265 | Chrome and Chromium are positioned, I think there will be some interesting |
| 266 | comparisons and differences between Chrome, Chromium, and other internal |
| 267 | google3 projects. So that's kind of the term for things that are closed-source |
| 268 | Google - the typical Maps, Search, all that stuff - and also comparing Chromium |
| 269 | to other open-source projects. So we've talked a bit about the similarities and |
| 270 | differences between Chrome and Google internal. Are there any other things you |
| 271 | can think of that are either similar or different between Chrome the project |
| 272 | and the people who work on it and how people do things internally at Google? |
| 273 | |
| 274 | 13:11 ELLY: Yeah. So internally at Google, there's this very powerful, very |
| 275 | custom-built whole technology stack around the projects. There is a continuous |
| 276 | integration system. There's an editor. There's a source control system. There's |
| 277 | all of this stuff. Within Google, all of that is custom. And it's all fitted to |
| 278 | Google's needs. And a lot of it is just built from scratch, frankly. Whereas |
| 279 | for Chromium, we're using essentially off-the-shelf open-source stuff to meet a |
| 280 | lot of those needs. So, for example, for version control, we're just using Git, |
| 281 | which is I think the most popular version control system in the world right |
| 282 | now. It's definitely open source. And our build system, for example, which is |
| 283 | like GN and Ninja put together, those are both free software open-source |
| 284 | projects. Admittedly, both of them were, I think, started as part of Chromium |
| 285 | because we had those needs. But they, themselves, are free software components |
| 286 | that anyone else can also use to build a Chromium. And the reason why that's |
| 287 | done that way - like, why doesn't - it's actually a really good question. Why |
| 288 | doesn't Chrome, which is a Google project, use all of this amazing |
| 289 | infrastructure for engineering that Google has? And the answer is, we want the |
| 290 | Chromium project to be possible to work on for people who don't work at Google. |
| 291 | And so we can't say, oh, hey, whenever you're going to make a change, you have |
| 292 | to commit it into Google's internal source control system. That wouldn't work |
| 293 | at all. So we're almost - because we want to be an open-source project, and |
| 294 | because we want to have contributors from outside of Google, we end up almost |
| 295 | pushed into using this pretty open free software stack, which I - to be honest, |
| 296 | from my perspective, has a lot of other benefits. When we have new folks |
| 297 | joining the team, we can actually offer them tools they're already pretty |
| 298 | familiar with. They don't have the feeling that new Googlers sometimes get, |
| 299 | where they're totally disoriented. Like, everything they know about programming |
| 300 | doesn't apply anymore. We actually be like, hey, here's Git. You know how to |
| 301 | use this. Here's Gerrit, which is another piece of open-source software that we |
| 302 | use. They may not have used Gerrit before, but a lot of projects do. And so |
| 303 | they might have run into it previously. So it has pluses and minuses, |
| 304 | definitely. So that's a big difference. There's also a bit of what I would say |
| 305 | is a cultural difference more than anything else because most Google projects |
| 306 | that are not open source - so I'm not talking about things like Android or Go |
| 307 | or something like that - but projects that are really just not open source, |
| 308 | like Search, their ecosystem of discussion and culture and stuff is very much |
| 309 | inside Google. Whereas for Chromium, we constantly are getting ideas and |
| 310 | suggestions and code changes and stuff from outside of Google. And so we also |
| 311 | tend to have perspectives from outside of Google in our discussions more often |
| 312 | as we work on Chromium. So part of that is at the level of, if we're going to |
| 313 | make a change, we would have maybe input coming in on that change from Mozilla |
| 314 | even. They're a group we collaborate with a ton on web standards. And so we |
| 315 | would have their perspective in the discussion. Whereas if we were working |
| 316 | entirely within Google, we might not have those external perspectives. So |
| 317 | culture-wise, I feel like Chromium has more perspectives in the room sometimes |
| 318 | when we're thinking about stuff. |
| 319 | |
| 320 | 16:26 SHARON: That makes sense because browsers exist across other companies |
| 321 | too, and there's a lot of compatibility and standards and stuff. So just in |
| 322 | that nature of things, you have to have a lot more of this collaboration. If |
| 323 | you make a change, it'll affect all of the embedders maybe, and then you have |
| 324 | to think about this. And, yeah, there's a lot more discussion - [INTERPOSING |
| 325 | VOICES] |
| 326 | |
| 327 | 16:42 ELLY: Yeah, absolutely. |
| 328 | |
| 329 | 16:42 SHARON: If you're Search, you're like, OK, we're going to, I don't know, |
| 330 | do our thing. |
| 331 | |
| 332 | 16:47 ELLY: Yeah, you have more - I don't know if "autonomy" is the right word. |
| 333 | But, yeah. I want to caveat this by saying I'm not on Search. And so maybe it's |
| 334 | totally different. But that's how it looks to me as a person who works on |
| 335 | Chrome. |
| 336 | |
| 337 | 16:59 SHARON: Yeah. Yeah. And I think in terms of actual development and making |
| 338 | code changes and stuff, I think probably the biggest difference is that because |
| 339 | anyone can download the source repository and make changes and all that, the |
| 340 | actual programming and changes you do, you do those on a computer. Maybe that's |
| 341 | a machine you SSH into or a cloud top or whatever. But you have to actually |
| 342 | download all of the code. Whereas with all of the google3 stuff, everything |
| 343 | happens in a cloud somewhere. So everything is all connected, and you just do |
| 344 | things through the browser pretty much. |
| 345 | |
| 346 | 17:29 ELLY: That's very true. Actually, there's another important facet that |
| 347 | just occurred to me, which is, because Chromium is open source - and in |
| 348 | particular, some open-source projects will use this model where they send out a |
| 349 | release every so often. So they'll be like, we're shipping a new major release |
| 350 | of our program, and here's the source that corresponds to that. So there are |
| 351 | companies that do that. But we actually do what's called developing in the |
| 352 | open. So our main Git repository that stores our source is public. Which means |
| 353 | that as soon as you put in a commit, or even if you just put it up for code |
| 354 | review, that's public. Everyone on the internet can see what we're doing live, |
| 355 | which is really pretty interesting in terms of its effects on you. So for |
| 356 | example, if you're in - you're working inside google3, and you're like, I have |
| 357 | this really cool, wild idea, I'm going to go and make an experimental branch |
| 358 | and just make a prototype of it and see what happens, you can just go do that. |
| 359 | It's not a problem. But if you're working in Chromium, and you go and make your |
| 360 | wild prototype experimental branch, you have a pretty good chance that |
| 361 | someone's going to notice that. And then maybe you get a news story that's |
| 362 | like, hey, Chromium might be adding this amazing feature. And you're like, oh, |
| 363 | no, that was my wild, experimental idea. I didn't intend for this to happen. |
| 364 | But now people have really picked up on it, and people outside of the company |
| 365 | that you've never met are starting to get excited about something that you |
| 366 | never really intended to build and just wanted to try. So it's a different way |
| 367 | of working. You're sort of always in the public eye a little bit. And you want |
| 368 | to be a little bit more considerate about how something might look to people |
| 369 | way outside of your team and outside of your context. Whereas teams that are |
| 370 | inside google3 I don't think have to think about that as much. |
| 371 | |
| 372 | 19:07 SHARON: Yeah, I mean, for me, I've only really worked in Chromium full |
| 373 | time and all that. And I've just gotten used to the fact that all of my code |
| 374 | changes are fully public and anyone can look at them. Whereas I think people |
| 375 | who work in anything that's not like that - people in the company you work, I |
| 376 | can see it. But not just anyone out there. So I don't know. I've gotten used to |
| 377 | it, but I think it's not a typical thing to [INAUDIBLE]. |
| 378 | |
| 379 | 19:30 ELLY: Oh, yeah. Absolutely. And in fact, this is something that folks who |
| 380 | are transferring into Chrome from other parts of Google sometimes have a little |
| 381 | difficulty with, is if you're used to writing a commit message where maybe the |
| 382 | only description in the commit message is go/doc about my project, for Chromium |
| 383 | that doesn't fly because only Googlers can actually follow those links. And so |
| 384 | the commit message to a non-Googler doesn't say anything. And so you actually |
| 385 | have to start thinking, how am I going to explain this whole thing I'm doing to |
| 386 | a non - to a person who doesn't have any of this Google-specific context about |
| 387 | what it is. You go through this little mental - you cross this little mental |
| 388 | bridge where you actually are forced to reframe your own work away from, what |
| 389 | are Google's business goals, and towards, how does this fit Chromium, the |
| 390 | open-source project, that other people also use? It's interesting and |
| 391 | occasionally a little frustrating, but interesting and usually really |
| 392 | beneficial. |
| 393 | |
| 394 | 20:26 SHARON: Yeah, for sure. And I think from people I've talked to, it just |
| 395 | seems like another, briefly, difference between internal Google stuff and |
| 396 | Chromium is that internal Google just has a ton of tools you can use. |
| 397 | |
| 398 | 20:37 ELLY: Yes, absolutely. |
| 399 | |
| 400 | 20:37 SHARON: Which both means a lot of things that are maybe a bit challenging |
| 401 | in Chromium are probably easier, but also maybe finding the right tool is hard. |
| 402 | But - |
| 403 | |
| 404 | 20:42 ELLY: Oh, yeah. That is very much the case. I have only limited |
| 405 | experience working inside google3. But I definitely have experienced the |
| 406 | profusion of tools and also the fact that the tools are just honestly amazing. |
| 407 | And it makes total sense. Google has many, many engineers whose whole job is to |
| 408 | build great tools. And Chromium is just not that big of a project. We just |
| 409 | don't have that many folks that are working on it. The folks who do build |
| 410 | infrastructure work for Chromium do amazing work, but there's not hundreds of |
| 411 | them. And so it's not on the same level. |
| 412 | |
| 413 | 21:12 SHARON: Yeah. And what you said earlier makes me have - gives me - has - |
| 414 | makes me wonder - and this ties us into the next thing - of other open-source |
| 415 | projects, they just do a release, and they don't maybe do development in the |
| 416 | open. And having not actually worked on other open-source projects really, I |
| 417 | kind of assumed that this development in the open was the norm. So how common |
| 418 | do you think or you know that that practice is? |
| 419 | |
| 420 | 21:45 ELLY: Gosh, I would really be guessing, to be honest with you. But I |
| 421 | would say the development in the open is by far the norm these days. And when |
| 422 | you see projects that follow the big release model instead, the way that looks |
| 423 | is they'll be like, hey, version 15 is out, and here's the source for |
| 424 | version 15. You can look at it. But the development, as it happens, happens |
| 425 | internally. I would tend to associate that with being maybe big company |
| 426 | projects that have a lot of confidentiality concerns. So for example, if you're |
| 427 | building the software that goes with some cool, new hardware for your company, |
| 428 | you don't want to start checking that software into Git publicly because then |
| 429 | people are going to read it and be like, ooh, this has support for a |
| 430 | billion-megapixel camera. That must be coming in the new thing. And so I think |
| 431 | that the big release model might be, these days, more prevalent when people are |
| 432 | doing hardware integrations, where there's other components that are shipping |
| 433 | at a fixed time and you don't want your source to be open until that point. But |
| 434 | honestly, the developing in the open model is, I think, much more common these |
| 435 | days. Historically, back in the '70s and '80s, when you would buy an operating |
| 436 | system and it would come with source, that was just a thing that you got as |
| 437 | part of the package, then it was much more of the source is released with the |
| 438 | OS model. Whereas these days, because distributed development is so easy with |
| 439 | modern version control systems, it's just so common to just develop in the open |
| 440 | like we do. |
| 441 | |
| 442 | 23:11 SHARON: Oh, cool. I didn't know that. So compared to other open-source |
| 443 | projects, what are some similarities and differences that Chromium has to |
| 444 | others that you may be familiar with? |
| 445 | |
| 446 | 23:25 ELLY: Ooh. All the ones I'm familiar with are quite a bit smaller than |
| 447 | Chromium. And so it's going to be hard to talk about it because, frankly - |
| 448 | |
| 449 | 23:32 SHARON: That's probably the common difference, though, right? Probably |
| 450 | very few are as big as Chromium. |
| 451 | |
| 452 | 23:32 ELLY: Oh, yeah. So in particular, one of the hardest problems in open |
| 453 | source - in running an open-source project is managing how humans relate to |
| 454 | other humans. The code problems are often relatively easy. The problems of how |
| 455 | do we make decisions about the direction of a project that maybe has a hundred |
| 456 | contributors who speak 10 different languages across a dozen time zones, that's |
| 457 | a hard problem. And so I often talk about the idea between open source, open |
| 458 | development, and then open governance. And so open source is just, like, you |
| 459 | can see the source. Open development is you can see the development process. So |
| 460 | the Git repo is open. The bug tracker is open. The mailing lists, where we do a |
| 461 | lot of our discussion, are open. So we do open development. But then you have |
| 462 | this next step of open governance, where the big decisions about where the |
| 463 | project is going are made in the open. And for Chromium, some of those are made |
| 464 | in the open, especially when it's really about the web platform or that kind of |
| 465 | thing. But some of them are not. For example, if we're deciding that we're |
| 466 | going to do some cool new UI design, that design and the initial development of |
| 467 | it might not necessarily be - or sorry, the development would be done in the |
| 468 | open, but the designing of it might not. That might be a discussion between a |
| 469 | few UX designers who all work at Google in a Google internal place. And so |
| 470 | Chromium has a bit of open governance but not all the way. A lot of smaller |
| 471 | projects have super open governance. So they'll literally be like, hey, should |
| 472 | we rewrite this entire thing in Rust? And they'll make that decision by arguing |
| 473 | about it on a mailing list, where everyone can see. And that's totally, totally |
| 474 | fine. Because Chromium is so big, we can't make those kinds of decisions by |
| 475 | having every Chromium engineer have their opinion and just post. It would be |
| 476 | complete chaos. And because we're big and prominent, a lot of the work that we |
| 477 | do is very much in the public eye. And so even discussions that are maybe |
| 478 | relatively speculative - like that example I gave before, where you have an |
| 479 | idea and you're like, wouldn't it be neat if we did this? It's easy for that to |
| 480 | turn into people inferring what Google's intentions are with Title Case, like, |
| 481 | Big Important Thing, and turning that into a lot when you would not have |
| 482 | intended it to be that way. And so we do end up keeping our governance |
| 483 | relatively on the closed side compared to other open-source projects I've |
| 484 | worked on. Other than that, in terms of engineering practices and what we do to |
| 485 | get the code written, we uphold a super high standard of quality. And in |
| 486 | particular - which is not to say that most open-source projects don't, because |
| 487 | they totally do. But Chromium, in my opinion, is really, really thoughtful |
| 488 | about not just, hey, how should code review work, but really evolving stuff |
| 489 | like, how should we bring new developers into this project? What should that |
| 490 | feel like? Those are discussions that we have. And I often feel like those are |
| 491 | discussions that other open-source projects don't talk about as much. What else |
| 492 | is different for us? I'm not sure. I think that those are some of the big ones. |
| 493 | The differences in scale are such that it's almost hard to talk about. The |
| 494 | difference between an open-source project that maybe has 5 contributors and one |
| 495 | that has 500 is very, very large. |
| 496 | |
| 497 | 27:07 SHARON: With the open governance thing you mentioned, something that that |
| 498 | made me think of is maybe Blink Intents, where you submit a thing to a list and |
| 499 | then that gets discussed. So that's part of the Chromium project, I think, |
| 500 | right? That falls under that category. |
| 501 | |
| 502 | 27:20 ELLY: Yep. Yep. |
| 503 | |
| 504 | 27:20 SHARON: And so that's where, if you want to make a change to Blink, the |
| 505 | rendering engine, you do this process of posting it to a list, and then people |
| 506 | weigh in. |
| 507 | |
| 508 | 27:25 ELLY: Yeah, absolutely. So Blink really does do open governance in a way |
| 509 | that I, honestly, very much admire. Blink and the W3C and a lot of these groups |
| 510 | that are setting standards for the internet do do open governance. Because, |
| 511 | frankly, it's the only way for them to work. It would not be good or healthy |
| 512 | for the web if it was just like, we're going to do whatever - whatever we, |
| 513 | Google, have decided to do and good luck everyone else. That would be very bad. |
| 514 | So yeah, Blink definitely does do open governance. But when it gets to things |
| 515 | that are more part of the browsers' behavior and features, we tend to have the |
| 516 | governance a little more closed. |
| 517 | |
| 518 | 28:08 SHARON: Right. And I think an example of Blink being more open governance |
| 519 | is the fact that BlinkOn is open to anyone to participate to. And that's the |
| 520 | channel that we're posting this on right now. It just happened to make sense |
| 521 | that I figured most of the audience who is watching Blink [INAUDIBLE] already |
| 522 | are interested in these, too. So that's why - [INTERPOSING VOICES] |
| 523 | |
| 524 | 28:27 ELLY: Yeah, absolutely. |
| 525 | |
| 526 | 28:27 SHARON: And for people who may not have - may have found these videos |
| 527 | that don't know about BlinkOn. That's what that is. |
| 528 | |
| 529 | 28:34 ELLY: Yeah. And just in that vein of open governance for Blink, |
| 530 | especially, there's also this idea of being a standard and then having things |
| 531 | be compatible with it. So the web platform is a collection of standards. And |
| 532 | other browsers have to implement those standards, too. And so for example, if |
| 533 | we make up a standard that is very difficult or impossible for, like, Firefox |
| 534 | to implement, that's not good. That's fragmenting the web platform. That's a |
| 535 | bad thing. Whereas the Chromium UI, like how the omnibox works in Chromium, for |
| 536 | example, isn't a standard. It doesn't matter whether Firefox or Edge or Opera |
| 537 | or whoever have the same omnibox behavior as us, right? And so there's much |
| 538 | less of a need to all agree. And instead, it's almost a little bit better to |
| 539 | have some variety there so that users can get a little bit more of a choice and |
| 540 | that collectively more things get tried in that vein. So there's places where |
| 541 | agreement and standardization are really important. And then there's places |
| 542 | where it's actually OK for each individual browser to go off on its own a bit |
| 543 | and be like, hey, we thought of this cool, new way to do bookmarks. And so we |
| 544 | have built this. And it doesn't matter whether the other browsers agree about |
| 545 | it because bookmarks are not a thing that interoperates between browsers. |
| 546 | |
| 547 | 29:44 SHARON: Yeah, that makes sense. So now let's talk about some of the |
| 548 | actual details of what it's like to work on Chromium and make changes, write |
| 549 | code, and new ideas. So I think you mentioned a few things, like bug tracking. |
| 550 | That's all public, in the open, apart from, of course, security-sensitive |
| 551 | things and other [INAUDIBLE] are hidden. What else is there? Code review - that |
| 552 | was Gerrit. You mentioned that. So You can see all the comments that everyone |
| 553 | leaves on everyone's changes. |
| 554 | |
| 555 | 30:16 ELLY: Oh, Yeah. And for better or for worse, by the way. It's good to |
| 556 | bear in mind that if you're like - you're going to type like a slightly jerk |
| 557 | message to someone on a code review, that's going to be preserved for all time, |
| 558 | and everyone's going to be able to see it. |
| 559 | |
| 560 | 30:29 SHARON: Yeah. Yeah. Be nice to people. [CHUCKLES] Version control - |
| 561 | that's Git. Probably people will know about that. Something that might be worth |
| 562 | mentioning is that a lot of people who contribute to Chromium, and if you look |
| 563 | at things like Gerrit and Chromium Code Search - that's also public, of |
| 564 | course - looks a lot like Google internal code search, but obviously it's open |
| 565 | source. So a lot of people have @chromium.org emails. |
| 566 | |
| 567 | 31:00 ELLY: Yes. |
| 568 | |
| 569 | 31:00 SHARON: So why are there separate emails? Because you can use at a |
| 570 | google.com or a GMail or any email. So why have this @chromium.org email thing? |
| 571 | |
| 572 | 31:05 ELLY: Yeah, so there's a few different reasons for that. So chromium.org |
| 573 | emails are available to members of the project, which is a little bit |
| 574 | nebulously defined, but it's definitely not just Googlers. And so there's a |
| 575 | couple reasons why people like having those. So for some folks, it's sort of a |
| 576 | signal that you are acting as a member of the open-source project rather than |
| 577 | acting with your Google hat on, if you like. And so for example, I help run the |
| 578 | community moderation team for Chromium. And so when I'm doing work for that |
| 579 | team, I'm very careful to use my chromium.org account because I want it to be |
| 580 | clear that I'm enforcing the Chromium community guidelines, which are something |
| 581 | that was agreed upon by a whole bunch of Chromium members, not just Googlers. |
| 582 | And so I'm not enforcing Google's code of conduct. I'm enforcing Chromium's |
| 583 | code of conduct in my role as a Chromium project person. So sometimes you |
| 584 | deliberately put on your Chromium hat so that you can make it clear that you |
| 585 | are acting on behalf of their project. Some folks - and I'm also one of these |
| 586 | folks, by the way - just happen to really be big fans and supporters of free |
| 587 | software and of open source. And so if I have the choice between wearing my |
| 588 | corporate identity and wearing my open-source project member identity, I might |
| 589 | just wear my open-source project member identity and decide to actually |
| 590 | contribute that way. And so a lot of the folks who've been on Chromium - or |
| 591 | have been on Chrome, I should say, for a while, that's part of their reasoning. |
| 592 | They joined because they were excited to work on something that was open. And |
| 593 | so they have this open-source identity, this Chromium identity, that they use |
| 594 | for that. There's a third factor, and this touches on one of the sometimes less |
| 595 | pleasant parts of working in open source, which is our commit log and our bug |
| 596 | tracker and all of that stuff are public. And what that means is that everyone |
| 597 | on the internet can go see them. And that is often great, but it's occasionally |
| 598 | not great. So for example, if you go and make an unpopular UI change, people on |
| 599 | the internet know that that was you. And that might not be something that |
| 600 | you're necessarily super ready to deal with. So for example, way, way, way, way |
| 601 | early in my career, I made a change to Chromium OS because I was working - I |
| 602 | was on the Chrome OS team as a brand Noogler. So this is I've been at Google |
| 603 | maybe five or six months. I made a change to Chrome OS. Somebody happened to |
| 604 | notice it and take issue with it. I don't even remember what the change was or |
| 605 | the issue. But they happened to notice it and take issue with it. They showed |
| 606 | up in our IRC channel, because we used IRC at the time, which was also public |
| 607 | because the whole project was very open like that, and really just started |
| 608 | yelling at me personally about it. And I'm like, this is not a cool experience. |
| 609 | This is something that if this was a Google coworker of mine, I would be |
| 610 | talking to HR about this. But it's actually just a random person on the |
| 611 | internet. And so there are some folks who use their Chromium username as a |
| 612 | little bit of a layer of insulation almost, where it's like, I want to work on |
| 613 | this project, but I don't - maybe my Google username has my full name in it. I |
| 614 | don't necessarily want every change I make to be done like that. And so if you |
| 615 | don't do that, you can end up in a situation where you make a change, and then |
| 616 | it's really attributed to you as though it was your personal idea and you did |
| 617 | this bad thing. And that's not a risk that everyone wants to take as part of |
| 618 | doing their work. And so sometimes people have a chromium.org account really |
| 619 | because they want an identity that's separate from their Google account - that |
| 620 | has a different name on it, that has different stuff like that. And so one of |
| 621 | the things that I'm always cautious to remind folks of on my team is, if you're |
| 622 | working with someone who has a chromium.org account, always use that |
| 623 | chromium.org account when you're speaking in public, always, always, always, |
| 624 | because you don't want to break that veil if someone is relying on it. |
| 625 | |
| 626 | 35:09 SHARON: Right. Yeah, that makes sense. And I think, in general, whenever |
| 627 | you are signing up for interacting in these public spaces, generally, I think |
| 628 | it's encouraged to use your chromium.org account. So for example, Slack, which |
| 629 | is the modern - current IRC often - |
| 630 | |
| 631 | 35:27 ELLY: It hurts my soul to hear you say that. |
| 632 | |
| 633 | 35:32 SHARON: Well - [LAUGHS] |
| 634 | |
| 635 | 35:32 ELLY: I'm a die-hard IRC user. I've been using IRC for 30 years. And I |
| 636 | was one of the few people who was I think very sad when we decided to move off |
| 637 | IRC. But you're right, that it is the modern IRC option. |
| 638 | |
| 639 | 35:44 SHARON: I think a lot of people are very die hard about IRC. So, you |
| 640 | know, but modern or not, that's what's currently being used. |
| 641 | |
| 642 | 35:49 ELLY: Absolutely. |
| 643 | |
| 644 | 35:55 SHARON: So Slack is where anyone can join and discuss Chromium stuff. And |
| 645 | generally, that kind of thing, you're encouraged to use your chromium.org |
| 646 | account. |
| 647 | |
| 648 | 36:01 ELLY: Yeah, absolutely. And to be fair to Slack also, the Slack has |
| 649 | probably 30 times as many people in it as the IRC channel ever did. So I think |
| 650 | that it's pretty clear that Slack is more popular than IRC was. But, yeah, no, |
| 651 | we use our Chromium identities a lot, really, really on purpose. And to be |
| 652 | honest, I would like it if we use them even more. Sometimes you will see folks |
| 653 | who actually have both identities signed up. So they'll have their google.com |
| 654 | and their Chromium, and that's always confusing for everyone. So if it was up |
| 655 | to me, I would say everyone has a Chromium identity, and they'd just all use it |
| 656 | when they're contributing. |
| 657 | |
| 658 | 36:39 SHARON: Yeah, that's definitely one of these unique two Chromium |
| 659 | [INAUDIBLE] pain points of someone [INAUDIBLE] use their maybe - often, they're |
| 660 | the same for most people. But sometimes they're different. Sometimes they're |
| 661 | very subtly different, and it's - |
| 662 | |
| 663 | 36:53 ELLY: Absolutely. |
| 664 | |
| 665 | 36:53 SHARON: you end up sending your [INAUDIBLE]... |
| 666 | |
| 667 | 36:53 ELLY: I also - I have met a couple folks who the Google username they |
| 668 | really wanted wasn't available, but it was available for chromium.org. And so |
| 669 | they picked a shorter, cooler username for chromium.org, which is totally - |
| 670 | totally fine to do. But then, every time you have to remember, oh, I know them |
| 671 | by this longer Google username, but actually they use this shorter username for |
| 672 | Chromium. |
| 673 | |
| 674 | 37:13 SHARON: Yeah, you have to remember their real life name. You have to |
| 675 | remember their work email. And then now you have to remember another work |
| 676 | email. |
| 677 | |
| 678 | 37:19 ELLY: Well, we have software that can help with that a bit. |
| 679 | |
| 680 | 37:25 SHARON: Yeah, for sure. So as part of that, and that's, in a way - a |
| 681 | thing that to me feels very related is there's a thing called being a committer |
| 682 | in Chromium. So what does it mean to be a committer? And what does it entail? |
| 683 | |
| 684 | 37:37 ELLY: Yeah, so committers are basically people who are trusted to commit |
| 685 | to CLs, for want of a better way of putting it. So the way the project is |
| 686 | structured, anyone can upload a CL. And anyone anywhere on the internet can |
| 687 | upload a CL. It has to be reviewed by the OWNERS of the directories that it |
| 688 | touches or whatever. But there are some files that are actually, like, OWNERS |
| 689 | equals star. So for example, the build file in Chrome browser, because |
| 690 | everybody needs to edit it all the time, it just has OWNERS equal star. And |
| 691 | there's a comment that's like, hey, if you're making a huge change, ask one of |
| 692 | these people. But otherwise, you're just freely allowed to edit it. And so if |
| 693 | the committer system didn't exist, anyone on the internet would be allowed to |
| 694 | edit a bunch of parts of the project without any review, which is pretty bad. |
| 695 | And so there's this extra little speed bump where it's like, you have to send |
| 696 | in a few CLs to show that you're really a legit person who's contributing to |
| 697 | the project. And once you've done that, you get this committer status, which |
| 698 | actually allows you to push the button that makes Gerrit commit your change |
| 699 | into the tree. And that's what it does mechanically. We culturally tend to have |
| 700 | it mean something a little different than that, but it's - culturally, it's |
| 701 | like a sign of trust of the other project members in you. So getting that |
| 702 | committer status really means, we collectively trust you to not totally screw |
| 703 | things up. That's what it is. And so you have to be a committer to actually be |
| 704 | in an OWNERS file, for example. You can't be listed as an owner until you're a |
| 705 | committer. Because if you're not a committer yet, we're not really - if we're |
| 706 | not trusting you to commit code, we're not really going to trust you to review |
| 707 | other people's code. And, yeah, when you're new joining the project, it's |
| 708 | actually a pretty big milestone to become a committer. You become a committer |
| 709 | after you've been working for anywhere from three to six months, I would say. |
| 710 | And it's definitely this moment of being like, yeah, I've really arrived. I'm |
| 711 | no longer new on the project. I'm now a full committer. |
| 712 | |
| 713 | 39:51 SHARON: Can you briefly tell us what the steps, mechanically, to becoming |
| 714 | a committer are? |
| 715 | |
| 716 | 39:51 ELLY: Yeah, so you need to have landed enough CLs to convince people you |
| 717 | know what you're doing. And there is no hard and fast limit, but it's like - it |
| 718 | should be convincing. And so I often hear maybe 15 to 20 of nontrivial CLs is a |
| 719 | pretty good number. Having done that, you need someone to propose you or |
| 720 | nominate you for committership. So there's actually - there's a mailing list |
| 721 | for having these discussions. And so whoever's going to nominate you, who has |
| 722 | to already be a committer, they'll send mail to that list, basically being |
| 723 | like, I would like to nominate this person for committer. There's a comment |
| 724 | period during which people can reply. And then if there's nobody who is raising |
| 725 | a big objection to you being a committer, after - I don't know what the actual |
| 726 | time period is - but after some amount of time, the motion carries with no |
| 727 | objections, and then your Chromium account becomes a committer. I think Google |
| 728 | accounts can also be committers as well, but I've only ever done this process |
| 729 | for Chromium accounts. And so those threads - what's going on in those threads |
| 730 | is mostly people endorsing the request. So let's say that I have someone who's |
| 731 | new on my team who I want to propose as a committer. I'll start the thread |
| 732 | nominating them as a committer, and then I'll go and talk to maybe two or three |
| 733 | of the people who have reviewed a lot of their changes, and I'll be like, hey, |
| 734 | would you endorse this person for a committer? If so, please post in this |
| 735 | thread. And so in the thread, there will actually be a couple of replies that |
| 736 | are like, plus 1, or, yes, this seems like a good fit. Very rarely, there might |
| 737 | be a reply, which is like, hey, I saw some - I saw some stuff on this CL that |
| 738 | shows that maybe this person isn't quite ready. We had a whole bunch of back |
| 739 | and forth comments, and eventually it really didn't seem like they understood |
| 740 | what I was asking for. And I feel like they're not really ready yet. Sometimes |
| 741 | that will happen. But usually the threads - by the time someone's nominating |
| 742 | you, you're already in good shape. So that's the mechanical process. And then |
| 743 | there is - it might actually just be Eric, individually, who goes through and |
| 744 | flips the bits on people being committers based on the threads. I'm not sure. |
| 745 | But there's some process by which those threads turn into people being |
| 746 | committers. |
| 747 | |
| 748 | 42:14 SHARON: OK, cool. Is there an analog of this either internally at Google |
| 749 | or in other open-source projects? Because internally at Google, there's the |
| 750 | concept of readability, which means you are vouched for that you know how to |
| 751 | code in this one language, which has some similarities. That's maybe a similar |
| 752 | thing. Are there any similar notions in other projects you've seen? |
| 753 | |
| 754 | 42:38 ELLY: Yeah, so many projects have this notion of being a member. And that |
| 755 | often combines our notions of committer and sometimes code owner. And so they |
| 756 | might - or for some open-source projects, you'll actually hear "maintainer" as |
| 757 | the thing. And so they'll be like, only people who are project members can |
| 758 | upload changes in the first place. And only people who are maintainers can |
| 759 | merge those changes. So that little speedbump on entry is pretty common. |
| 760 | Because it's a fact of life that if you are on the public internet and you have |
| 761 | no barriers to entry, you're going to have spam in your community no matter |
| 762 | what you do. And so that kind of split is super, super common. For some |
| 763 | projects that don't do open development, the entire thing might happen inside a |
| 764 | company or inside an organization anyway. And then there is no notion of |
| 765 | committer status because you're just hired onto that team and then you can |
| 766 | commit. But for projects that do open development and free software projects, |
| 767 | there is often a sense of, these are the people who are roughly trusted to land |
| 768 | code. And for a lot of projects, especially bigger ones, there's actually a |
| 769 | two-tiered model, where maybe you have people who are domain experts on a |
| 770 | specific thing, like, they maintain some subsystem. And they're trusted to make |
| 771 | whatever changes they need or approve other people's changes in that area. But |
| 772 | then at the wider scale, there's what's often called a steering committee or a |
| 773 | core group or something. And those groups have authority over the whole project |
| 774 | and the direction of everything that's going on. And so you'll often see that |
| 775 | kind of model in larger projects. At smaller scales, it's often literally a |
| 776 | list of one to five people who all have commit access to the same Git repo, and |
| 777 | there's no - no structure on top of that. But for bigger projects, governance |
| 778 | becomes a real concern. And so people start thinking about that. |
| 779 | |
| 780 | 44:35 SHARON: All right. Now, let's switch topics to talking about the more |
| 781 | day-to-day logistics of working on Chromium. So if you're not a Googler, don't |
| 782 | work at Google, to what extent can you effectively contribute to Chromium, the |
| 783 | project? |
| 784 | |
| 785 | 44:48 ELLY: Yeah, so that depends where you're coming from, both whether you're |
| 786 | part of another large organization, like maybe you work at Microsoft, you work |
| 787 | at Opera, Vivaldi, one of those companies, or if you're really an IC lone |
| 788 | contributor. If you're in a large organization, probably your org will have its |
| 789 | own structure around how you should contribute anyway. And so you might just |
| 790 | want to talk about that. So I'll really focus on the individual contributor |
| 791 | angle. And so for engineers specifically, like if you're a programmer who wants |
| 792 | to contribute to the code base, that's awesome. The best approach I think is |
| 793 | really to find an area that you're passionate about because it's so much more |
| 794 | fun and enjoyable to contribute when you're doing something you care about. So |
| 795 | find an area you care about. Get in touch with the team that works on that |
| 796 | area, either through their mailing lists or find their component in Monorail or |
| 797 | find them in the OWNERS files or whatever. Get in touch with those folks. Ask |
| 798 | them what are good places for you to contribute as a new person. That's often a |
| 799 | really great way to get started. And you'll have a person you can go to for |
| 800 | advice to be like, hey, how do I go about doing this thing? My experience has |
| 801 | been that Chromium contributors are pretty much all super helpful. And so |
| 802 | they're very willing to just give you guidance or do whatever. And you'll then |
| 803 | know who to send your code reviews to. |
| 804 | |
| 805 | 46:01 SHARON: Cool. Yeah. And if you're not an engineer, what are some ways you |
| 806 | can also contribute? |
| 807 | |
| 808 | 46:06 ELLY: Yeah, so there's a whole bunch of these. And by the way, these all |
| 809 | apply to basically every open-source project, so not just Chromium |
| 810 | specifically. So open-source projects, if you are a good writer, if you enjoy |
| 811 | doing technical writing or you enjoy doing UX writing or you want to do that |
| 812 | kind of thing, almost every open-source project out there is looking for people |
| 813 | to contribute documentation. And Chromium is no exception at all to that. So |
| 814 | high-quality documentation, we love that stuff. Or even if you're just honing |
| 815 | that craft and you want to practice, Chromium is not a bad spot to do that. If |
| 816 | you're a UX designer or a visual designer, a lot of open-source projects will |
| 817 | actually appreciate your contributions of you bringing in, like, hey, I thought |
| 818 | of a way that this user experience could feel or how the screen could look or |
| 819 | something like that. They'll often appreciate that kind of input or design |
| 820 | work. If you are someone who speaks multiple languages, translations are |
| 821 | another great way to contribute to open-source projects. A lot of open-source |
| 822 | projects don't have access to the same kind of - Chromium has access to a |
| 823 | translation team within Google who do a lot of our translations. A lot of |
| 824 | open-source projects don't have that. And so contributing translations of |
| 825 | documentation, of user-facing interface, stuff like that, can be super |
| 826 | valuable. And the last thing I'll say, which can be done by really anyone - you |
| 827 | don't even need special skills for this one - is try early releases of stuff. |
| 828 | So try development branches. If you're a Chrome user, try running Beta or Dev |
| 829 | or Canary. And then when something doesn't feel right or when it's - when it |
| 830 | doesn't work for you or it crashes or whatever, file bugs. And try to get |
| 831 | practiced at filing good bugs, with details and info and steps to reproduce the |
| 832 | bug and stuff like that. That's such a huge help as a developer of any |
| 833 | open-source projects - to get that early-user feedback and be able to correct |
| 834 | problems before they make it to the stable channel. And on Chromium, I've run |
| 835 | into a few folks who just - their main contribution to the project is really |
| 836 | just that they file great bugs all the time. There's a few folks who all they |
| 837 | really do is they run Canary on Mac, and they notice when something doesn't |
| 838 | feel quite right. And so they file stuff that's like, maybe the engineering |
| 839 | team wouldn't necessarily have noticed it. But when someone calls it out, we're |
| 840 | like, oh, that actually does feel kind of janky, and now we can go fix that. |
| 841 | And getting that feedback early is so, so valuable. So there's a lot of |
| 842 | different ways. Those are some, but there's plenty more, too. |
| 843 | |
| 844 | 48:21 SHARON: OK. Cool. Yeah, and a few things on that. If you want to really |
| 845 | try out random things, you can go to chrome://flags, play around there, see |
| 846 | what happens. In terms of going back a bit for being an engineer, there's other |
| 847 | web-adjacent stuff that you can do that we won't get into too much now. But |
| 848 | that can be things like adding web platform test, web standard stuff. And for |
| 849 | people who are into security, we have a VRP, Vulnerability Rewards Program. But |
| 850 | if you know about that, probably you're into the whole security space. This is |
| 851 | not how you're going to - maybe this is how you heard about it, and you want to |
| 852 | get into it. But, anyway - |
| 853 | |
| 854 | 48:59 ELLY: Yeah. I will say, if you're a security researcher and you aren't |
| 855 | familiar with the Chromium VRP, you should go take a look because it's - |
| 856 | Chromium is a really interesting project to audit for security. And the VRP can |
| 857 | make it very worth your while to do so if you find good bugs. |
| 858 | |
| 859 | 49:12 SHARON: Mm-hmm. Yeah. And going back a bit earlier to being an engineer, |
| 860 | like an IC, who is not at Google or any of these other big companies, there are |
| 861 | other barriers to entry to being a contributor, right? |
| 862 | |
| 863 | 49:28 ELLY: Oh, yeah. |
| 864 | |
| 865 | 49:28 SHARON: So I definitely encountered this after my internship. I worked on |
| 866 | Chrome. I was like, hey, I know what's going on now at the end of it. A couple |
| 867 | things we didn't finish. I'll go home, and I will keep working on this - good |
| 868 | intentions. And I got home, got my laptop, which was a pretty good laptop, but |
| 869 | still a laptop. I downloaded Chrome. That took a very long time. I built it for |
| 870 | the first time, which always takes a bit longer. But that took so long. And |
| 871 | even the incremental builds just took so long that I was like, OK, this is not |
| 872 | happening. I'm in school right now. I've got other things to worry about. So |
| 873 | how feasible is it for a typical person, let's say, to actually make changes in |
| 874 | Chromium? |
| 875 | |
| 876 | 50:05 ELLY: Yeah, that is unfortunately probably the biggest barrier to entry |
| 877 | for individuals who want to make technical contributions. Obviously, it doesn't |
| 878 | affect you if you're contributing documentation translations, whatever. But if |
| 879 | you're trying to modify the code, yeah, the initial build is going to be very |
| 880 | slow, and then the incremental builds are going to be very slow. And a lot of |
| 881 | the ancillary tasks are slow too, like running the test suite or running stuff |
| 882 | in a debugger. The project is just very big. And that's something that I think |
| 883 | a lot of folks on the Chromium team wish we could reduce. But Chromium is big |
| 884 | because the web is big and because what people want it to do is big. And so |
| 885 | it's not just big for no reason. But it does make it harder to get started as a |
| 886 | contributor. I've had this experience, too. I have a modern laptop sitting on |
| 887 | the desk over there. And it takes seven to eight hours to do a clean Chromium |
| 888 | build on that. Whereas on my work workstation, which has access to Goma, |
| 889 | Google's compile farm, it takes a few minutes. And the large organizations that |
| 890 | contribute also all have compile farms for the same reason. It's just so slow |
| 891 | to work when you're only doing local building and don't have access to a ton of |
| 892 | compilation power. |
| 893 | |
| 894 | 51:12 SHARON: Mm-hmm. Yeah. I wonder if we could, I don't know, do a thing for |
| 895 | people who are individuals who contribute more. Probably that would be really |
| 896 | hard to do. Probably people have thought about it. But, yeah. |
| 897 | |
| 898 | 51:24 ELLY: It would be nice if we could. I don't know what the challenges |
| 899 | would be offhand, but it would be very cool if we could somehow make that |
| 900 | available. |
| 901 | |
| 902 | 51:30 SHARON: All right. That all sounds very cool. I know I learned a lot. |
| 903 | Hopefully some of you learned a lot, too. I think if you are working within |
| 904 | Google, it's really easy to not really interact with any of this more |
| 905 | open-source stuff, depending on which part you work on. Maybe you work on a |
| 906 | part that's very Google Chrome specific. I know before I was working on |
| 907 | Fuchsia, so that was before Launch. So that was not really something we were |
| 908 | open to the public about anyway. And a lot of even the typical Chrome tools I |
| 909 | was unfamiliar with. So I think depending on which part you work on, this |
| 910 | stuff - it's all there, but you might not have had a chance to interact with. |
| 911 | So thank you, Elly, for telling us about it and giving us some context about |
| 912 | free and open-source software in general. |
| 913 | |
| 914 | 52:08 ELLY: Yeah, of course. |
| 915 | |
| 916 | 52:08 SHARON: Is there anything you would like to give a shout out? Normally, |
| 917 | we shout out a specific Slack channel. I think in this case, the Slack in |
| 918 | general is the shout out. Anything else? |
| 919 | |
| 920 | 52:20 ELLY: The Slack, in general, definitely deserves it. Honestly, I'm going |
| 921 | to go a little bit larger scale here. I'm going to shout out all of the folks |
| 922 | who have contributed to Chromium, both at Google and elsewhere. It is the work |
| 923 | of many hands. And it would not be what it is without the contributions from |
| 924 | the folks at Google, the folks at Microsoft, folks at Yandex, folks at Naver. |
| 925 | All of these different browsers and projects and all of the different |
| 926 | individuals that have contributed, like everyone in the AUTHORS file - so shout |
| 927 | out to all of those folks. And also, I really want to shout out the open-source |
| 928 | projects not even part of Chromium that we use and rely on every day. So for |
| 929 | example, we use LLVM, which is a separate open-source project for our |
| 930 | compilation toolchain. And I think I would not be exaggerating to say that |
| 931 | Chromium couldn't exist in its current form without the efforts of a bunch of |
| 932 | other open-source projects that we're making use of. And so I'm really hopeful |
| 933 | and optimistic that Chromium can live up to that. We're standing on the |
| 934 | shoulders of a lot of other open-source projects to build the thing that we've |
| 935 | built. And I'm hopeful that, in turn, other projects are going to stand on our |
| 936 | shoulders to build yet cooler stuff and yet - yet better programs and build a |
| 937 | yet better open-source community. So shout out to all of the authors of all the |
| 938 | open-source software that Chromium uses, which is a lot of people. But they |
| 939 | deserve it. |
| 940 | |
| 941 | 53:37 SHARON: Yeah, for sure. It's very cool how it's very - all very related. |
| 942 | And even within Chrome, I think people stick around longer than typical other |
| 943 | projects. And it's cool to see people around, like a decent number of them, |
| 944 | from before Chrome launched. And that's probably [INAUDIBLE] to a generally |
| 945 | more positive engineering culture. So that's very good. |
| 946 | |
| 947 | 53:58 ELLY: I think so. But I'm biased, of course. |
| 948 | |
| 949 | 53:58 SHARON: Yeah, maybe. [LAUGHS] Cool. You mentioned mailing lists a bunch. |
| 950 | Any favorites that you have? |
| 951 | |
| 952 | 54:08 ELLY: Oh, yeah. chromium-dev is the mailing list of my heart, I would |
| 953 | say. It's the main open-source development mailing list for us. It's a great |
| 954 | place for all of your newbie questions. If you're just like, how the heck do I |
| 955 | even check out the source, that's a good place to ask. The topic-specific |
| 956 | mailing lists, especially net-dev and security-dev, are really good if you have |
| 957 | questions in those specific areas. But honestly, all of the mailing lists on |
| 958 | chromium.org are good. I haven't yet encountered one where I'm like, that |
| 959 | mailing list is bad. So check them all out. |
| 960 | |
| 961 | 54:33 SHARON: Cool. All right. Check out every single mailing list. Sounds |
| 962 | good. |
| 963 | |
| 964 | 54:38 ELLY: Yeah, every mailing list, every Slack channel. |
| 965 | |
| 966 | 54:38 SHARON: All right. Great. |
| 967 | |
| 968 | 54:38 ELLY: You're all good. |
| 969 | |
| 970 | 54:38 SHARON: Every Slack channel, I think - yeah, I'll add myself to the rest |
| 971 | of them. All right. Well, thank you very much, Elly. |
| 972 | |
| 973 | 54:45 ELLY: Of course. |
| 974 | |
| 975 | 54:45 SHARON: Thank you for chatting with us. And see you all next time. |
| 976 | |
| 977 | 54:51 ELLY: All right. Thank you, Sharon. Easter egg - in the second part of |
| 978 | this video, Elly is drinking soda. |