July 9th, 2009
For web developers, there’s an obvious choice of which browser to use for developing web applications. Firefox it is, right? Wrong.
Standards, schmandards
Let’s compare the two browsers, more specifically Safari 4 vs. Firefox 3.5. Both browsers pass the Acid2 test with flying colors, but when it comes to Acid3, Firefox only reaches 93% compliance (up from 71% in Firefox 3.0). Safari? 100%.

That’s a pretty good start for Safari. Basically, if some HTML/CSS works on Safari, the chances are very high it will work on Firefox 2 and higher, and on IE 6 and higher (with minor tweaks).
Development tools
Firefox comes with no development tools, but it’s easy to install Firebug, the de-facto industry standard for HTML inspection, CSS munging and JavaScript debugging. But Firebug has been haunted by bugs lately, and the new 1.4 series is still in beta. Moreover, it feels a bit tacked-on and sometimes just fails to work or becomes unresponsive, or slows things down (hopefully this will be resolved in the 1.4 final, overall Firebug was one of the awesomest things ever for web developers, and I don’t ever want to go back to the days of alerts).

On the plus side, there’s some really great additional plugins like YSlow and Smush.it. I tend to use those independently of the main development cycle, as these tools are more for deployment optimization anyway, so they don’t really play into the development of the web app as such.

Safari comes with everything you need installed, and the tools themselves are very stable. And they even look nice, which makes debugging less of a drama. I especially like the Profiler, which has features not found in Firebug that come in really handy if you’re doing advanced JavaScript. The tools are very well integrated and are part of the application instead of an add-on, which also means they can access the browser/network data on a deeper level then Firebug can.

