As the Wwworm Turns

Microsoft’s recent announcement that it is, in effect, abandoning the unloved and unlamented Edge browser stack in favor of Chromium is, well, both hilarious and dripping in irony.

Consider at first blush the history of the web in the barest terms:

  • 1991 — http, html, etc. invented using NeXT computers
  • 1992 — Early browsers (Mosaic, NetScape, etc.) implement and extend the standard, notably NetScape adds Javascript and tries to make frames and layers a thing. Also, the <blink> tag.
  • 1995 — Microsoft “embraces and extends” standards with Internet Explorer and eventually achieves a 95% stranglehold on the browser market.
  • 1997 — As NetScape self-destructs and Apple’s own OpenDoc-based browser “Cyberdog” fails to gain any users (mostly due to being OpenDoc-based), Apple begs Microsoft for a slightly-less-crummy version of IE5 to remain even vaguely relevant/useful in an era where most web stuff is only developed for whatever version of IE (for Windows) the web developer is using.
  • 2002 — FireFox rises from the ashes of NetScape. (It is essentially a cross-platform browser based on Camino, a similar Mac-only browser that was put together by developers frustrated by the lack of a decent Mac browser.)
  • 2003 — Stuck with an increasingly buggy and incompatible IE port, Apple develops its own browser based on KHTML after rejecting Netscape’s Gecko engine. The new browser is called “Safari”, and Apple’s customized version of KHTML is open-sourced as Webkit.
  • As a scrappy underdog, Apple starts a bunch of small PR wars to show that its browser is more standards-compliant and runs javascript faster than its peers.
  • Owing to bugginess, neglect, and all-round arrogance, gradually Microsoft loses a significant portion of market share to FireFox (and, on the Mac, Safari — which is at least as IE-compatible as the aging version of IE that runs on Macs). Google quietly funds FireFox via ad-revenue-sharing since it is in Google’s interest to break Microsoft’s strangehold on the web.
  • 2007 — Safari having slowly become more relevant to consumers as the best browser on the Mac (at least competitive with Firefox functionally and much faster and more power efficient than any competitor) is suddenly the only browser on the iPhone. Suddenly, making your stuff run on Safari matters.
  • 2008 — Google starts experimenting with making its own web browser. It looks around for the best open source web engine, rejects Gecko, and picks Webkit!
  • Flooded with ad revenue from Google, divorced from any sense of user accountability FireFox slowly becomes bloated and arrogant, developing an email client and new languages and mobile platforms rather than fixing or adding features to the only product it produces that anyone cares about. As Firefox grows bloated and Webkit improves, Google Chrome benefits as, essentially, Safari for Windows. (Especially since Apple’s official Safari for Windows is burdened with a faux-macOS-“metal”, UI and users are tricked into installing it with QuickTime.) When Google decides to turn Android from a Sidekick clone into an iPhone clone, it uses its Safari clone as the standard browser. When Android becomes a success, suddenly Webkit compatibility matters a whole lot more.
  • 2013 — Google is frustrated by Apple’s focus on end-users (versus developers). E.g. is the increase in size and power consumption justified by some kind of end-user benefit? If “no” then Apple simply won’t implement it. Since Google is trying to become the new Microsoft (“developers, developers, developers”) it forks Webkit so it can stop caring about users and just add features developers think they want at an insane pace. It also decides to completely undermine the decades-old conventions of software numbering and make new major releases at an insane pace.
  • Developers LOOOOVE Chrome (for the same reason they loved IE). It lets them reach lots of devices, it has lots of nooks and crannies, it provides functionality that lets developers outsource wasteful tasks to clients, if they whine about some bleeding edge feature Google will add it, whether or not it makes sense for anyone. Also it randomly changes APIs and adds bugs fast enough that you can earn a living by memorizing trivia (like the good old days of AUTOEXEC.BAT) allowing a whole new generation of mediocrities to find gainful employment. Chrome also overtakes Firefox as having the best debug tools (in large part because Firefox engages in a two year masturbatory rewrite of all its debugging tools which succeeds mainly in confusing developers and driving them away).
  • 2018 — Microsoft, having seen itself slide from utter domination (IE6) to laughingstock (IE11/Edge), does the thing-that-has-been-obvious-for-five-years and decides to embrace and extend Google’s Webkit fork (aptly named “Blink”).

Opera Unite

Opera Unite is the “big” feature of Opera 10. The idea is simple: it lets anyone browsing the web simultaneously act as a web server, if they want to, with a fairly neat (JavaScript-based) development model.

