
Change-Id: Ie7f34cd19b5f97f9330e914d13de0f6e3ea2d7de Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4886394 Commit-Queue: Nigel Tao <nigeltao@chromium.org> Reviewed-by: Sharon Yang <yangsharon@chromium.org> Cr-Commit-Position: refs/heads/main@{#1202896}
979 lines
60 KiB
Markdown
979 lines
60 KiB
Markdown
# What’s Up With Open Source
|
||
|
||
This is a transcript of [What's Up With
|
||
That](https://www.youtube.com/playlist?list=PL9ioqAuyl6ULIdZQys3fwRxi3G3ns39Hq)
|
||
Episode 6, a 2023 video discussion between [Sharon (yangsharon@chromium.org)
|
||
and Elly
|
||
(ellyjones@chromium.org)](https://www.youtube.com/watch?v=zOr64ee7FV4).
|
||
|
||
The transcript was automatically generated by speech-to-text software. It may
|
||
contain minor errors.
|
||
|
||
---
|
||
|
||
What does it mean for Chrome to be open source? What exactly is Chromium? Can
|
||
anyone contribute to the browser? Answering all that is today's special guest,
|
||
Elly. She worked all over Chrome and ChromeOS, and is passionate about
|
||
accessibility, the open web, and free and open-source software.
|
||
|
||
Notes:
|
||
- https://docs.google.com/document/d/1a6sdrspJgAHDdQMMNGV0t7zo8QWgqq0hgsyV55tc_dk/edit
|
||
|
||
Links:
|
||
- [What's Up With BUILD.gn](https://www.youtube.com/watch?v=NcvJG3MqquQ)
|
||
- [What's Up With //content](https://www.youtube.com/watch?v=SD3cjzZl25I)
|
||
- [What are Blink Intents?](https://www.youtube.com/watch?v=9cvzZ5J_DTg)
|
||
|
||
---
|
||
|
||
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 open source. What does it mean to be open source? I've heard of Chrome,
|
||
but what's Chromium? What are all the ways you can get involved? Answering
|
||
those questions and more is today's special guest, Elly. Elly currently works
|
||
on the Chrome content team, which is focused on making the web more fun and
|
||
interesting to use. Previously, she's worked all over Chrome and Chrome OS.
|
||
She's passionate about accessibility, the open web, and free and open-source
|
||
software. Welcome, Elly.
|
||
|
||
00:34 ELLY: Thank you, Sharon.
|
||
|
||
00:34 SHARON: All right. First question I think is pretty obvious. What is open
|
||
source? What does that mean?
|
||
|
||
00:40 ELLY: Yeah, so open source is a pretty old idea. And it basically just
|
||
means, in the purist sense, that the source code for a program is open to be
|
||
read by others.
|
||
|
||
00:51 SHARON: OK. And Chrome, the source code is available to be read by
|
||
anyone. What else is it? Open source - I've heard of open-source community. It
|
||
seems like there's a lot to it. So why don't you just tell us more about open
|
||
source, generally?
|
||
|
||
01:03 ELLY: Yeah, for sure. There's quite a bit of nuance here. And there's
|
||
been differing historical interpretations of some of these terms, so I'll -
|
||
there's two big camps that are important to talk about. One is open source,
|
||
which means what I said - the source is available to be viewed. There's also
|
||
the idea of free software, which is software that actually has license terms
|
||
that allow for people to modify it, to make their own derivative versions of
|
||
it, and that kind of thing. And so historically, there was a pretty big
|
||
difference between those things. These days, the two concepts are often talked
|
||
about pretty interchangeably because a lot of open-source projects are free
|
||
software, and all free software projects basically are open source. But the
|
||
distinction used to be very important and is still pretty important, I guess.
|
||
Chromium is both open source and free software. So we ship under a license that
|
||
allows for - not only for everyone to read and look at our code, but also for
|
||
other folks to make their own versions of Chromium. So, yeah, Chromium, both
|
||
open source and free software.
|
||
|
||
01:56 SHARON: OK, very cool. And you mentioned Chromium in there. But I think
|
||
for most people, when they think of the browser, they call it Chrome. So what
|
||
is the difference between Chrome and Chromium? Are they the same thing? I think
|
||
people, myself included, sometimes use those interchangeably, especially when
|
||
you work on it. So what is the difference there?
|
||
|
||
02:16 ELLY: Yeah, fantastic question. So Chromium is an open-source and free
|
||
software web browser that is made by the Chromium Foundation, which is like an
|
||
actual .org that exists somewhere on the internet. Chrome is a Google-branded
|
||
web browser that is basically made by taking Chromium, which is an open-source
|
||
and free software web browser, adding some kind of Google magic to it, like
|
||
integrations with some Google services, some kind of media codecs that maybe
|
||
aren't themselves free software, that kind of thing, bundling that up into a
|
||
more polished product which we call Google Chrome, and then shipping that as a
|
||
web browser. So Chromium is an open-source project. Google Chrome is a Google
|
||
product that is built on top of Chromium.
|
||
|
||
03:03 SHARON: OK. So Google Chrome is a Chromium-based browser, which is a term
|
||
I think that people who work in any browser stuff - it's a term that they've
|
||
all [INAUDIBLE] before.
|
||
|
||
03:08 ELLY: Yeah, exactly. And in fact, you alluded to the fact that we
|
||
sometimes use those terms interchangeably. And especially at Google, we
|
||
sometimes get a little confused about what we're talking about sometimes
|
||
because we're - the Google Chrome team are the biggest contributors to
|
||
Chromium, the open-source project. And so we tend to sometimes talk about the
|
||
two things as though they're the same. But there's a really important
|
||
difference for folks who are working on other Chromium-derived browsers. So if
|
||
you're working on a Chromium derivative that a Linux distribution ships, for
|
||
example, your browser is based on Chromium, and it's really not Chrome. It's
|
||
Chromium, right? It is the open-source browser that Chrome is based on. But
|
||
it's not the same thing at all.
|
||
|
||
03:52 SHARON: Yeah, if you want to learn a bit more about basing things on
|
||
Chromium, the content episode is a good one to check out. We talk a bit about
|
||
that and embedding Chrome in Chromium and what that means. So -
|
||
|
||
04:03 ELLY: Yeah, absolutely.
|
||
|
||
04:03 SHARON: check it out if you [INAUDIBLE]...
|
||
|
||
04:03 ELLY: And there's also, in the Chromium source tree, there's actually a
|
||
thing called Content Shell, which is a minimal demonstration browser. It's like
|
||
the rendering engine from Chromium wrapped in the least amount of browser
|
||
possible to make it work. And we use it for testing, but it's also a really
|
||
good starting point if you're trying to learn how to build a Chromium
|
||
derivative browser.
|
||
|
||
04:22 SHARON: OK, very neat. So I think a next very natural question to come
|
||
out of this is, why is Chrome or Chromium - Chromium rather - going to try to
|
||
be good about using those correctly here - but why is Chromium open source?
|
||
|
||
04:40 ELLY: Yeah, so this is the decision that we made right when we were
|
||
starting the project actually. And it's based on this really fundamental idea
|
||
that the web benefits when users have better browsers. So if we, like the
|
||
Chromium project, come up with some super clever way of doing something, or we
|
||
come up with some really ingenious optimization to our JavaScript Engine or
|
||
something like that, it's better for the web, better for everyone, and
|
||
ultimately even better for Google as a business if those improvements are
|
||
actually adopted by other people and taken by other people and used by them. So
|
||
it is better for us if other people make use of anything clever that we do. And
|
||
separately from that, there's this idea that's really prevalent in open-source
|
||
communities of, if people can read the code, they're more likely to find bugs
|
||
in it. And that's something that Chromium constantly benefits from, is folks
|
||
who are outside the project, just kind of looking through our code base,
|
||
reading and understanding it, spotting maybe security flaws that are in there.
|
||
That kind of research is so much easier to do when the source code is just
|
||
there, and you're not trying to reverse-engineer something you can't see the
|
||
source to. So we get a lot of benefit from being open-source like that. And
|
||
those are the reasons we had originally, and those still all hold totally true
|
||
today, I think.
|
||
|
||
05:51 SHARON: That makes sense. Yeah, it seems, at first, a bit odd for a big
|
||
company like Google to make something like this open source. But there are
|
||
other massive open-source things at Google - Android, I think, being the other
|
||
canonical example, which we don't know too much about, but we won't be getting
|
||
too into that. But there are other big open-source projects around.
|
||
|
||
06:08 ELLY: Yeah, absolutely. And there's also, like - there's Go. That's an
|
||
open-source programming environment, like a language and a compiler and a bunch
|
||
of tools around it that is open source built by Google. There are plenty of
|
||
other open-source and free software projects built by large corporations, often
|
||
for really the same reasons. We benefit because the entire web benefits from
|
||
better technology.
|
||
|
||
06:32 SHARON: Yeah, I think some of the Build stuff we do is open source. Check
|
||
out the previous episode for that. And that's, yeah, exactly - not strictly
|
||
only used by -
|
||
|
||
06:37 ELLY: Yeah, and by the way, partly because we're open source - like, for
|
||
example, the Chromium base library, which is part of our C++ software
|
||
environment - our base library is regularly used in other projects, even things
|
||
that are totally unrelated to browsers, because it provides a high-quality
|
||
implementation of a lot of basic things that you need to do. And so that code
|
||
is being used in so many places we would never have anticipated and has done
|
||
honestly more good in the world than it would do if it was just part of a
|
||
really excellent browser.
|
||
|
||
07:13 SHARON: Something that someone on my first team told me was, if you've
|
||
changed anything in base, that probably is going to get run any time the
|
||
internet gets run, somewhere in that stack, which, if you think about it, is so
|
||
crazy.
|
||
|
||
07:26 ELLY: Oh, Yeah. Absolutely. Early in my career, I added a particular
|
||
error message to part of the Chrome network stack. And that network stack, too,
|
||
is one of those components that gets reused in a lot of places. And so
|
||
occasionally, I'll be running some completely other program. Like, I'll be
|
||
running a video game or something, and I'll see that error message that I added
|
||
being emitted from this program. And I'm like, oh, my code is living on in a
|
||
place I would never have really thought of.
|
||
|
||
07:51 SHARON: Oh, that's very cool.
|
||
|
||
07:51 ELLY: Yeah.
|
||
|
||
07:51 SHARON: Yeah.
|
||
|
||
07:51 ELLY: It's one of those unique open-source experiences in my book, of
|
||
seeing your own work being used like that by other folks you wouldn't have
|
||
anticipated.
|
||
|
||
07:57 SHARON: Yeah, that's very cool. So something I think I've heard you say
|
||
before that I thought sounded very cool was the open-source dream. So can you
|
||
tell us a bit more about what that is. What is that vision? It sounds very
|
||
nice.
|
||
|
||
08:09 ELLY: Yeah, so I talked about this a little bit. And earlier, I cautioned
|
||
against conflating open-source and free software. But it really is more of the
|
||
free software dream than the open-source dream, in some sense. That dream is
|
||
this idea that if we have software that is made available for free, under
|
||
licenses that let people modify it and make derivative works and keep using it,
|
||
that over time, everyone will get access to really high-quality and
|
||
freely-available software. And we will have a situation where the software that
|
||
people need is built by their communities, built by the people who are in those
|
||
communities, instead of being something that they have to buy from a company
|
||
that makes it. It'll be something they can instead produce for themselves. And
|
||
over time, I think that this has really played out in that way. If you look at
|
||
the state of operating systems today, for example, there are these really
|
||
high-quality, freely-available open-source free software operating systems that
|
||
are readily available and anyone can use, and they really do meet the needs for
|
||
a lot of folks. And then, in fact, it kind of circles back to where Linux is a
|
||
high-quality, free software open-source operating system that Google can then
|
||
turn around and make really good use of to build something like Chromium OS,
|
||
which is another free software open-source project that uses Linux as one of
|
||
its major components. And then we get to produce a product that the Chromium OS
|
||
engineering team would have had to spend a lot of time if we weren't able to
|
||
make use of that existing Linux kernel work. So you get into this cycle of
|
||
giving back and sharing and benefiting from the effects of other people
|
||
sharing. That's the free software dream to me.
|
||
|
||
09:57 SHARON: It does - yeah, that sounds great. And for sure - I try to use
|
||
open-source options when I can. When I edit these videos, I use something
|
||
open-source. It feels appropriate for what we're doing here. So, yeah, that
|
||
sounds like it would be - it's a good system that everyone contributes to and
|
||
everyone benefits from. And that's really nice.
|
||
|
||
10:10 ELLY: Yeah, absolutely.
|
||
|
||
10:16 SHARON: So going away from that towards the more less open-source part,
|
||
so what kind of things in Chrome, the browser, are not open source? You
|
||
mentioned a couple of things earlier. Can you tell us a bit more about some of
|
||
those things?
|
||
|
||
10:27 ELLY: Yeah, I'm going to caveat this by saying that I don't personally
|
||
work on the stuff I'm about to talk about. And so my knowledge is more
|
||
superficial. There's a couple things I'm pretty confident about. So one is, for
|
||
example, there's a few video formats that Chrome can play that Chromium cannot
|
||
play because Google has agreements with the companies that make those codecs
|
||
that allow us to basically license and embed their thing and ship it as part of
|
||
Chrome. But those agreements, we can't really extend them to everyone who might
|
||
make a Chromium browser. And so it ends up in a situation where there is a
|
||
closed-source component that's included in Chrome to make that possible. I'm
|
||
struggling to think of another example right off the top of my head. I believe
|
||
that there's also a couple things in Chrome that are integrating with Google
|
||
APIs, where they're features that are Chrome-specific because they're
|
||
Google-specific. And one of the things that is generally true between the two
|
||
products is that Chrome will have more Google integrations and more Google
|
||
magic and more Google smarts than Chromium will. And so I think some of those
|
||
are actually closed-source components that come from Google that get embedded
|
||
into Chrome. But because they're a closed-source, we wouldn't want to put them
|
||
into Chromium.
|
||
|
||
11:37 SHARON: Right. It seems like, yeah, I can sign into Chrome. I don't
|
||
expect that I'd be able to sign in with my gmail.com into, say, Chromium. I'm
|
||
not sure it's actually part of it, but that's a guess.
|
||
|
||
11:49 ELLY: Yeah, so that does work, except that you need to - any Chromium
|
||
distributor needs to go and talk to - basically, talk to the sign-in team to
|
||
get an API key that allows their browser to sign in. There is a process for
|
||
doing that. It doesn't actually require any closed-source code components. But
|
||
there is still a thing where you have to talk to the accounts team and
|
||
basically be like, hey, we're a legitimate web browser, and we want to allow
|
||
users to sign in. Because we don't want a situation where bots or malware are
|
||
doing fake user sign-ins from - pretending to be Chromium. That's bad.
|
||
|
||
12:25 SHARON: Right. That makes sense. Yeah, and I think because of where
|
||
Chrome and Chromium are positioned, I think there will be some interesting
|
||
comparisons and differences between Chrome, Chromium, and other internal
|
||
google3 projects. So that's kind of the term for things that are closed-source
|
||
Google - the typical Maps, Search, all that stuff - and also comparing Chromium
|
||
to other open-source projects. So we've talked a bit about the similarities and
|
||
differences between Chrome and Google internal. Are there any other things you
|
||
can think of that are either similar or different between Chrome the project
|
||
and the people who work on it and how people do things internally at Google?
|
||
|
||
13:11 ELLY: Yeah. So internally at Google, there's this very powerful, very
|
||
custom-built whole technology stack around the projects. There is a continuous
|
||
integration system. There's an editor. There's a source control system. There's
|
||
all of this stuff. Within Google, all of that is custom. And it's all fitted to
|
||
Google's needs. And a lot of it is just built from scratch, frankly. Whereas
|
||
for Chromium, we're using essentially off-the-shelf open-source stuff to meet a
|
||
lot of those needs. So, for example, for version control, we're just using Git,
|
||
which is I think the most popular version control system in the world right
|
||
now. It's definitely open source. And our build system, for example, which is
|
||
like GN and Ninja put together, those are both free software open-source
|
||
projects. Admittedly, both of them were, I think, started as part of Chromium
|
||
because we had those needs. But they, themselves, are free software components
|
||
that anyone else can also use to build a Chromium. And the reason why that's
|
||
done that way - like, why doesn't - it's actually a really good question. Why
|
||
doesn't Chrome, which is a Google project, use all of this amazing
|
||
infrastructure for engineering that Google has? And the answer is, we want the
|
||
Chromium project to be possible to work on for people who don't work at Google.
|
||
And so we can't say, oh, hey, whenever you're going to make a change, you have
|
||
to commit it into Google's internal source control system. That wouldn't work
|
||
at all. So we're almost - because we want to be an open-source project, and
|
||
because we want to have contributors from outside of Google, we end up almost
|
||
pushed into using this pretty open free software stack, which I - to be honest,
|
||
from my perspective, has a lot of other benefits. When we have new folks
|
||
joining the team, we can actually offer them tools they're already pretty
|
||
familiar with. They don't have the feeling that new Googlers sometimes get,
|
||
where they're totally disoriented. Like, everything they know about programming
|
||
doesn't apply anymore. We actually be like, hey, here's Git. You know how to
|
||
use this. Here's Gerrit, which is another piece of open-source software that we
|
||
use. They may not have used Gerrit before, but a lot of projects do. And so
|
||
they might have run into it previously. So it has pluses and minuses,
|
||
definitely. So that's a big difference. There's also a bit of what I would say
|
||
is a cultural difference more than anything else because most Google projects
|
||
that are not open source - so I'm not talking about things like Android or Go
|
||
or something like that - but projects that are really just not open source,
|
||
like Search, their ecosystem of discussion and culture and stuff is very much
|
||
inside Google. Whereas for Chromium, we constantly are getting ideas and
|
||
suggestions and code changes and stuff from outside of Google. And so we also
|
||
tend to have perspectives from outside of Google in our discussions more often
|
||
as we work on Chromium. So part of that is at the level of, if we're going to
|
||
make a change, we would have maybe input coming in on that change from Mozilla
|
||
even. They're a group we collaborate with a ton on web standards. And so we
|
||
would have their perspective in the discussion. Whereas if we were working
|
||
entirely within Google, we might not have those external perspectives. So
|
||
culture-wise, I feel like Chromium has more perspectives in the room sometimes
|
||
when we're thinking about stuff.
|
||
|
||
16:26 SHARON: That makes sense because browsers exist across other companies
|
||
too, and there's a lot of compatibility and standards and stuff. So just in
|
||
that nature of things, you have to have a lot more of this collaboration. If
|
||
you make a change, it'll affect all of the embedders maybe, and then you have
|
||
to think about this. And, yeah, there's a lot more discussion - [INTERPOSING
|
||
VOICES]
|
||
|
||
16:42 ELLY: Yeah, absolutely.
|
||
|
||
16:42 SHARON: If you're Search, you're like, OK, we're going to, I don't know,
|
||
do our thing.
|
||
|
||
16:47 ELLY: Yeah, you have more - I don't know if "autonomy" is the right word.
|
||
But, yeah. I want to caveat this by saying I'm not on Search. And so maybe it's
|
||
totally different. But that's how it looks to me as a person who works on
|
||
Chrome.
|
||
|
||
16:59 SHARON: Yeah. Yeah. And I think in terms of actual development and making
|
||
code changes and stuff, I think probably the biggest difference is that because
|
||
anyone can download the source repository and make changes and all that, the
|
||
actual programming and changes you do, you do those on a computer. Maybe that's
|
||
a machine you SSH into or a cloud top or whatever. But you have to actually
|
||
download all of the code. Whereas with all of the google3 stuff, everything
|
||
happens in a cloud somewhere. So everything is all connected, and you just do
|
||
things through the browser pretty much.
|
||
|
||
17:29 ELLY: That's very true. Actually, there's another important facet that
|
||
just occurred to me, which is, because Chromium is open source - and in
|
||
particular, some open-source projects will use this model where they send out a
|
||
release every so often. So they'll be like, we're shipping a new major release
|
||
of our program, and here's the source that corresponds to that. So there are
|
||
companies that do that. But we actually do what's called developing in the
|
||
open. So our main Git repository that stores our source is public. Which means
|
||
that as soon as you put in a commit, or even if you just put it up for code
|
||
review, that's public. Everyone on the internet can see what we're doing live,
|
||
which is really pretty interesting in terms of its effects on you. So for
|
||
example, if you're in - you're working inside google3, and you're like, I have
|
||
this really cool, wild idea, I'm going to go and make an experimental branch
|
||
and just make a prototype of it and see what happens, you can just go do that.
|
||
It's not a problem. But if you're working in Chromium, and you go and make your
|
||
wild prototype experimental branch, you have a pretty good chance that
|
||
someone's going to notice that. And then maybe you get a news story that's
|
||
like, hey, Chromium might be adding this amazing feature. And you're like, oh,
|
||
no, that was my wild, experimental idea. I didn't intend for this to happen.
|
||
But now people have really picked up on it, and people outside of the company
|
||
that you've never met are starting to get excited about something that you
|
||
never really intended to build and just wanted to try. So it's a different way
|
||
of working. You're sort of always in the public eye a little bit. And you want
|
||
to be a little bit more considerate about how something might look to people
|
||
way outside of your team and outside of your context. Whereas teams that are
|
||
inside google3 I don't think have to think about that as much.
|
||
|
||
19:07 SHARON: Yeah, I mean, for me, I've only really worked in Chromium full
|
||
time and all that. And I've just gotten used to the fact that all of my code
|
||
changes are fully public and anyone can look at them. Whereas I think people
|
||
who work in anything that's not like that - people in the company you work, I
|
||
can see it. But not just anyone out there. So I don't know. I've gotten used to
|
||
it, but I think it's not a typical thing to [INAUDIBLE].
|
||
|
||
19:30 ELLY: Oh, yeah. Absolutely. And in fact, this is something that folks who
|
||
are transferring into Chrome from other parts of Google sometimes have a little
|
||
difficulty with, is if you're used to writing a commit message where maybe the
|
||
only description in the commit message is go/doc about my project, for Chromium
|
||
that doesn't fly because only Googlers can actually follow those links. And so
|
||
the commit message to a non-Googler doesn't say anything. And so you actually
|
||
have to start thinking, how am I going to explain this whole thing I'm doing to
|
||
a non - to a person who doesn't have any of this Google-specific context about
|
||
what it is. You go through this little mental - you cross this little mental
|
||
bridge where you actually are forced to reframe your own work away from, what
|
||
are Google's business goals, and towards, how does this fit Chromium, the
|
||
open-source project, that other people also use? It's interesting and
|
||
occasionally a little frustrating, but interesting and usually really
|
||
beneficial.
|
||
|
||
20:26 SHARON: Yeah, for sure. And I think from people I've talked to, it just
|
||
seems like another, briefly, difference between internal Google stuff and
|
||
Chromium is that internal Google just has a ton of tools you can use.
|
||
|
||
20:37 ELLY: Yes, absolutely.
|
||
|
||
20:37 SHARON: Which both means a lot of things that are maybe a bit challenging
|
||
in Chromium are probably easier, but also maybe finding the right tool is hard.
|
||
But -
|
||
|
||
20:42 ELLY: Oh, yeah. That is very much the case. I have only limited
|
||
experience working inside google3. But I definitely have experienced the
|
||
profusion of tools and also the fact that the tools are just honestly amazing.
|
||
And it makes total sense. Google has many, many engineers whose whole job is to
|
||
build great tools. And Chromium is just not that big of a project. We just
|
||
don't have that many folks that are working on it. The folks who do build
|
||
infrastructure work for Chromium do amazing work, but there's not hundreds of
|
||
them. And so it's not on the same level.
|
||
|
||
21:12 SHARON: Yeah. And what you said earlier makes me have - gives me - has -
|
||
makes me wonder - and this ties us into the next thing - of other open-source
|
||
projects, they just do a release, and they don't maybe do development in the
|
||
open. And having not actually worked on other open-source projects really, I
|
||
kind of assumed that this development in the open was the norm. So how common
|
||
do you think or you know that that practice is?
|
||
|
||
21:45 ELLY: Gosh, I would really be guessing, to be honest with you. But I
|
||
would say the development in the open is by far the norm these days. And when
|
||
you see projects that follow the big release model instead, the way that looks
|
||
is they'll be like, hey, version 15 is out, and here's the source for
|
||
version 15. You can look at it. But the development, as it happens, happens
|
||
internally. I would tend to associate that with being maybe big company
|
||
projects that have a lot of confidentiality concerns. So for example, if you're
|
||
building the software that goes with some cool, new hardware for your company,
|
||
you don't want to start checking that software into Git publicly because then
|
||
people are going to read it and be like, ooh, this has support for a
|
||
billion-megapixel camera. That must be coming in the new thing. And so I think
|
||
that the big release model might be, these days, more prevalent when people are
|
||
doing hardware integrations, where there's other components that are shipping
|
||
at a fixed time and you don't want your source to be open until that point. But
|
||
honestly, the developing in the open model is, I think, much more common these
|
||
days. Historically, back in the '70s and '80s, when you would buy an operating
|
||
system and it would come with source, that was just a thing that you got as
|
||
part of the package, then it was much more of the source is released with the
|
||
OS model. Whereas these days, because distributed development is so easy with
|
||
modern version control systems, it's just so common to just develop in the open
|
||
like we do.
|
||
|
||
23:11 SHARON: Oh, cool. I didn't know that. So compared to other open-source
|
||
projects, what are some similarities and differences that Chromium has to
|
||
others that you may be familiar with?
|
||
|
||
23:25 ELLY: Ooh. All the ones I'm familiar with are quite a bit smaller than
|
||
Chromium. And so it's going to be hard to talk about it because, frankly -
|
||
|
||
23:32 SHARON: That's probably the common difference, though, right? Probably
|
||
very few are as big as Chromium.
|
||
|
||
23:32 ELLY: Oh, yeah. So in particular, one of the hardest problems in open
|
||
source - in running an open-source project is managing how humans relate to
|
||
other humans. The code problems are often relatively easy. The problems of how
|
||
do we make decisions about the direction of a project that maybe has a hundred
|
||
contributors who speak 10 different languages across a dozen time zones, that's
|
||
a hard problem. And so I often talk about the idea between open source, open
|
||
development, and then open governance. And so open source is just, like, you
|
||
can see the source. Open development is you can see the development process. So
|
||
the Git repo is open. The bug tracker is open. The mailing lists, where we do a
|
||
lot of our discussion, are open. So we do open development. But then you have
|
||
this next step of open governance, where the big decisions about where the
|
||
project is going are made in the open. And for Chromium, some of those are made
|
||
in the open, especially when it's really about the web platform or that kind of
|
||
thing. But some of them are not. For example, if we're deciding that we're
|
||
going to do some cool new UI design, that design and the initial development of
|
||
it might not necessarily be - or sorry, the development would be done in the
|
||
open, but the designing of it might not. That might be a discussion between a
|
||
few UX designers who all work at Google in a Google internal place. And so
|
||
Chromium has a bit of open governance but not all the way. A lot of smaller
|
||
projects have super open governance. So they'll literally be like, hey, should
|
||
we rewrite this entire thing in Rust? And they'll make that decision by arguing
|
||
about it on a mailing list, where everyone can see. And that's totally, totally
|
||
fine. Because Chromium is so big, we can't make those kinds of decisions by
|
||
having every Chromium engineer have their opinion and just post. It would be
|
||
complete chaos. And because we're big and prominent, a lot of the work that we
|
||
do is very much in the public eye. And so even discussions that are maybe
|
||
relatively speculative - like that example I gave before, where you have an
|
||
idea and you're like, wouldn't it be neat if we did this? It's easy for that to
|
||
turn into people inferring what Google's intentions are with Title Case, like,
|
||
Big Important Thing, and turning that into a lot when you would not have
|
||
intended it to be that way. And so we do end up keeping our governance
|
||
relatively on the closed side compared to other open-source projects I've
|
||
worked on. Other than that, in terms of engineering practices and what we do to
|
||
get the code written, we uphold a super high standard of quality. And in
|
||
particular - which is not to say that most open-source projects don't, because
|
||
they totally do. But Chromium, in my opinion, is really, really thoughtful
|
||
about not just, hey, how should code review work, but really evolving stuff
|
||
like, how should we bring new developers into this project? What should that
|
||
feel like? Those are discussions that we have. And I often feel like those are
|
||
discussions that other open-source projects don't talk about as much. What else
|
||
is different for us? I'm not sure. I think that those are some of the big ones.
|
||
The differences in scale are such that it's almost hard to talk about. The
|
||
difference between an open-source project that maybe has 5 contributors and one
|
||
that has 500 is very, very large.
|
||
|
||
27:07 SHARON: With the open governance thing you mentioned, something that that
|
||
made me think of is maybe Blink Intents, where you submit a thing to a list and
|
||
then that gets discussed. So that's part of the Chromium project, I think,
|
||
right? That falls under that category.
|
||
|
||
27:20 ELLY: Yep. Yep.
|
||
|
||
27:20 SHARON: And so that's where, if you want to make a change to Blink, the
|
||
rendering engine, you do this process of posting it to a list, and then people
|
||
weigh in.
|
||
|
||
27:25 ELLY: Yeah, absolutely. So Blink really does do open governance in a way
|
||
that I, honestly, very much admire. Blink and the W3C and a lot of these groups
|
||
that are setting standards for the internet do do open governance. Because,
|
||
frankly, it's the only way for them to work. It would not be good or healthy
|
||
for the web if it was just like, we're going to do whatever - whatever we,
|
||
Google, have decided to do and good luck everyone else. That would be very bad.
|
||
So yeah, Blink definitely does do open governance. But when it gets to things
|
||
that are more part of the browsers' behavior and features, we tend to have the
|
||
governance a little more closed.
|
||
|
||
28:08 SHARON: Right. And I think an example of Blink being more open governance
|
||
is the fact that BlinkOn is open to anyone to participate to. And that's the
|
||
channel that we're posting this on right now. It just happened to make sense
|
||
that I figured most of the audience who is watching Blink [INAUDIBLE] already
|
||
are interested in these, too. So that's why - [INTERPOSING VOICES]
|
||
|
||
28:27 ELLY: Yeah, absolutely.
|
||
|
||
28:27 SHARON: And for people who may not have - may have found these videos
|
||
that don't know about BlinkOn. That's what that is.
|
||
|
||
28:34 ELLY: Yeah. And just in that vein of open governance for Blink,
|
||
especially, there's also this idea of being a standard and then having things
|
||
be compatible with it. So the web platform is a collection of standards. And
|
||
other browsers have to implement those standards, too. And so for example, if
|
||
we make up a standard that is very difficult or impossible for, like, Firefox
|
||
to implement, that's not good. That's fragmenting the web platform. That's a
|
||
bad thing. Whereas the Chromium UI, like how the omnibox works in Chromium, for
|
||
example, isn't a standard. It doesn't matter whether Firefox or Edge or Opera
|
||
or whoever have the same omnibox behavior as us, right? And so there's much
|
||
less of a need to all agree. And instead, it's almost a little bit better to
|
||
have some variety there so that users can get a little bit more of a choice and
|
||
that collectively more things get tried in that vein. So there's places where
|
||
agreement and standardization are really important. And then there's places
|
||
where it's actually OK for each individual browser to go off on its own a bit
|
||
and be like, hey, we thought of this cool, new way to do bookmarks. And so we
|
||
have built this. And it doesn't matter whether the other browsers agree about
|
||
it because bookmarks are not a thing that interoperates between browsers.
|
||
|
||
29:44 SHARON: Yeah, that makes sense. So now let's talk about some of the
|
||
actual details of what it's like to work on Chromium and make changes, write
|
||
code, and new ideas. So I think you mentioned a few things, like bug tracking.
|
||
That's all public, in the open, apart from, of course, security-sensitive
|
||
things and other [INAUDIBLE] are hidden. What else is there? Code review - that
|
||
was Gerrit. You mentioned that. So You can see all the comments that everyone
|
||
leaves on everyone's changes.
|
||
|
||
30:16 ELLY: Oh, Yeah. And for better or for worse, by the way. It's good to
|
||
bear in mind that if you're like - you're going to type like a slightly jerk
|
||
message to someone on a code review, that's going to be preserved for all time,
|
||
and everyone's going to be able to see it.
|
||
|
||
30:29 SHARON: Yeah. Yeah. Be nice to people. [CHUCKLES] Version control -
|
||
that's Git. Probably people will know about that. Something that might be worth
|
||
mentioning is that a lot of people who contribute to Chromium, and if you look
|
||
at things like Gerrit and Chromium Code Search - that's also public, of
|
||
course - looks a lot like Google internal code search, but obviously it's open
|
||
source. So a lot of people have @chromium.org emails.
|
||
|
||
31:00 ELLY: Yes.
|
||
|
||
31:00 SHARON: So why are there separate emails? Because you can use at a
|
||
google.com or a GMail or any email. So why have this @chromium.org email thing?
|
||
|
||
31:05 ELLY: Yeah, so there's a few different reasons for that. So chromium.org
|
||
emails are available to members of the project, which is a little bit
|
||
nebulously defined, but it's definitely not just Googlers. And so there's a
|
||
couple reasons why people like having those. So for some folks, it's sort of a
|
||
signal that you are acting as a member of the open-source project rather than
|
||
acting with your Google hat on, if you like. And so for example, I help run the
|
||
community moderation team for Chromium. And so when I'm doing work for that
|
||
team, I'm very careful to use my chromium.org account because I want it to be
|
||
clear that I'm enforcing the Chromium community guidelines, which are something
|
||
that was agreed upon by a whole bunch of Chromium members, not just Googlers.
|
||
And so I'm not enforcing Google's code of conduct. I'm enforcing Chromium's
|
||
code of conduct in my role as a Chromium project person. So sometimes you
|
||
deliberately put on your Chromium hat so that you can make it clear that you
|
||
are acting on behalf of their project. Some folks - and I'm also one of these
|
||
folks, by the way - just happen to really be big fans and supporters of free
|
||
software and of open source. And so if I have the choice between wearing my
|
||
corporate identity and wearing my open-source project member identity, I might
|
||
just wear my open-source project member identity and decide to actually
|
||
contribute that way. And so a lot of the folks who've been on Chromium - or
|
||
have been on Chrome, I should say, for a while, that's part of their reasoning.
|
||
They joined because they were excited to work on something that was open. And
|
||
so they have this open-source identity, this Chromium identity, that they use
|
||
for that. There's a third factor, and this touches on one of the sometimes less
|
||
pleasant parts of working in open source, which is our commit log and our bug
|
||
tracker and all of that stuff are public. And what that means is that everyone
|
||
on the internet can go see them. And that is often great, but it's occasionally
|
||
not great. So for example, if you go and make an unpopular UI change, people on
|
||
the internet know that that was you. And that might not be something that
|
||
you're necessarily super ready to deal with. So for example, way, way, way, way
|
||
early in my career, I made a change to Chromium OS because I was working - I
|
||
was on the Chrome OS team as a brand Noogler. So this is I've been at Google
|
||
maybe five or six months. I made a change to Chrome OS. Somebody happened to
|
||
notice it and take issue with it. I don't even remember what the change was or
|
||
the issue. But they happened to notice it and take issue with it. They showed
|
||
up in our IRC channel, because we used IRC at the time, which was also public
|
||
because the whole project was very open like that, and really just started
|
||
yelling at me personally about it. And I'm like, this is not a cool experience.
|
||
This is something that if this was a Google coworker of mine, I would be
|
||
talking to HR about this. But it's actually just a random person on the
|
||
internet. And so there are some folks who use their Chromium username as a
|
||
little bit of a layer of insulation almost, where it's like, I want to work on
|
||
this project, but I don't - maybe my Google username has my full name in it. I
|
||
don't necessarily want every change I make to be done like that. And so if you
|
||
don't do that, you can end up in a situation where you make a change, and then
|
||
it's really attributed to you as though it was your personal idea and you did
|
||
this bad thing. And that's not a risk that everyone wants to take as part of
|
||
doing their work. And so sometimes people have a chromium.org account really
|
||
because they want an identity that's separate from their Google account - that
|
||
has a different name on it, that has different stuff like that. And so one of
|
||
the things that I'm always cautious to remind folks of on my team is, if you're
|
||
working with someone who has a chromium.org account, always use that
|
||
chromium.org account when you're speaking in public, always, always, always,
|
||
because you don't want to break that veil if someone is relying on it.
|
||
|
||
35:09 SHARON: Right. Yeah, that makes sense. And I think, in general, whenever
|
||
you are signing up for interacting in these public spaces, generally, I think
|
||
it's encouraged to use your chromium.org account. So for example, Slack, which
|
||
is the modern - current IRC often -
|
||
|
||
35:27 ELLY: It hurts my soul to hear you say that.
|
||
|
||
35:32 SHARON: Well - [LAUGHS]
|
||
|
||
35:32 ELLY: I'm a die-hard IRC user. I've been using IRC for 30 years. And I
|
||
was one of the few people who was I think very sad when we decided to move off
|
||
IRC. But you're right, that it is the modern IRC option.
|
||
|
||
35:44 SHARON: I think a lot of people are very die hard about IRC. So, you
|
||
know, but modern or not, that's what's currently being used.
|
||
|
||
35:49 ELLY: Absolutely.
|
||
|
||
35:55 SHARON: So Slack is where anyone can join and discuss Chromium stuff. And
|
||
generally, that kind of thing, you're encouraged to use your chromium.org
|
||
account.
|
||
|
||
36:01 ELLY: Yeah, absolutely. And to be fair to Slack also, the Slack has
|
||
probably 30 times as many people in it as the IRC channel ever did. So I think
|
||
that it's pretty clear that Slack is more popular than IRC was. But, yeah, no,
|
||
we use our Chromium identities a lot, really, really on purpose. And to be
|
||
honest, I would like it if we use them even more. Sometimes you will see folks
|
||
who actually have both identities signed up. So they'll have their google.com
|
||
and their Chromium, and that's always confusing for everyone. So if it was up
|
||
to me, I would say everyone has a Chromium identity, and they'd just all use it
|
||
when they're contributing.
|
||
|
||
36:39 SHARON: Yeah, that's definitely one of these unique two Chromium
|
||
[INAUDIBLE] pain points of someone [INAUDIBLE] use their maybe - often, they're
|
||
the same for most people. But sometimes they're different. Sometimes they're
|
||
very subtly different, and it's -
|
||
|
||
36:53 ELLY: Absolutely.
|
||
|
||
36:53 SHARON: you end up sending your [INAUDIBLE]...
|
||
|
||
36:53 ELLY: I also - I have met a couple folks who the Google username they
|
||
really wanted wasn't available, but it was available for chromium.org. And so
|
||
they picked a shorter, cooler username for chromium.org, which is totally -
|
||
totally fine to do. But then, every time you have to remember, oh, I know them
|
||
by this longer Google username, but actually they use this shorter username for
|
||
Chromium.
|
||
|
||
37:13 SHARON: Yeah, you have to remember their real life name. You have to
|
||
remember their work email. And then now you have to remember another work
|
||
email.
|
||
|
||
37:19 ELLY: Well, we have software that can help with that a bit.
|
||
|
||
37:25 SHARON: Yeah, for sure. So as part of that, and that's, in a way - a
|
||
thing that to me feels very related is there's a thing called being a committer
|
||
in Chromium. So what does it mean to be a committer? And what does it entail?
|
||
|
||
37:37 ELLY: Yeah, so committers are basically people who are trusted to commit
|
||
to CLs, for want of a better way of putting it. So the way the project is
|
||
structured, anyone can upload a CL. And anyone anywhere on the internet can
|
||
upload a CL. It has to be reviewed by the OWNERS of the directories that it
|
||
touches or whatever. But there are some files that are actually, like, OWNERS
|
||
equals star. So for example, the build file in Chrome browser, because
|
||
everybody needs to edit it all the time, it just has OWNERS equal star. And
|
||
there's a comment that's like, hey, if you're making a huge change, ask one of
|
||
these people. But otherwise, you're just freely allowed to edit it. And so if
|
||
the committer system didn't exist, anyone on the internet would be allowed to
|
||
edit a bunch of parts of the project without any review, which is pretty bad.
|
||
And so there's this extra little speed bump where it's like, you have to send
|
||
in a few CLs to show that you're really a legit person who's contributing to
|
||
the project. And once you've done that, you get this committer status, which
|
||
actually allows you to push the button that makes Gerrit commit your change
|
||
into the tree. And that's what it does mechanically. We culturally tend to have
|
||
it mean something a little different than that, but it's - culturally, it's
|
||
like a sign of trust of the other project members in you. So getting that
|
||
committer status really means, we collectively trust you to not totally screw
|
||
things up. That's what it is. And so you have to be a committer to actually be
|
||
in an OWNERS file, for example. You can't be listed as an owner until you're a
|
||
committer. Because if you're not a committer yet, we're not really - if we're
|
||
not trusting you to commit code, we're not really going to trust you to review
|
||
other people's code. And, yeah, when you're new joining the project, it's
|
||
actually a pretty big milestone to become a committer. You become a committer
|
||
after you've been working for anywhere from three to six months, I would say.
|
||
And it's definitely this moment of being like, yeah, I've really arrived. I'm
|
||
no longer new on the project. I'm now a full committer.
|
||
|
||
39:51 SHARON: Can you briefly tell us what the steps, mechanically, to becoming
|
||
a committer are?
|
||
|
||
39:51 ELLY: Yeah, so you need to have landed enough CLs to convince people you
|
||
know what you're doing. And there is no hard and fast limit, but it's like - it
|
||
should be convincing. And so I often hear maybe 15 to 20 of nontrivial CLs is a
|
||
pretty good number. Having done that, you need someone to propose you or
|
||
nominate you for committership. So there's actually - there's a mailing list
|
||
for having these discussions. And so whoever's going to nominate you, who has
|
||
to already be a committer, they'll send mail to that list, basically being
|
||
like, I would like to nominate this person for committer. There's a comment
|
||
period during which people can reply. And then if there's nobody who is raising
|
||
a big objection to you being a committer, after - I don't know what the actual
|
||
time period is - but after some amount of time, the motion carries with no
|
||
objections, and then your Chromium account becomes a committer. I think Google
|
||
accounts can also be committers as well, but I've only ever done this process
|
||
for Chromium accounts. And so those threads - what's going on in those threads
|
||
is mostly people endorsing the request. So let's say that I have someone who's
|
||
new on my team who I want to propose as a committer. I'll start the thread
|
||
nominating them as a committer, and then I'll go and talk to maybe two or three
|
||
of the people who have reviewed a lot of their changes, and I'll be like, hey,
|
||
would you endorse this person for a committer? If so, please post in this
|
||
thread. And so in the thread, there will actually be a couple of replies that
|
||
are like, plus 1, or, yes, this seems like a good fit. Very rarely, there might
|
||
be a reply, which is like, hey, I saw some - I saw some stuff on this CL that
|
||
shows that maybe this person isn't quite ready. We had a whole bunch of back
|
||
and forth comments, and eventually it really didn't seem like they understood
|
||
what I was asking for. And I feel like they're not really ready yet. Sometimes
|
||
that will happen. But usually the threads - by the time someone's nominating
|
||
you, you're already in good shape. So that's the mechanical process. And then
|
||
there is - it might actually just be Eric, individually, who goes through and
|
||
flips the bits on people being committers based on the threads. I'm not sure.
|
||
But there's some process by which those threads turn into people being
|
||
committers.
|
||
|
||
42:14 SHARON: OK, cool. Is there an analog of this either internally at Google
|
||
or in other open-source projects? Because internally at Google, there's the
|
||
concept of readability, which means you are vouched for that you know how to
|
||
code in this one language, which has some similarities. That's maybe a similar
|
||
thing. Are there any similar notions in other projects you've seen?
|
||
|
||
42:38 ELLY: Yeah, so many projects have this notion of being a member. And that
|
||
often combines our notions of committer and sometimes code owner. And so they
|
||
might - or for some open-source projects, you'll actually hear "maintainer" as
|
||
the thing. And so they'll be like, only people who are project members can
|
||
upload changes in the first place. And only people who are maintainers can
|
||
merge those changes. So that little speedbump on entry is pretty common.
|
||
Because it's a fact of life that if you are on the public internet and you have
|
||
no barriers to entry, you're going to have spam in your community no matter
|
||
what you do. And so that kind of split is super, super common. For some
|
||
projects that don't do open development, the entire thing might happen inside a
|
||
company or inside an organization anyway. And then there is no notion of
|
||
committer status because you're just hired onto that team and then you can
|
||
commit. But for projects that do open development and free software projects,
|
||
there is often a sense of, these are the people who are roughly trusted to land
|
||
code. And for a lot of projects, especially bigger ones, there's actually a
|
||
two-tiered model, where maybe you have people who are domain experts on a
|
||
specific thing, like, they maintain some subsystem. And they're trusted to make
|
||
whatever changes they need or approve other people's changes in that area. But
|
||
then at the wider scale, there's what's often called a steering committee or a
|
||
core group or something. And those groups have authority over the whole project
|
||
and the direction of everything that's going on. And so you'll often see that
|
||
kind of model in larger projects. At smaller scales, it's often literally a
|
||
list of one to five people who all have commit access to the same Git repo, and
|
||
there's no - no structure on top of that. But for bigger projects, governance
|
||
becomes a real concern. And so people start thinking about that.
|
||
|
||
44:35 SHARON: All right. Now, let's switch topics to talking about the more
|
||
day-to-day logistics of working on Chromium. So if you're not a Googler, don't
|
||
work at Google, to what extent can you effectively contribute to Chromium, the
|
||
project?
|
||
|
||
44:48 ELLY: Yeah, so that depends where you're coming from, both whether you're
|
||
part of another large organization, like maybe you work at Microsoft, you work
|
||
at Opera, Vivaldi, one of those companies, or if you're really an IC lone
|
||
contributor. If you're in a large organization, probably your org will have its
|
||
own structure around how you should contribute anyway. And so you might just
|
||
want to talk about that. So I'll really focus on the individual contributor
|
||
angle. And so for engineers specifically, like if you're a programmer who wants
|
||
to contribute to the code base, that's awesome. The best approach I think is
|
||
really to find an area that you're passionate about because it's so much more
|
||
fun and enjoyable to contribute when you're doing something you care about. So
|
||
find an area you care about. Get in touch with the team that works on that
|
||
area, either through their mailing lists or find their component in Monorail or
|
||
find them in the OWNERS files or whatever. Get in touch with those folks. Ask
|
||
them what are good places for you to contribute as a new person. That's often a
|
||
really great way to get started. And you'll have a person you can go to for
|
||
advice to be like, hey, how do I go about doing this thing? My experience has
|
||
been that Chromium contributors are pretty much all super helpful. And so
|
||
they're very willing to just give you guidance or do whatever. And you'll then
|
||
know who to send your code reviews to.
|
||
|
||
46:01 SHARON: Cool. Yeah. And if you're not an engineer, what are some ways you
|
||
can also contribute?
|
||
|
||
46:06 ELLY: Yeah, so there's a whole bunch of these. And by the way, these all
|
||
apply to basically every open-source project, so not just Chromium
|
||
specifically. So open-source projects, if you are a good writer, if you enjoy
|
||
doing technical writing or you enjoy doing UX writing or you want to do that
|
||
kind of thing, almost every open-source project out there is looking for people
|
||
to contribute documentation. And Chromium is no exception at all to that. So
|
||
high-quality documentation, we love that stuff. Or even if you're just honing
|
||
that craft and you want to practice, Chromium is not a bad spot to do that. If
|
||
you're a UX designer or a visual designer, a lot of open-source projects will
|
||
actually appreciate your contributions of you bringing in, like, hey, I thought
|
||
of a way that this user experience could feel or how the screen could look or
|
||
something like that. They'll often appreciate that kind of input or design
|
||
work. If you are someone who speaks multiple languages, translations are
|
||
another great way to contribute to open-source projects. A lot of open-source
|
||
projects don't have access to the same kind of - Chromium has access to a
|
||
translation team within Google who do a lot of our translations. A lot of
|
||
open-source projects don't have that. And so contributing translations of
|
||
documentation, of user-facing interface, stuff like that, can be super
|
||
valuable. And the last thing I'll say, which can be done by really anyone - you
|
||
don't even need special skills for this one - is try early releases of stuff.
|
||
So try development branches. If you're a Chrome user, try running Beta or Dev
|
||
or Canary. And then when something doesn't feel right or when it's - when it
|
||
doesn't work for you or it crashes or whatever, file bugs. And try to get
|
||
practiced at filing good bugs, with details and info and steps to reproduce the
|
||
bug and stuff like that. That's such a huge help as a developer of any
|
||
open-source projects - to get that early-user feedback and be able to correct
|
||
problems before they make it to the stable channel. And on Chromium, I've run
|
||
into a few folks who just - their main contribution to the project is really
|
||
just that they file great bugs all the time. There's a few folks who all they
|
||
really do is they run Canary on Mac, and they notice when something doesn't
|
||
feel quite right. And so they file stuff that's like, maybe the engineering
|
||
team wouldn't necessarily have noticed it. But when someone calls it out, we're
|
||
like, oh, that actually does feel kind of janky, and now we can go fix that.
|
||
And getting that feedback early is so, so valuable. So there's a lot of
|
||
different ways. Those are some, but there's plenty more, too.
|
||
|
||
48:21 SHARON: OK. Cool. Yeah, and a few things on that. If you want to really
|
||
try out random things, you can go to chrome://flags, play around there, see
|
||
what happens. In terms of going back a bit for being an engineer, there's other
|
||
web-adjacent stuff that you can do that we won't get into too much now. But
|
||
that can be things like adding web platform test, web standard stuff. And for
|
||
people who are into security, we have a VRP, Vulnerability Rewards Program. But
|
||
if you know about that, probably you're into the whole security space. This is
|
||
not how you're going to - maybe this is how you heard about it, and you want to
|
||
get into it. But, anyway -
|
||
|
||
48:59 ELLY: Yeah. I will say, if you're a security researcher and you aren't
|
||
familiar with the Chromium VRP, you should go take a look because it's -
|
||
Chromium is a really interesting project to audit for security. And the VRP can
|
||
make it very worth your while to do so if you find good bugs.
|
||
|
||
49:12 SHARON: Mm-hmm. Yeah. And going back a bit earlier to being an engineer,
|
||
like an IC, who is not at Google or any of these other big companies, there are
|
||
other barriers to entry to being a contributor, right?
|
||
|
||
49:28 ELLY: Oh, yeah.
|
||
|
||
49:28 SHARON: So I definitely encountered this after my internship. I worked on
|
||
Chrome. I was like, hey, I know what's going on now at the end of it. A couple
|
||
things we didn't finish. I'll go home, and I will keep working on this - good
|
||
intentions. And I got home, got my laptop, which was a pretty good laptop, but
|
||
still a laptop. I downloaded Chrome. That took a very long time. I built it for
|
||
the first time, which always takes a bit longer. But that took so long. And
|
||
even the incremental builds just took so long that I was like, OK, this is not
|
||
happening. I'm in school right now. I've got other things to worry about. So
|
||
how feasible is it for a typical person, let's say, to actually make changes in
|
||
Chromium?
|
||
|
||
50:05 ELLY: Yeah, that is unfortunately probably the biggest barrier to entry
|
||
for individuals who want to make technical contributions. Obviously, it doesn't
|
||
affect you if you're contributing documentation translations, whatever. But if
|
||
you're trying to modify the code, yeah, the initial build is going to be very
|
||
slow, and then the incremental builds are going to be very slow. And a lot of
|
||
the ancillary tasks are slow too, like running the test suite or running stuff
|
||
in a debugger. The project is just very big. And that's something that I think
|
||
a lot of folks on the Chromium team wish we could reduce. But Chromium is big
|
||
because the web is big and because what people want it to do is big. And so
|
||
it's not just big for no reason. But it does make it harder to get started as a
|
||
contributor. I've had this experience, too. I have a modern laptop sitting on
|
||
the desk over there. And it takes seven to eight hours to do a clean Chromium
|
||
build on that. Whereas on my work workstation, which has access to Goma,
|
||
Google's compile farm, it takes a few minutes. And the large organizations that
|
||
contribute also all have compile farms for the same reason. It's just so slow
|
||
to work when you're only doing local building and don't have access to a ton of
|
||
compilation power.
|
||
|
||
51:12 SHARON: Mm-hmm. Yeah. I wonder if we could, I don't know, do a thing for
|
||
people who are individuals who contribute more. Probably that would be really
|
||
hard to do. Probably people have thought about it. But, yeah.
|
||
|
||
51:24 ELLY: It would be nice if we could. I don't know what the challenges
|
||
would be offhand, but it would be very cool if we could somehow make that
|
||
available.
|
||
|
||
51:30 SHARON: All right. That all sounds very cool. I know I learned a lot.
|
||
Hopefully some of you learned a lot, too. I think if you are working within
|
||
Google, it's really easy to not really interact with any of this more
|
||
open-source stuff, depending on which part you work on. Maybe you work on a
|
||
part that's very Google Chrome specific. I know before I was working on
|
||
Fuchsia, so that was before Launch. So that was not really something we were
|
||
open to the public about anyway. And a lot of even the typical Chrome tools I
|
||
was unfamiliar with. So I think depending on which part you work on, this
|
||
stuff - it's all there, but you might not have had a chance to interact with.
|
||
So thank you, Elly, for telling us about it and giving us some context about
|
||
free and open-source software in general.
|
||
|
||
52:08 ELLY: Yeah, of course.
|
||
|
||
52:08 SHARON: Is there anything you would like to give a shout out? Normally,
|
||
we shout out a specific Slack channel. I think in this case, the Slack in
|
||
general is the shout out. Anything else?
|
||
|
||
52:20 ELLY: The Slack, in general, definitely deserves it. Honestly, I'm going
|
||
to go a little bit larger scale here. I'm going to shout out all of the folks
|
||
who have contributed to Chromium, both at Google and elsewhere. It is the work
|
||
of many hands. And it would not be what it is without the contributions from
|
||
the folks at Google, the folks at Microsoft, folks at Yandex, folks at Naver.
|
||
All of these different browsers and projects and all of the different
|
||
individuals that have contributed, like everyone in the AUTHORS file - so shout
|
||
out to all of those folks. And also, I really want to shout out the open-source
|
||
projects not even part of Chromium that we use and rely on every day. So for
|
||
example, we use LLVM, which is a separate open-source project for our
|
||
compilation toolchain. And I think I would not be exaggerating to say that
|
||
Chromium couldn't exist in its current form without the efforts of a bunch of
|
||
other open-source projects that we're making use of. And so I'm really hopeful
|
||
and optimistic that Chromium can live up to that. We're standing on the
|
||
shoulders of a lot of other open-source projects to build the thing that we've
|
||
built. And I'm hopeful that, in turn, other projects are going to stand on our
|
||
shoulders to build yet cooler stuff and yet - yet better programs and build a
|
||
yet better open-source community. So shout out to all of the authors of all the
|
||
open-source software that Chromium uses, which is a lot of people. But they
|
||
deserve it.
|
||
|
||
53:37 SHARON: Yeah, for sure. It's very cool how it's very - all very related.
|
||
And even within Chrome, I think people stick around longer than typical other
|
||
projects. And it's cool to see people around, like a decent number of them,
|
||
from before Chrome launched. And that's probably [INAUDIBLE] to a generally
|
||
more positive engineering culture. So that's very good.
|
||
|
||
53:58 ELLY: I think so. But I'm biased, of course.
|
||
|
||
53:58 SHARON: Yeah, maybe. [LAUGHS] Cool. You mentioned mailing lists a bunch.
|
||
Any favorites that you have?
|
||
|
||
54:08 ELLY: Oh, yeah. chromium-dev is the mailing list of my heart, I would
|
||
say. It's the main open-source development mailing list for us. It's a great
|
||
place for all of your newbie questions. If you're just like, how the heck do I
|
||
even check out the source, that's a good place to ask. The topic-specific
|
||
mailing lists, especially net-dev and security-dev, are really good if you have
|
||
questions in those specific areas. But honestly, all of the mailing lists on
|
||
chromium.org are good. I haven't yet encountered one where I'm like, that
|
||
mailing list is bad. So check them all out.
|
||
|
||
54:33 SHARON: Cool. All right. Check out every single mailing list. Sounds
|
||
good.
|
||
|
||
54:38 ELLY: Yeah, every mailing list, every Slack channel.
|
||
|
||
54:38 SHARON: All right. Great.
|
||
|
||
54:38 ELLY: You're all good.
|
||
|
||
54:38 SHARON: Every Slack channel, I think - yeah, I'll add myself to the rest
|
||
of them. All right. Well, thank you very much, Elly.
|
||
|
||
54:45 ELLY: Of course.
|
||
|
||
54:45 SHARON: Thank you for chatting with us. And see you all next time.
|
||
|
||
54:51 ELLY: All right. Thank you, Sharon. Easter egg - in the second part of
|
||
this video, Elly is drinking soda.
|