Firefox used to be on top of the world with almost a third of all internet users using Firefox. These days, they make up a pitiful 2.7% of the market share. ...
The thing that sucks about that is the sheer amount of stuff that a modern web browser is expected to do.
Level 0:
Parse and correctly display the contents of simple HTML documents in a manner consistent with other browsers
Figure out what to do if somebody gives you mangled HTML in a way consistent with other browsers, because the page will just about always try to show the user something.
Level 1:
Implement who knows how many CSS properties in a way consistent with other browsers
Level 3:
Now write a JavaScript engine to manipulate all of the above, making sure that everything works like it does elsewhere no matter how non-sensical it is, because pages rely on that stuff to function sometimes.
Level 4:
Don’t forget to implement media codecs so you can display video, play audio, and let the user control those via JavaScript APIs, and you have to render/play that in whatever way the webpage specifies.
Basically, writing a browser engine from scratch in a way that is in any way competitive is probably on par for scale on writing your own operating system. You might even accomplish the latter faster, depending on where you’d call your OS “complete”
Unfortunately, I can’t argue with much of that. In fact, if anything, you’re leaving out complexities.
There are a few browsers out there that use WebKit but none of Chromium. (Surf and Uzbl are a couple that I’ve used in the past.) With a little scripting, you could get them to, for instance, run two different “profiles” with different cookie stores at the same time. But they’re far from full-featured.
Maybe what we really need is to scrap the web and start fresh with something better.
Level 5: Handle cookies, a local key value store, and a local database internally in a secure way.
Level 6: If you can’t watch Netflix on your browser it’s probably a non-starter for some users so better figure out a way to include DRM compatibility. But if you do it, the privacy minded will get really upset, so ideally you’d figure out a way to do it in some way that can be easily turned off or removed.
Level 7: alright, so implementing all of that was hard. But if you don’t implement it in such an insanely optimized fashion that you can win arbitrary script tests that are meant to strain modern CPUs, the audience most likely to use your browser (geeks) will immediately move to something else and say your browser sucks. Get optimizing.
The thing that sucks about that is the sheer amount of stuff that a modern web browser is expected to do.
Level 0:
Level 1:
Level 3:
Level 4:
Basically, writing a browser engine from scratch in a way that is in any way competitive is probably on par for scale on writing your own operating system. You might even accomplish the latter faster, depending on where you’d call your OS “complete”
Unfortunately, I can’t argue with much of that. In fact, if anything, you’re leaving out complexities.
There are a few browsers out there that use WebKit but none of Chromium. (Surf and Uzbl are a couple that I’ve used in the past.) With a little scripting, you could get them to, for instance, run two different “profiles” with different cookie stores at the same time. But they’re far from full-featured.
Maybe what we really need is to scrap the web and start fresh with something better.
Level 5: Handle cookies, a local key value store, and a local database internally in a secure way.
Level 6: If you can’t watch Netflix on your browser it’s probably a non-starter for some users so better figure out a way to include DRM compatibility. But if you do it, the privacy minded will get really upset, so ideally you’d figure out a way to do it in some way that can be easily turned off or removed.
Level 7: alright, so implementing all of that was hard. But if you don’t implement it in such an insanely optimized fashion that you can win arbitrary script tests that are meant to strain modern CPUs, the audience most likely to use your browser (geeks) will immediately move to something else and say your browser sucks. Get optimizing.