(Re)defining the Tofino Project

Mark Mayo
Mark Mayo
Nov 15, 2016 · 3 min read

TL;DR: s/Tofino/Browser Futures Group/

Our original 3-month goal was to investigate what a browser designed in 2016 would look like.

(Of note, this is different than exploring what an implementation of the web’s platform should look like — see Project Quantum and Servo for that.)

In those three months, we experimented with lots of different parts of the browser: from the way you navigate, to the way you save things from the web, to the very way in which the front-end for a web browser is built.

Now that the initial project is over (in fact,was over a few months ago…), it is time to look at if and how we move forward. The Engineering Update for Tofino post by Joe Walker is live, and posts from the product and UX teams will follow, but at the high level this is what we learned:

  • User testing our concepts ahead of even completing a prototype was extremely valuable.
  • Boy howdy do normal users have hard time with non-conventional browser interfaces!
  • A User Agent Service is a good idea. We want one in Firefox, like, yesterday.
  • Writing a new browser UI in React is flexible and easier to develop in than XUL. Mixing XUL and HTML in a single product/interface was harder than we thought.
  • Electron is great for prototyping, but some work is needed if you want to build a full browser.
  • Getting out of our Firefox developer bubble and engaging with new open source teams and projects was great. So much awesome feedback and energy!

So what is next?

The ideas behind the user-agent service and a React UI sound good on paper, but do they work in practice, and are they useful to Mozilla? The User Agent Service is designed to store a broader set of data than Firefox Sync can currently handle, but we’re not sure if can it scale up with large volumes of data or if it’s as flexible as we need.

There could be lessons from our React based UI that we can take into mainline Firefox. To that end Dave Townsend is going to be starting with TabBrowser and seeing if there are things that Firefox can learn and we’re going to continue to evolve what we’ve got to be more workable.

We’re going to continue using an environment that makes it easy to prototype fast. We’re not wedded to Electron (far from it) but the fast prototyping aspects of that have been really nice.

It’s also becoming clear that the name Tofino doesn’t really work with what we’re doing now; What we’re working on now is less of a product or user experience exploration, and more of a set of technologies that need testing out, so we’re renaming the group to the Browser Futures Group.

We’re working on a roadmap.

Tofino is dead — Long live the Browser Futures Group.

A brief aside: We briefly called this team the Browser Research Group, and asked for help picking a new name. The internet provided! Background: Naming things is always hard.. so a brief clarification is required because I agonized over using the word Research. The timescale of our ‘research’ is short (months rather than years) and what we’re doing is closely aligned to the goals of the Firefox product organization — i.e. building and shipping a popular browser. The team does not do the kinds of research Mozilla Research in our Emerging Technologies group does, things looking years ahead like Rust and Servo and WebAssembly. Calling the team the “Browser Innovation Group” felt even more awkward. Got a better name suggestion? Comment below!

Project Tofino

Browser explorations by the Firefox team

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store