Firefox OS and Browser Choice

Back when I was working at Mozilla, there was quite a bit of discussion about user choice, specifically how important it is for users to be able to choose their browser. Often, this discussion was tied to the Mozilla Manifesto, point 5:

Individuals must have the ability to shape their own experiences on the Internet.

Back in February 2010 (a couple months after I left Mozilla), Mozilla launched the “Open to Choice” campaign (since shuttered), which was a great place to send individuals to show them why the ability to choose your own browser is important. The campaign was mostly tied to Microsoft’s settlement with the European Union and its requirement to offer a selection of browsers to choose from during setup. Here’s Mozilla’s then-CEO John Lilly on why browser choice matters:

(Side note: the Open to Choice campaign has been shut down and wasn’t archived, unlike most other Mozilla sites. Going to opentochoice.org leads to a bad https site, and then a 403. I would love to read the letter from John Lilly and Mitchell Baker again.)

As an iPhone user, I’m more-or-less stuck with Safari. Sure, I can find numerous browsers in the App Store, Chrome included. But the browsers in the app store are mostly just embedded version of WebKit – a limited version of WebKit at that. Why can’t I run Firefox on my iPhone? Why can’t I run a real version of Chrome? Apple has locked out browser makers by making specific requirements of the applications in the App Store and making the App Store the only way to distribute apps. Short of jailbreaking my iPhone and hoping Mozilla or Google port their respective browsers to jailbroken iPhones, there’s nothing I can do.

Prior to my iPhone, however, I had a Google Nexus One phone. One of the features of Android is the “open” Android Market and the ability to install applications from any source. Back then, I wasn’t locked in to any specific browser. In fact, I ran Firefox on my Nexus One and was quite happy with it, even back in the days of Firefox being incredibly slow on Android. The situation has gotten even better with Google shipping a version of Chrome for Android. It isn’t hard to imagine another browser running on the platform some time in the future.

Last year, in May 2012, Harvey Anderson, Mozilla’s General Counsel, wrote about the lack of browser choice on Microsoft’s Windows RT, an ARM-specific operating system tailored for tablets. He conclusion is quite clear:

The prospect that the next generation of Windows on ARM devices would limit users to one browser is untenable and represents a first step toward a new platform lock-in.

But the upcoming Firefox OS, built on Mozilla technology (namely Gecko), doesn’t appear to have any browser choice (as John Gruber pointed out a couple days ago). Is this an oversight or are developers working on the ability to allow browsers to run successfully on Firefox OS? And what about Chrome OS – why hasn’t Mozilla publicly asked for browser choice from Google?

Even webOS – Palm’s HP’s LG’s ill-fated operating system built on Linux and WebKit – had a method for porting browsers. In fact, a Mozilla developer started an experimental Firefox port a while ago. That experiment ended, likely because it isn’t important to port Firefox to a dying platform, but the point remains that it was possible.

I’ll ask again: where is the ability to select a third party browser on Firefox OS? Is this ability being planned in the future? And why has there been no advocacy against Chrome OS for its lack of browser choice? It all feels rather hypocritical to me.