I don’t really think the idea has legs — it seems a bit like Facebook but with the disadvantage of your point of presence disappearing when your computer is offline. And if you really want to have a website… get a website.

The one nice takeaway idea is that JavaScript is a great choice for a server-side scripting language. It would be nice if it were a viable alternative (to PHP, Perl, and Python).

Google Chrome

Google has officially announced it will be releasing its own browser, named Chrome. The web comic explaining their thinking is well worth a look, but the key points are:

Each browser tab is a separate process. This means that one web page hanging or script stalling only affects that page. Your browser doesn’t crash or hang — individual tabs crash or hang and can be killed. It’s so obvious it’s brilliant. I imagine Firefox, Camino, and Safari will all follow suit as soon as they can.

Google has been working on a new JavaScript engine, named V8, that’s roughly twice as fast as the latest versions of Firefox or Safari nightly build. Remember that these engines were in turn a lot faster than Internet Explorer or anything else we had a year ago. We’re looking at something like a 10x improvement in overall JavaScript performance over the last two years.

It’s based on Webkit.

It’s entirely open source.

Safari 3.1.1

Safari Web Inspector

My friend Andrew pointed out in my post on FireFox 3.0b5 that it was too late to get him to try it, since he’d just given up on FireFox, switched to Safari, and wasn’t looking back. I’ve just made the switch too, after finding FireFox 3.0b5 both just as unstable as 2.0.0.14 and subject to some annoying rendering bugs and random thunks. I can’t just abandon FireFox — the web developer and FireBug extensions are just too damn useful — but it’s not going to be my daily browser for the foreseeable future.

For a long time, Safari has had the distinction of being producing the best looking web pages, and running JavaScript really fast (whether it’s the fastest is a matter of debate, but it sure feels quick). It has a better feature set than Internet Explorer (canvas support, anyone?), and supports a bunch of CSS extensions, such as shadows under text, that no-one else does.

And, frankly, it has the cleanest and most attractive user interface.

Most importantly for me, Safari’s Develop menu (which used to be its Debug menu) offers something of an alternative to the Web Developer plugin for FireFox. Although Drosera (the Safari JavaScript debugger) has been around for some time, it’s not yet part of the Safari release, and getting it is something of a chore. You need to download the Nightly Build (source code) and then “attach” Drosera to either Safari or WebKit (the open source version of Safari). Even if I could be bothered, Safari still lacks a few of the Web Developer plugin’s best features, such as the ability to see the generated HTML you’re looking at.

But, as a basic, daily browser — I’m afraid Safari has FireFox beat for now.

iPhone, Nintendo DS Web Browser, Compatibility

I’m a sucker for weird web browsers, so I just had to go and buy the web browser for my DS. It uses both cartridge slots — a memory module goes into the Gameboy Advance cartridge slot, and the browser itself goes into the smaller DS slot.

This shows my flexible inVue test page running on the DS’s browser (correctly!). Yes, I realise some of you, who didn’t already, hate me now…

The DS’s web browser is written by the Opera people, and it represents a fine example of why Apple rocks and other software companies don’t. It is possible to configure this browser so that it is reasonably usable and makes sensible use of both screens, but it’s certainly not obvious how. The screen you’re seeing in the image is the lower (touch) screen, and the blue rectangle is the zoomed in portion being shown in the upper (non-touch) screen. In this mode you can press some buttons to toggle a mode which lets you click in the touch screen area. In the DS browser’s default mode, however, web pages are displayed in mangled form (basically ignoring most formating) across both displays, treating the two as a single tall, narrow display. This mode is almost entirely useless and disconcerting.

I visited an Apple store and asked one of the helpful people if I could try out an iPhone in EDGE mode. They very helpfully showed me how to disable the WiFi support, so I was able to get a more realistic view of the iPhone browsing experience at its worst, and it is pretty nasty, at least on ludicrously heavy pages like gamespot.com. Unlike the DS, the phone can handle multiple pages at once, and load pages in the background — so you can diddle around on your iPhone or drink coffee while the page loads, but it’s still darn slow. That said, the DS is painfully slow with a WiFi connection and appears to cache absolutely nothing (not even stuff that isn’t currently being displayed in the current web page, so just scrolling a page makes you want to hurt someone).

But my original reasons for doing all these things was to make sure my ad code works properly on exotic platforms, and it does. (My video ad code has issues related to Safari/iPhone only supporting a subset of QuickTime codecs and not supporting Flash at all, but that’s not really under my control.) It astonishes me how little effort it takes to make quite complex bits of JavaScript work properly across browsers, and yet how much terribly incompatible JavaScript is out there, even on quite major sites.