The tabbed web browser model hasn't changed in decades, yet the kind of tasks and activities performed in a browser today looks very different than the 90's. In 2016, we formed a small group inside of Mozilla with the goal of prototyping and exploring what a next-gen web browser looks like. Focusing on fast iterations, web technology, user testing, and new ideas, we created Tofino, an experimental web browser.
Within a few weeks, Tofino was a functional web browser prototyping UX researchers' experiments. After the initial 3 months, the project's goals changed, becoming less of an experimental product and more of a test bed for user research.
Later that summer, the Tofino project evolved again into researching browser technologies (Browser Futures Group). We learned a lot about building a browser within the Electron application model, designing a user agent service, and researching new ways of storing sync data.
There are artifacts linked throughout here, but summarizing the biggest takeaways from the project:
- The effort of investigating big technical challenges evolved into the Firefox Browser Architecture group.
- The storage experiments evolved into Mentat, a persistent, embedded knowledge base built in Rust. In 2018, work on Mentat was paused due to timelines working with Firefox's data stores.
- Tofino was forked as Photino to prototype Mozilla's Photon UI, released in Firefox 57 as a part of Firefox Quantum.
- The user agent service concept is awesome.
- Tofino on GitHub
- Mentat on GitHub
- Mozilla Tofino blog
- Nick Alexander: Tofino, data storage, and how we got to Mentat
- Myk Melez: Project Positron
- Ehsan Akhgari: Project SpiderNode
- Richard Newman: Introducing Mentat, a flexible embedded knowledge store
- Nick Alexander: Pausing work on Mentat
- Richard Newman: Different kinds of storage
- Richard Newman: Thinking about Syncing, Part 1: timelines
- Richard Newman: Thinking about Syncing, Part 2: timelines and change
- Richard Newman: Thinking about Syncing, Part 3: separation of concerns
- Richard Newman: Thinking about Syncing, Part 4: keeping track