32 replies on “Firefox OS and Browser Choice”

  1. The difference with FirefoxOS is that the phone *is* the browser. “Firefox” on these devices is just an HTML5 application. Anyone is welcome to write a replacement. The engine (Gecko) however, *is* the platform. You can’t replace that anymore than you can replace the Android or iPhone core libraries.

    1. Ben: Except that was true of WebOS as well. And, like I said, a Firefox port was started and running.

  2. I don’t know the details of the WebOS-stack, but the prefox-package at http://bit.ly/prefox contains many native-code libraries (libxul.so et al.). So it is possible to write applications in native code on WebOS. This is not the case on Firefox OS, where you can only use HTML, CSS and Javascript. And it is simply impossible to write a fast browser engine in these languages.

  3. Technically it should be possible for browser vendors to use something like Bananabread to compile their browsers to run on Firefox OS, right? It would presumably be less performant than making just a new browser shell that uses Gecko, since it would still run on top of Gecko anyway, but it might be a fun experiment.

  4. Seems that WebOS allowed some form of native app development to allow for the Firefox port. The native app option doesn’t seem to exist for FirefoxOS.

  5. The webos port was using native apps support in webos (i.e. webos would up a webos only in name). You could port your browser of choice to firefox os, but it would be equivalent to essentially installing a new OS on your phone (which Mozilla isn’t precluding), or writing your browser in HTML/JS (emscipten).

    I don’t think opening FirefoxOS up to support Native Apps is likely a good idea. In fact, I think it would have the exact opposite effect we’re hoping to have on the mobile ecosystem, and would likely just result in more restricted choice for users, rather than opening up choice.

  6. I’m pretty sure WebOS was more than just a Webkit-based Runtime on Linux. They allowed you to access C libraries that are tied into the system. Firefox OS and Chrome OS are just their web-based run-times. Though Chrome’s Runtime is has a bit more than just web standards.

  7. Ver Greeneyes: I hadn’t heard of Bananabread, so I’ll have to research it more.

    Tom, SW, Wes, Jeffrey: If I’m understanding correctly, Firefox OS is being written such that another browser cannot exist on it. If that’s correct, then my follow up is, why doesn’t Mozilla care about browser choice on its operating system? Mozilla has the opportunity to build its operating system in such a way that 1000 browsers can flourish, but it’s specifically choosing not to. Is browser choice not something that matters?

  8. I’ve been thinking about this lately as well – and my general feeling is that the mobile space is a little different.

    The goal is competition to create a healthy platform for users, right? Real choice. In desktop land, we had an entrenched app ecosystem that was used as leverage to push a single browser. In mobile land, if webapps are my apps (in FFOS world, for example) then I don’t need competition on the device. I’m replacing the device in a year anyway. What I need is competition across devices. The pervasive use of Webkit eliminates that, even if there are lots of OSes.

    I don’t think that FFOS has a moral obligation to make porting new browsers possible. It does have a moral obligation to not make it impossible – to not erect false barriers to competition. Webkit can compete with FFOS without being on the device, because Webkit can compete to be a better web, and thus a better home for the apps the user already has, and thus the better candidate for the user’s next device. FFOS doesn’t have a notion of non-web apps to keep users on the platform.

    I’m not sold on Firefox OS, not yet. But the world of mobile is not directly analogous to desktops, nor is the world of native + web OSes the same as Web Only OSes. And extend and standardize in the open isn’t embrace and extend in the dark.

  9. You’ll note that the criticisms about lack of browser choice are due to “lock-in”. Operating systems like Windows and iOS have inherent lock-in because they use a proprietary software stack. That is, if you switch from Windows Phone to iOS, you’re going to lose all of your apps. With a platform like Firefox OS, all the apps are built on open web standards (or proposals thereof). When other browsers support these standards (and WebKit already supports a few), there won’t be any software lock-in, since you’ll be able to run all of your favorite “Firefox OS” apps on your new iPhone.

    In short: In a world where the web is the platform, browser choice means platform choice.

    As an aside: Another reason people have focused on Microsoft’s and Apple’s operating systems having lock-in, but not Google’s ChromeOS is because ChromeOS has almost no market share: a recent article estimates that 0.07% of web traffic is from ChromeOS: . Based on this, Mozilla’s (lack of) stance on ChromeOS should come as no surprise to anyone who knows about the history of antitrust: Google can’t throw their weight around with ChromeOS, so it frankly doesn’t matter (yet).

  10. Erik Harrison: I completely agree that, as you say “the world of mobile is not directly analogous to desktops…” You’re right, it’s not. But I’d argue that the world of tablets isn’t directly analogous to desktops either. Yet Microsoft was challenged by Mozilla on this point in regards to Windows RT (an operating system built for tablets).

    I don’t think anyone at Mozilla has argued that, because mobile is different, one browser per platform is an okay solution. And I wouldn’t argue that either. But that’s the situation Firefox OS will be in. And I *would* argue that, as you said “[FFOS] does have a moral obligation to not make it impossible – to not erect false barriers to competition.” The inability to port WebKit to Firefox OS is effectively a barrier to competition.

    We don’t know what the future will hold in the world of mobile, but we do know what the past holds in the desktop world. Shouldn’t Firefox OS be as open as possible on the browser choice front?

  11. squib: Apps built on web standards can still create a form of lock-in when vendors disagree on web standards. But that’s not quite the point. Other OSes lock-in with apps and you lose all your apps when you switch platforms, sure. But when you switch from IE to Firefox you lose (essentially) nothing. So why not let IE continue to ship as default on all of Microsoft’s operating systems? Why fight it? Because Mozilla believes (and I believe) that users should be able to choose which browser they use – that the user’s experience with their browser is a personal one and should be one built out of trust and respect.

    The mobile landscape has created a different form or lock-in, but that doesn’t mean the previous form of lock-in should be ignored. Mozilla is in a place where it can control the outcome of at least one platform and I believe it should allow browser choice on that platform; put its money where its mouth is, so to speak.

  12. I think there’s a difference you’re overlooking here: on Windows RT and iOS, the lack of other browsers is a policy issue. Those vendors actively disallow alternate browsers, while they haven’t stated any good technical reason for this (and in fact, the reasons are unlikely to be technical for those platforms).

    On the other hand, on both Chrome OS and Firefox OS, the browser is understood the platform, so enabling a different rendering engine there is a much harder technical problem. I don’t think Mozilla would stop anyone from working on a fork that allows that kind of thing, but I also don’t think they should invest their resources in it.

    That said, shipping a different browser UI/UX on Firefox OS should obviously be supported on Firefox OS, and I haven’t seen that it isn’t.

    1. Dirkjan Ochtman, tom: iOS disallows browsers only for technical reasons, that is to prevent security issues. It allows browsers that use the built-in WebKit, one which it can control. It is absolutely *not* simply a policy decision. If iOS started allowing a free-for-all and any apps could run arbitrary code, there’d be more security issues – at least in Apple’s mind, and I have no reason to question that decision.

  13. > Apps built on web standards can still create a form of lock-in when vendors disagree on web standards.

    From the perspective of an app developer, you would then simply not use those standards (unless you’re fairly confident they’ll be adopted Real Soon). Or you could say “screw it” and develop for one platform only. That problem is nothing new. If I like GCC, I can be a jerk and write my C++ library to only compile on that and ignore the tears from people on MSVC. However, as a developer, at least I’m not *forced* to do that when every platform supports roughly the same standards.

    > So why not let IE continue to ship as default on all of Microsoft’s operating systems? Why fight it?

    Because many users are already locked into Windows because of one or another native application (built on a proprietary stack). Their choice of OS has already been taken from them, but as a consolation prize, they at least get to pick which web browser they use. All “browser choice” does on desktop OSes is mitigate existing lock-in.

    When the OS is just the backend of a standards-compliant web browser, no such proprietary stack exists, and so that form of lock-in vanishes. Then if you want to “change browsers”, and here I really mean “change rendering engines”, you just change your OS and migrate your apps. In the real world, this would be similar to switching from Linux to FreeBSD: most things will work (i.e. I can run zsh and emacs to my heart’s content), because both platforms use the same basic standards.

    > The mobile landscape has created a different form or lock-in, but that doesn’t mean the previous form of lock-in should be ignored.

    With “the web as the platform”, the previous form of lock-in (i.e. proprietary software stacks) *does not exist*. (It can, of course, be injected into the platform by way of non-standard extensions, but developers are free to ignore that stuff.) That is Firefox OS’s goal: to eliminate, as thoroughly as possible, proprietary APIs that cause apps (and thus users) to be locked into a given platform.

    > The inability to port WebKit to Firefox OS is effectively a barrier to competition.

    But you *can* port WebKit to Firefox OS. You just replace the Gecko bits in Firefox OS with WebKit and release that. Maybe call it “WebKit OS”. Assuming you’ve made sure WebKit supports all the (standard!) web APIs you need, WebKit OS should be able to run all of your “Firefox OS” apps. After all, they’re not really “Firefox OS” apps. They’re “open web” apps.

    1. squib:

      That is Firefox OS’s goal: to eliminate, as thoroughly as possible, proprietary APIs that cause apps (and thus users) to be locked into a given platform.

      And that’s a worthy goal, don’t get me wrong. It’s essentially one of Mozilla’s goals as well. But another one of Mozilla’s goals in the past has been browser choice. Firefox OS aligns to one, but not both goals.

      You just replace the Gecko bits in Firefox OS with WebKit and release that. Maybe call it “WebKit OS”.

      But that’s not porting WebKit to Firefox OS, that’s building a new OS using WebKit. A user won’t be able to run Chrome or Safari or any other WebKit-based (or Trident-based) browser on Firefox OS. Those browsers won’t be available for download in the Firefox Marketplace because they can’t be available for download since they’re not technically possible.

      I can create a web front-end for Firefox OS, thus making a “new browser,” but it would use Firefox OS’s backend (Gecko). Isn’t that essentially the same situation iOS is in?

  14. I think the main difference is that the lack of browser choice is for technical reasons in FFOS and for political reasons in iOS and Windows RT.

  15. you can’t exactly install “another browser” on either chrome or firefox OS, because those OSes lack standard APIs, libraries, drivers, and deamons (services) required to run native apps. thus, it’s a case of “missing functionality”, not a business or political (or even god forbid, a legal) restriction.

    since both chrome and firefox OS are open-source, you could theoretically write those missing parts of the OS yourself, and install the (now) new OS, along with your browser on the device yourself.

    as far as i understand, you can install linux on a chromebook (http://blogs.computerworld.com/laptops/21820/chromebook-pixel-linux), and will never be prevented from flashing your firefox phone with a new OS.

    i know all that sounds too theoretical, but the difference between this approach and jailbraking your iphone is that the latter is illegal according to DMCA, and could get you in jail (yes, really).

  16. “The inability to port WebKit to Firefox OS is effectively a barrier to competition.”

    Nope, it isn’t, anymore than the ability to run ARM apps on Intel hardware is a “barrier to competition”. Apple doesn’t let you put a browser in its store, that’s an artificial barrier. Firefox is a Web-only runtime. That’s a natural barrier. There is a distinction, both technical and ethical.

    FFOS is (amongst other things) advancing the web as a platform by saying “The web can be extended to support everything a native app can, and we’re going to prove it, and then we’re going to standardize it”. This means that adding the native app support to FFOS necessary to allow you to put webkit on it in a supported way is antithetical to the way FFOS intends to advance the web.

    If Mozilla were preventing users from flashing their phones, preventing users from running applications that Mozilla didn’t like, or failing to open up or standardize their extensions to the Web, then Mozilla would be behaving in a way to close the web off. But they’re not.

    It’s not just that desktops aren’t analogous to phones. It’s that ecosystems which allow both web and non-web apps aren’t analogous to pure-web ecosystems.

  17. As I understand current envisioned system,
    – An app that implements a new browser using the gecko engine would use mozbrowser iframe[1]
    – a mozbrowser iframe is already a privileged API[2] requiring code review[3]
    – a Gecko/Gaia[4] OTA update[5] could load the alternative engine libraries to the device and update Gecko so that it will defer to the alternative browser when their user side alternative browser is started. (perhaps a operawebkitbrowser iframe implementation)

    I wonder what the alt browser could do to still work as any other FFOS app (app management) or even if they could display anything without shutting down the whole Gaia part. Maybe render to webGL?

    [1] https://wiki.mozilla.org/WebAPI/BrowserAPI
    [2] https://developer.mozilla.org/en-US/docs/Apps/App_permissions
    [3] https://developer.mozilla.org/en-US/docs/Apps/Packaged_apps#Types_of_packaged_apps
    [4] https://wiki.mozilla.org/B2G/Architecture
    [5] https://wiki.mozilla.org/B2G/Updating

  18. > But that’s not porting WebKit to Firefox OS, that’s building a new OS using WebKit. A user won’t be able to run Chrome or Safari or any other WebKit-based (or Trident-based) browser on Firefox OS.

    So what? If users have the ability to replace something (in this case, part of the OS stack) on their phones and aren’t punished by doing so (e.g. by losing their apps), then they have real freedom of choice. Whether that means downloading something from an app marketplace or reflashing their phone* is irrelevant. Of course, Mozilla should work to ensure that nothing in Firefox OS prevents people from migrating away, but that’s already largely addressed by making sure Firefox OS adheres to open standards.

    * Buying a new phone should also be supported, but preferably not as the only way to switch.

  19. Mozilla has no more moral imperative to support alternate browsers on Firefox OS at an equivalent level to Firefox than Microsoft has to allow people to swap out Windows’ scheduler for an alternate one. On Firefox OS, the browser is an inherent and primary component of the OS. Changing the browser is functionally equivalent to changing out a huge fraction of the entire OS. As such, it’s more of an issue at the device/carrier level — can you install an alternate operating system on your device? — than it is at the OS level. The same is true for Chrome OS. In both cases, I think it makes more sense to ensure that people who buy devices running these OSes have the opportunity (even if few use it) to install an alternate OS in place of or alongside the existing one.

    But complaining that Mozilla is not doing enough to support alternate browsers on Firefox OS seems incoherent.

  20. Personally I would like the Gonk layer allowing booting of multiple OSes (OpenWebOS, Sailfish, Android, KDE Plasma, ChromeOS…) if (a) the phone was powerful enough and (b) had enough space. That doesn’t mean all FFOS phones could do it, but if you get a sufficiently powerful enough hardware it would be allowed. Gonk already shares some its HAL pieces with Android already. I am sure getting the architecture right is nontrivial though.

  21. From what I can tell, you’re entirely free to write your own browser for Firefox OS and distribute it yourself, or on the Firefox Marketplace. It will have to be written in HTML/JS/CSS though, since that’s the native platform environment, and that may be a very hard (or impossible) thing to do.

    But the limitation is a purely technical one, much like it’s a hassle to run applications on Windows, Mac, and Linux interchangeably, even though you have the freedom of OS choice.

    I think the analogies get a bit weird though, since Firefox OS is itself almost a browser. If it’s FFOS itself that is considered the browser that is not up for choice, then the critique is suddenly about the ability to change your phone OS, which can of course be done by flashing it and such. But if not, then this is a question of the right to run a browser inside your browser, and as I understand it, nothing and no one will stop you from trying to do that.

  22. Sam, you didn’t really do your research before writing this, did you?

    Writing browsers purely in HTML5+JS is a challenge, but it’s not impossible and there’s nothing in Firefox OS or Mozilla policy that prevents someone doing that. And I’m not just talking the front end bits like the Firefox browser on Firefox OS. I’m talking about a full browser with alternative rendering engine bits as well. Mozilla even built the tools for porting existing browsers (or pretty much any C/C++ app) to Firefox OS. It’s called Emscrpiten. You should take a look at it.

    – A

  23. What’s all this about a lack of browser choice?
    Within the technical limitations of Firefox OS anyone is welcome to implement a browser.
    If you’re talking about one that runs natively on gonk (linux), Firefox OS doesn’t let ANY apps do that. It breaks the security model. So it’s not like it’s unfair, it’s treating everyone the same.

    It’s an open source project. If someone wanted to implement a version of Firefox OS that also ran another browser on gonk simultaneously, they very well could. But they might as well just replace Gecko instead – which we encourage (implementing all the new WebAPIs as well).

    I can’t then defend the callout to MS to let other browsers on WinRT. Though no one has the freedom or ability to replace the browser as they do in Firefox OS. MS’s monopoly position also complicates matters – such as manipulating users of one platform to influence their use of another (they were punished before not for being a monopoly, but for abusing its power).

  24. “But I’d argue that the world of tablets isn’t directly analogous to desktops either. Yet Microsoft was challenged by Mozilla on this point in regards to Windows RT”

    but tablets are just PCs, at least according to microsoft: http://www.informationweek.com/windows/microsoft-news/ballmers-ipad-diss-its-just-another-pc/225400074

    “The inability to port WebKit to Firefox OS is effectively a barrier to competition.”

    “But that’s not porting WebKit to Firefox OS, that’s building a new OS using WebKit. A user won’t be able to run Chrome or Safari or any other WebKit-based (or Trident-based) browser on Firefox OS.”

    that’s like saying “why can’t IE run on linux”, and presuming linux is obligated to provide win32-compatible APIs to let (unmodified) IE run on linux. IE _could_ be written to run on linux, they just need to write some low-level code themselves. similarly, webkit _could_ be coded to run on top of B2G if someone bothered to write the necessary low-level glue code.

    there is no such “inability”, the requisite parts are just not there. in order to support other browsers, Firefox OS would need to include a “display server”, which would introduce another layer of abstraction, and prevent reasonable performance on low end hardware (which is half the point of Firefox OS):

    http://robert.ocallahan.org/2013/03/canonicals-new-mir-display-server-and.html

    “iOS disallows browsers only for technical reasons, that is to prevent security issues. It allows browsers that use the built-in WebKit, one which it can control. It is absolutely *not* simply a policy decision. If iOS started allowing a free-for-all and any apps could run arbitrary code, there’d be more security issues – at least in Apple’s mind, and I have no reason to question that decision.”

    first: that’s not a “technical reason”, you can still (technically) hide malicious code in an iOS app (you don’t submit source code for review), you are just (legally) prevented by iOS appstore review policies — thus “a policy”, and not “technical”.

    but even if we call it “technical”, you don’t question that, but you have a reason to question a technical decision by mozilla to not include code to support other browsers? what’s the difference in your mind?

    anyway, your basic assumption is incorrect. you don’t need “arbitrary code execution” to write a browser (javascript) engine. it helps, but it’s not required, as evidenced by all 3rd party browsers on iOS that can’t use Nitro (JIT), and only use a (slower) JS interpreter.

  25. You can and are allowed to install different browsers on Firefox OS. All you need to do is implement the rendering engine in JS, putting its output into a canvas (2D or WbGL, whichever you like better), and you also can implement a JS engine in JS (AFAIK that even already exists as a research platform).
    If you don’t want to write everything anew, I guess Emscripten or something like that can help.

  26. Biggest troll article I’ve seen in a while.

    It’s like saying GNU/Linux doesn’t offer a kernel choice, and demanding you should have a welcome screen where you can change the kernel to BSD’s or others. There is a way to do that: The kernel is at the core of the OS, change the damn OS. Install something else.

    Well, “Firefox OS” was codenamed boot-to-gecko. That’s what it is: bare-bones Linux that starts up Firefox. What’s the purpose of changing Firefox? Just install Chrome OS if you don’t like Firefox OS. If Firefox OS came preinstalled with lots of devices, and custom firmware upgrades where forbidden (like in iOS) then you could complain, but that’s not the case so stop comparing a charity that writes Free Software for all of us to enjoy to anti-competitive empires like Apple or Microsoft.

  27. tom jones:
    “but even if we call it “technical”, you don’t question that, but you have a reason to question a technical decision by mozilla to not include code to support other browsers? what’s the difference in your mind?”

    You’re kind of spinning things around here. It seems Sam is bringing this up because Mozilla is being hypocritical in complaining about iOS and RT. He’s not the one who started the conversation.

    To everyone else, why didn’t Mozilla create a Mozilla OS that allowed any vendor to replace the browser core as long as it was based on the same standards. It would be more difficult, but it would be possible and would give users more choice. As it is, Firefox OS is a platform choice with one realistic browser choice, similiar to iOS, but with less choice than on iOS. Even though alternatives on iOS are all based on WebKit and perform slower than Safari, they’d be much faster and more powerful than any browser built in HTML5/JS on top of the Firefox OS core.

  28. I think this is a fair point. With Firefox OS, the OS is the browser, so browser choice is OS choice. Mozilla can and should commit to unlocked bootloaders, so users can choose a different OS.

    To answer the obvious question, OS choice was insufficient with Windows because Windows was (and maybe is) a monopoly; most users could not easily switch away. This monopoly was protected by Microsoft’s undocumented, nonstandard APIs. Firefox OS is not a monopoly, and as long as its APIs are well standardized it never will be.

  29. Quote:
    “…the Open to Choice campaign has been shut down and wasn’t archived, unlike most other Mozilla sites… I would love to read the letter from John Lilly and Mitchell Baker again”

    Perhaps this will help: I just checked archive.org, and luckily they do have an archive of opentochoice.org:
    http://web.archive.org/web/20101123124838/http://opentochoice.org/en/

    I take it that this is the letter you were referring to:
    http://web.archive.org/web/20101119044646/http://opentochoice.org/2010/02/web-browser-choice-matters/

Comments are closed.