The console in Safari has some nifty features, foremost a well-working autocomplete implementation. Firefox has autocomplete too, but doesn’t show you the current option until after you hit .
The user interface is much more streamlined and cleaned up on Safari as well. The only gripe I have is that I’m not in love with the font the console and debugger on Safari uses (but I’m a font nerd).
JavaScript
And important (for me!) distinction between the two browsers is that Firefox messes with your JavaScript by doing a pre-optimization step on declaration. This means that:
function x(a){
return 1*2;
}
will be automatically converted into
function x(a){
return 2;
}
This change is not internal– if you to a x.toString() on the function source code actually has changed. I’m not very much in love with this automatic optimization step– I’d rather see this done by some kind of external tool, like the YUI Compressor, which does some of these microoptimizations. Neither Safari, nor Chrome or IE does that.
Quick, fix that bug!
I’ve done several bug reports to the WebKit project over the years, and all of them where eventually adressed (in big projects like this, it can be expected that non-critical issues might take a while to be resolved). On Firefox, there’s been certain bugs that have a long history of developer hairpulling and nailbiting. Here’s my favourite (Quote: “This bug reveals a problem in Mozilla post-release bug fixing. We have been made to wait 6 years for this bug to be fixed.”).
Note that I’m sure that the people working on the Firefox development team are working very hard (I know some of the awesome people who worked there!), and it’s more of a management issue.
Conclusion
I used Firefox since version 1.0 for my web development, but I’ve switched over to Safari for 99% of my development needs. I only go back to Firefox to make sure it works there and for some of the plugins.
Btw, I know that there are operating systems other than OS X out there. But I’m not using them for development, for several reasons, one of them being that OS X is the only system that allows me to test all major browsers side-by-side by means of virtualization software (I run IE6/7/8 in VMs), and have a Firefox on Linux VM, too. And the iPhone Simulator that comes with XCode runs only the Mac, of course. If you’re serious about front-end web development, there’s pretty much only one OS choice (Let the flamewars begin!).
June 9th, 2009
Years ago it was Netscape vs. Internet Explorer who fought for the throne of being the most popular browser. We all know how it ended, with the latter prevailing through a mixture of then-better technology (Internet Explorer 4 was ahead of its time) and questionable business practises (like too-tight OS integration).
The wind of innovation subdued, and browsers stayed as-is for a long time, despite efforts of various comittees to introduce new stuff to the Web.
Now, with Web-Two-Oh-And-Beyond, there’s a new browser war raging, and this time it’s mostly about real technical innovation, rather than adding proprietary stuff left and right.
And finally, browser user interfaces are taking real steps forward.
What to look for in a browser?
I’m doing a little ranking on these with both user experience and developer-friendliness in mind. Let’s see if we can find a winner here!
I’m looking at several things, which are:
1. Performance: JavaScript performance, standards compliance, support for advanced layout features (typography, various CSS options), rendering speed, memory friendliness and overall snappiness.
2. User Interface: Subjective beauty and usefulness, that is, does it rock?
3. Developer Tools: Are there developer tools available, on how useful are they?
Contenders
Snappiness: Oh my, it is fast. With the new Nitro JavaScript engine, and tons of improvements to the page rendering engine, Safari runs circles around most other browsers.
Safari was first to implement various design and typography-centric features, like support for color profiles, PDF rendering and various CSS3-based layout awesomeness. It passes the Acid3 test with 100%.
Does it rock? Yes, the User Interface is great, with the “Top Sites” view and graphical, screenshot-based history browsing, next to solid tab-based browsing. I’ve experienced a couple of weird crashes, which is a throw back into the Safari 1 era, but I’m sure that will be fixed soon.
Developer tools: Safari 4 now includes a widely Firebug-compatible API, which works great. The resources panel’ visualization of latency is incredibly useful. Plus, it’s stunningly beautiful, not a thing that can be said about most developer tools.
Snappiness: Okay on the PC. Lame on the Mac. The actual page rendering and JavaScript performance is pretty good (and will be much improved in the upcoming version 3.5), but the launch time on the Mac is pretty much unacceptable. The same goes for opening a new window.
Because Firefox’s interface is rendered in all HTML/CSS/JavaScript it will benefit a lot from the improvements in Firefox 3.5. Acid3? 71%.
Does it rock? The user interface seems a bit uninspired, compared to the eye candy that’s in Safari and Chrome, but it’s much cleaner than Internet Explorer. The URL bar’s shortcuts are pretty great, and lots of people swear by it.
Developer tools: The top of the pack. Firebug alone revolutionized the way most web developers work today, and there’s a bunch of other plugins available. But foremost, Firebug, which is a plugin, also has a plugin architecture, so there’s plugins for the plugin. And they are very useful (I can recommend YSlow and Firecookie). However, since Firefox 3.0, Firebug is a bit on the buggy side and tends refuse to work sometimes (in that case a fallback strategy is to use Firefox 2 and earlier versions of Firebug).
Snappiness: Launches instantly and browsing feels very snappy. The V8 JavaScript engine is almost on-par with Safari’s nitro, and the rendering speed and quality is great.
It almost passes the Acid3 test, with 99%.
Does it rock? The tabs-on-top work great, and the isolation of each tab as a seperate “browser instance” should by envyied by the other contenders, as it makes browsing much more scalable and stable.
A run-away JavaScript or crashing page can’t hurt your other tabs (ever had twenty tabs open and lost them all in a browser crash?).
Developer tools: Not so good. While it includes WebKit’s console, HTML browser and Resources panel, it’s not as tightly integrated as on Safari (or example, you’ve to reload to get results in the Resources panel, which might distort what actually is going on).
And for JavaScript debugging, there’s just a text-based console, which is not too useful.
Snappiness: It’s quite fast, especially when compared to previous versions. Though, it’s nowhere near the perceived speed of Chrome. All that doesn’t matter though, because the user is constantly interrupted with requests to help the browser out. I’m sure Joe User knows what “MSXML 3.0 SP11” is and can make an informed decision whether to download it or not.
When running the Acid3 test, there’s a big bold “FAIL” stamped on the screen, and it merely gets 20% of the tests right.
Does it rock? Hardly. The interface just doesn’t play nice and gets in the way all the time, especially when you launch it for the first time. Sometimes, on part of the browser doesn’t know what the other part does, such as when you’re debugging some JavaScript and the browser thinks that the script takes too long to execute. That’s called a breakpoint, duh.
And why is there a “Safety” menu? That doesn’t instill great confidence in me. And, no, please spare me with those surpise dialog boxes, asking me stuff and interrupting my workflow. Plus, what’s that stuff with the mode switching and the download of “compatibility updates”? Is it not compatible by default?
Does Microsoft really think that users will click a “broken page” icon? Get real, please.
Developer Tools: A clone of Firebug, minus the Network panel, but with interface annoyance added. Why is the HTML tree representation in a treeview that doesn’t wrap? Lots of awkward choices here, but all-in-all not bad. At least, the eighth version of IE now knows exactly where a JavaScript error happens, and provides you with a pretty good built-in debugger.
And the winner is…
We have a winner! And it is Safari 4. This is the browser I use for casual browsing and most development tasks. The runner-up is Firefox, mostly for the development plugins.
If—and I’m speaking hypothetically—I’d use Windows on my daily work machine, I’d probably pick Google Chrome for my casual browsing activities, and Firefox for development.
P.S. I’m coauthoring “JavaScript Rocks!”, a book on JavaScript performance, which touches the topics discussed in this article, and tells you what’s the best way to write, serve and optimize JavaScript-using web sites and web applications for the modern browsers! Download your PDF now (save $5 while we’re in beta!)—we’re launching the final book very soon!