How Firefox upholds its values and keeps up with change
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 490 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/47343 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
GoogolSlide ruleRule of inferenceTwitterMedianComputer animationSource code
01:18
GoogolSlide ruleSlide ruleComputer animationSource code
01:41
GoogolSlide ruleFluid staticsWindowDistribution (mathematics)Computer animation
02:11
GoogolSlide ruleGUI widgetWeb browserSlide ruleComputer animation
02:45
Compilation albumGoogolSlide ruleMultiplication signProcess (computing)Mobile WebFood energyBitComputer animation
03:45
GoogolSlide ruleData managementBitTerm (mathematics)Computer programmingComputer animation
04:14
Slide ruleGoogolCompilation albumSource codeProcess (computing)World Wide Web ConsortiumComputer animation
04:35
GoogolSlide ruleDeterminantTask (computing)Source codeProgram flowchart
05:21
Slide ruleGoogolTrailSoftware bugPhysical lawPublic key certificateVotingHecke operatorNumberDistribution (mathematics)Source codeComputer animation
06:29
GoogolSlide ruleComa BerenicesScheduling (computing)Power setProxy serverElectronic program guideDigital photographySource codeComputer animation
07:57
GoogolSlide ruleComa BerenicesStress (mechanics)Computer animation
08:14
GoogolSlide rule2 (number)Video gameMultiplication signSoftware developerProjective planeOpen sourceEmailWeb 2.0Arithmetic meanRepository (publishing)Group actionClient (computing)Source code
09:50
Fluid staticsGoogolSlide ruleWave packetBeta functionQuicksortMathematicsComputer animation
10:57
GoogolSlide ruleCompilation albumComa BerenicesFluid staticsMultiplication signComputer hardwareSoftware testingMathematicsProduct (business)Boom (sailing)Combinational logicComputer animation
12:03
GoogolSlide ruleCompilation albumUser interfaceMechanism designMathematicsOrder (biology)Computer animation
12:42
Uniqueness quantificationSlide ruleGoogolSoftware testingAnnulus (mathematics)Sampling (statistics)Source code
13:00
Slide ruleGoogolAngleCompilation albumWeb browserComputer animation
13:42
GoogolSlide rulePositional notationCompilation albumDecision theoryElectronic program guideSelf-organizationSource code
14:26
GoogolSlide ruleCompilation albumTable (information)Moving averagePoint (geometry)Formal languageTrailWeb browserComputer animation
16:57
GoogolSlide ruleWeb browserCodeLibrary (computing)Server (computing)Point (geometry)Moving averageClient (computing)Default (computer science)Entire functionConsistencySource code
18:23
Slide ruleGoogolInclusion mapCompilation albumWebsiteProduct (business)Table (information)Internet forumPasswordInformationPower (physics)Group actionProcess (computing)Point (geometry)Mechanism designSource code
22:00
Point cloudOpen sourceFacebook
Transcript: English(auto-generated)
00:05
So thank you all for coming out on a rainy Sunday morning. Appreciate it. So Friday, I was in Berlin, where Mozilla was having its twice a year all hands. And I was thinking about this presentation.
00:20
And a question came to mind, which is, how many at the median tabs are open in a Firefox session? Now, there's the answer from Twitter. And I'm going to ask you all. All right, 20 or more tabs are open.
00:43
Put your hand up. All right, if 10 to 20 tabs are open, 10 or less.
01:00
So I have a rule. Do not feign surprise. I'll take questions at the end because we're compressed for time. Do not feign surprise. It's a rule that's used by the, whoops, and, OK, thank you.
01:23
I couldn't find my little slide progressor thing, so there. OK. So do not feign surprise. So I'm going to show you what my reaction was when I asked a member of our telemetry team what the median was.
01:44
Two. At the median, a person will have two tabs open. Now, caveats on this. If you're using a distribution on Linux, like most of us in the room are,
02:02
you probably have telemetry stripped out. So this data is skewed towards our Mac OS and Windows users. But anyhow, what I'm here to talk to you about is, how do you ship new features in a browser which people want, serve diverse groups,
02:21
and do all of this without being creepy? So what we had to do to think about this, whoop, hold on. Like I said, I'm not used to having, I couldn't find my little slide advance or widget. No, I've got it.
02:47
And that just, today's been a thing. Today has been a bit of a day. Anyhow, so what we had to do to do this is that we had to replace our process, thinking about this,
03:01
with one that was biased towards our current, our old process was biased towards people who had the time and energy and privilege to be vocal with what they wanted.
03:22
So we're going to talk about how we changed how we thought about features and how we changed it. And today I'm just talking about desktop Firefox. We're trying to do much more work on mobile Firefox. Mobile, of course, is where the majority of browsing
03:41
is occurring these days. But we've learned a lot with desktop Firefox. So just a bit about myself. I work at Mozilla. My title is Bugmaster, which is a fancy term for engineering program manager. I work with a team that works on Bugzilla, that works on Fabricator, that works on Lando.
04:02
I am primarily focused on policy, process, and understanding how we handle bugs. I love coffee, and I love ice hockey. So let's talk about features. So there's lots of sources for features.
04:21
One source, of course, is our standards process. People are making updates to JavaScript. We're making updates to HTML, and all of these processes going through W3C. So that's one source of features. The past is also is that we get features from talking to users of people using Firefox.
04:43
And we have a UX team. We also have the ability for people to request enhancements. One of our volunteers, Kohei, put in this great feature last year that allowed us to determine Mark Bugs's task in Bugzilla, features, or actual defects.
05:05
So we get enhancement requests. Now, Bugzilla has votes. And in the past, it's been used as a way for people to prioritize work.
05:22
The problem with votes is it's a rotten way to prioritize. I'm going to go back to Luis Villavilla. You may have seen him yesterday at the track on Libre and Law. But back in the day on the Gnome list, he mentioned that votes end up having
05:40
no bearing on an actual bug validity, its importance, or its severity. So a lot of people could vote for a bug, but it only affects a small number of users, or just one distribution. Whereas there could be a bug that has no votes,
06:01
but it's broken all of our users, like what happened last summer with add-ons. So the problem is you use Firefox, you use add-ons. You don't know where to go to say, add-ons are broken. I can't load them. I get the certificate error.
06:21
What the heck is going on? But we know that that's a high severity issue. We all lost a lot of sleep that weekend. So how many of you are familiar with Hitchhiker's Guide to the Galaxy?
06:42
So you know this story. This is something, a photograph that Cory Doctorow took at Brede University College London. So you remember at the beginning of the story is basically there's this guy named Arthur Dent who has this friend named Ford Prefect, who is very strange because he's named after a car that
07:00
was sold in England in the 1970s and 80s. And he wakes up one morning and finds out the Earth has been scheduled for demolition. And he goes and asks, well, why? We didn't know about this. You didn't tell us about scheduling to destroy the Earth for a hyperspace bypass.
07:23
And the aliens who are running the demolition fleet say, look, dude, we had a notice up. It was in Alpha Centauri. You could have just gone over to Alpha Centauri, gone to the basement of the office, and found the demolition permit.
07:40
At the same time, Arthur's house is about to be demolished. And he asks the guy, he's about to do it, saying, well, dude, it was in the council office, in the basement, in the room that said, boy, I heard the leopard.
08:00
So long story short is people are not in the same places where we make decisions. And this causes concern. This causes worry and stress. And a lot of the time, privilege determines this. So privilege can be here is just, I know what Bugzilla is.
08:23
I know how to log into Bugzilla. I know how to read a news group. I know how to read a mailing list. These are things that we as developers take for granted, but everyday users don't. So you have to know, where do you find the discussion? Do you have time to be involved in that discussion?
08:43
Think about the question that people brought up is, should GitHub be your resume? And GitHub as your resume means that you have all this time to work on projects in GitHub, but you could be a perfectly fine developer raising two kids at home with no time to work on side projects. And nobody will know about you
09:01
because you don't have a GitHub repository that shows you working on all these cool open projects. So if you did enter the discussion, will you be heard? And also, if you entered a discussion, will you be harmed? A few years ago, I was working at Linden Lab. Linden Lab open sourced the Second Life web client,
09:22
or excuse me, Second Life client. Notoriously difficult to build. And a person on the open source mailing list, saying, what can we do to clean this up? What can we do to make it easier for people used to the project to build the Second Life viewer? And a person immediately came in and said, how dare you?
09:44
I suffered through this. Why should anybody else have an easier time with it? And so that's what I mean by asking a question and not getting harmed, not getting yelled at. I want to point out some work that Dylan did in the audience. He used to work on Bugzilla for us.
10:01
He's now over at Fastly. And he did a lot of work to make it easier to build Bugzilla. You can run it in a container. So that's the sort of thing that we want to do. So sorry to embarrass you, Dylan. So we're working on time.
10:22
Infrastructure. So let's talk about infrastructure for deploying changes. So Firefox ships on three release trains. Last year, it was six weeks. Now we're doing it every four weeks. There's a new Firefox coming out on Tuesday. So I'm going to be very busy on a train between here and Paris
10:41
on Monday trying to figure out, making sure that all the switches are set for release. So we have a nightly where new features land. Beta goes through that. And then it goes out on release.
11:01
A lot of the time we use preferences, which you've seen in about profs to manage that. So here we go. So we land a feature on Nightlink. It goes on the beta. It goes on the release. Boom! It crashes in release. Remember, we're releasing across all kinds of combinations
11:20
of operating systems and hardware. My friend Charity Matures talks about you're always shipping. You're always testing in release, whether you want to or not. So what happened when we did this? Well, normally what happens then is we have to spin up a new release. And that's expensive to spin up a new release.
11:42
We have to back out the change. We have to test the back out. Then we have to get it to users. And there's no guarantee the users will pick it up. So anytime, again, you send a relations, you are testing in production.
12:03
So we talked about experiments at Mozilla, has a way of getting around this. And our first thing was using this thing called TestPilot. So TestPilot was using the add-ons mechanism to try out new features in Firefox.
12:22
So again, this is great. It's opt-in if you want to try it. However, you have to know what add-ons are. You have to know how to install an add-on. You have to understand that an add-on changes the user interface of Firefox before you use it,
12:41
in order to use it. So we ended up picking up a biased sample of users this way. So we're picking up people who know Firefox, essentially people kind of like us. Maybe not developers, but still experts.
13:00
Thank you. So again, you have to know about it. We're the leopard. So we have to change how we think about features. So this is a sticker by Laura Thompson, who now runs our browser futures research at Mozilla. And she referred to experiments as cupcakes. So cupcakes, you can make a whole bunch of cupcakes,
13:24
and then you can experiment with toppings and fillings and frostings, because you don't want to make a chocolate cake and then do an anchovy frosting and throw away a whole cake. It's just better to throw out the one cupcake and then try the next one with chocolate frosting instead of anchovy frosting.
13:44
And we also grew our product team. So we actually had people taking ownership of making decisions about the browser, about the future of the browser, about features. And then we had a data science organization. Now, when you bring in a data science organization,
14:02
people get immediately start asking questions about telemetry and data from the users. I'm going to defer you to our data collection principles. And this guides all the work that we do, because we know we need to understand how people are using the browser, but we also cannot abuse that trust.
14:27
And then we have to change our tooling to ship code. So remember when we said that we had things like turning on features with preferences? And the only way I could update the preferences, this was to ship a point release.
14:45
What if, and I'm going to use a D&D metaphor here, what if your browser is walking down the hall of the dungeon, and you've got your sword, and you've got your torch, and you've got your thief, and you've got your wizard, and you've got your tank. And you come along, and then instead of a wandering monster,
15:04
there's a wandering feature. And the referees ask, hey, you come across a wandering feature. Roll on the encounter table. So you roll the dice.
15:22
So what we do now is we say, instead of, are you a thief, are you a rogue, are you a wizard, are you a cleric, are you a paladin? We say, are you Linux, are you Windows, are you Mac? Are you, in an English language reason, are you in the EU?
15:40
Do you have a coprocessor, do you have a GPU? And that tells us what table to roll on. And then we'll turn on the preference. So what we're doing is, every few hours, your browser, if it's enabled, will go back and ask,
16:01
hey, referee, are there any wandering features on the encounter table for me to roll against? And it says, yes, roll on this table. And it rolls the die randomly and says, okay, I rolled six. Okay, you get the feature. So notice that we don't have to keep track of who you are.
16:23
We just simply probabilistically assign you to features as we're going along. So we apply the preference. So this is mainly being done for UI features, because it's pretty easy to turn this stuff on and off
16:42
at the feature level, to turn on and off JavaScript. We're figuring out how to do this for features that are in Rust and C++. Because normally what we have to do now is turn on, we have to restart your browser to do it.
17:02
So what does this enable you to do? So I can get, 90% of my target audience, I can deploy a feature in 72 hours. If you can talk to our preferences server, which we call Normandy, you get the update. You don't have to wait for a point release.
17:25
Rolling back means all I have to do instead of backing out code and retesting and responding all this stuff is I just turn off the feature. And, most importantly, we are sending rules, not code.
17:42
It is very scary to send code to a browser, because if your server is sending code gets hacked, then I have poisoned my entire user population. So I'd much rather send a preference.
18:01
We also do some stuff around safety. Preference server and client are designed to fail safely, and then major releases always restore safe defaults. So we do consistent pref flipping, again, from what I described with the library.
18:20
That was developed by another one of our engineers. We have a tooling site for it called Experimenter that we use for managing experimental pref flips as well as production pref flips. So we did Firefox Monitor last year,
18:41
which we did in cooperation with Have I Been Pwned. This enabled us to really quickly turn on this feature for a select few people, understand how it was working, and then decide, OK, we'll go ahead and roll it out to a broader audience. And, again, for this to work for Firefox Monitor work,
19:04
all we had to know is what site they're looking at. So we just basically look at it. There's a reference table we look at to anonymize this, so we can just say, hey, you're on XKCD. The forums have been hacked. Make sure you update your password.
19:21
And then the product process behind this is just going through saying which of these features you want, and people said, hey, we want to be notified about site releases. So then we constructed an experiment to see, hey, will this work? OK, three minutes?
19:43
So doing this experimentally enabled us to get half a million people or 600,000 people nearly in the United States to try this out. So summing up, what we had to do was recognize the biases that our product had.
20:00
Remember when I asked you, again, the first question is how many tabs do you have open? And it turns out it's much less than you think it is. Start with the information that you have. Start with what we had. Make it easy to update the product. Make it easy to fix. And make the process easy to follow.
20:23
And again, Tatiana Mack, who's a great designer and developer, pointed out, trust your users' lived experiences over your own presumptions. So that's why, as much as we want to put all of this cool stuff in for tabs, there's other problems that we need to work on
20:40
to help our users. And remember, in Firefox, we have the add-ons mechanism. So that gives us a great place for people to do those customizations to support power users. Because if you end up supporting your power users, you end up leaving the rest of your user base behind. You don't want to just lock out your power users and say,
21:00
none, I'm not helping you. But what you can do is create a mechanism that does that. So that's why we have addonsmazilla.org. I don't know if anybody from the add-ons team is speaking this afternoon. OK, but anyhow. So you can't data science your way to supporting diverse groups of users alone. You do have to talk to people.
21:21
You do have to advocate for users, preferably diversity reflecting your users. So that just means not just disability, it's language, it's background, all of these things. And then asking the users from those diverse backgrounds the questions. And then validate your work.
21:43
So thank you. I have Mozilla stickers if you'd like them. And I will be happy to take your questions out in the hall. Thank you, Emma. We can do questions. There's no problem. We can take five minutes to take questions. If you intend to stay a bit longer and