Author Information

Brian Kardell
  • Developer Advocate at Igalia
  • Original Co-author/Co-signer of The Extensible Web Manifesto
  • Co-Founder/Chair, W3C Extensible Web CG
  • Member, W3C (OpenJS Foundation)
  • Co-author of HitchJS
  • Blogger
  • Art, Science & History Lover
  • Standards Geek
Follow Me On...
Posted on 05/03/2023

Wolvic Behind-the-Scenes

A little post about power dynamics, frustrations, mistakes and things I’m still learning along the way about the challenges of making The World’s Greatest Cross Device Open Source Browser for XR (or any browser, really).

The next minor (not patch) release of Wolvic will very likely include a fairly major API addition, but if it does, you won’t even find it in the release notes. Still I find myself wanting to write about it.

We are … {drum roll} … very probably [1] re-adding support for the WebVR API.


If you're not familiar: The WebVR API was first conceived in 2014 and shipped in Firefox in 2015. It ran as an origin trial in Chrome itself from 2016 until 2018, but was enabled in some downstream browsers. It has been superseded since 2018 by WebXR, which supports a superset of its use cases and addresses some UX issues caused by WebVR. It was removed from Firefox and Wolvic in early 2022.

And now, in spite of all of that, we're very probably [1] re-enabling it in Wolvic. For now, at least.

Record scratch
Freeze Frame
Yup, that’s me.
You’re probably wondering how I got here…

Reality is Messy

To reiterate, this technology

  • Was supposed to be experimental
  • Was superseded five years ago by WebXR, which is under active development and/or partly shipping in multiple browser engines;
  • Has an easy replacement (many cases just need a library update).

However, none of that really matters if you’re a “young” browser and your users complain in the app stores, because that really hampers your ability to grow.

And at least currently, too many do.

“user-agent” cuts browsers both ways

I’ve written before (a few times actually) about our trials with the user agent string, and sites just blocking our browser from getting immersive content and why we have to tell A Few Good Lies on behalf of the user. We are the user agent, that’s our job.

But also, if we don’t tell those lies, people will give us bad ratings in the stores.

It makes sense, right? I don’t really blame them. At the end of the day users just don’t care who did The Bad Thing™.

They don’t care that websites shouldn’t try use the UA string like that, or any of that other unseen stuff. What they care about is that from their perspective it just

doesn’t work in your shitty upstart browser. ☆ 1 star.

For a young browser, app store reviews matter a lot[2]. And reviews will typically skew negative, because happy users don’t really have a good motivation to give you a positive review; they just want to do whatever they do in the browser, not jump over to the app store to say

It got right out of my way. ☆☆☆☆☆ five stars


Unhappy users, though: they’ll leave a review, because they’re frustrated and this is the only real chance they have to do anything about it.

On the one hand, that kind of mechanism can be generally helpful: It gives users at least some way to apply pressure on apps to make users happy. Stores also give us ways to reply and ask questions, and to let them know their issue is fixed so that hopefully they can update their review. That happens, and in an ideal world, maybe that’s fine.

At the same time: You might not want to tell everyone exactly what you were doing...

However, users don’t always want to give details on what precise thing they were doing that led to them to getting frustrated enough to leave a bad review.

So, for example, a surprising number of sites which offer streaming video don’t use the <video> element. Often, instead they’ll use some library which rolls its own video streaming support, usually with device feature targeting, based on some lower-level APIs. So, they'll offer you an immersive experience if they think that's possible. If support for those APIs is dropped, it looks like video streaming broke, with no warning. Libraries might have updates available, but sites don't always get updates like that.

So... For example, if your upstart browser appears to have problems with some sexually explicit streaming video sites, those people might be highly motivated to tell you that your browser is shitty or broken.

But also, that’s about all they will tell you.

Again, I get it! I mean, they don’t care why it’s broken, and they don’t want to tell you what they were looking at. I can respect both of those things!

But… that also means it’s very hard to actually do anything about it.

Look, the web is really terribly, mindbogglingly huge place and certainly by far the vast majority of it appears to be working just fine. If we can identify a thing that isn’t working, we’d like to fix it. But we’re unlikely to just stumble across it ourselves.

The worst part about this is that I imagine it will be very hard to get those people to reconsider because it’s impossible to know when to tell them their issue is fixed, and I assume at some point they’ll just stop looking.

Wolvic is adding a new way to report a broken site, optionally anonymously. Maybe that will help this specific problem, but I’m not sure.

Help a browser out...

I hope it’s interesting to come on this adventure of building The World’s Greatest Cross Device Open Source Browser for XR with me.

I hope if you know of any WebVR stuff floating around out there you’ll encourage people to update their libraries already so we can hopefully all get rid of it someday.

If you have Wolvic, maybe you’ll think about popping over and give it an honest rating if you haven’t already - or tell someone to try it out.


  1. Assuming that we ultimately judge that this won't actually cause even worse problems after some more research. Part of the reason we were eager to remove it early in the life of Wolvic was that there are so many of exactly the kinds of problems described here with websites or libraries trying to make a good accommodation but making a poor assumption. We suspect that many things were checking for WebVR before WebXR, which would prevent the preferred APIs from being used and further entrench the focus on the deprecated ones!
  2. I think about these rating things in stores every time I’m shopping. It feels like they generally not great. They are a dull instrument and full of problems and bad incentives and ways to game. We should be able to do better than that. For example, a small number of reviews from people I have some reason to trust is worth thousands from random internet accounts I have plenty of reason to mistrust. I’m not sure how we build that yet, but maybe one of you can figure it out. Please :) If you don’t mind, and share it with the rest of the class. Thanks.