Sunday, March 15, 2009

Notes about Safari and Firefox

Things not in Safari that I miss from Firefox:

  • OpenSearch. This lets you add almost any search engine to the search bar, and is by far the thing I miss most. It’s to the point where I’m considering setting my home page to a page full of search boxes for various sites.
  • Single Window Mode. i.e., once I’ve decided to use tabs instead of windows, when clicking a link which the web site has decided should open in a new window, I probably want it to open in a new tab instead of a new window. Safari doesn’t do this by default, but it actually does implement this as a hidden preference, accessible via TinkerTool. However, it doesn’t work quite right (which is probably why it is a hidden preference, instead of a usual one). You see, certain popup windows have a particular height and width specified - those should always open in new windows, not tabs. ‘Normal’ links which have no height or width specified should open in new tabs. Safari’s preference is all-or-nothing: you get all windows, with correct width and height if specified, or you get all tabs, with occasionally mangled sizes. Firefox is much more clever about knowing how to do this; in fact, I can’t recall Firefox doing the wrong thing in this respect. It ‘just works’, which, any developer knows, usually requires a lot more engineering than the user would ever realise.
  • The ‘feed preview’ page. Firefox lets me see what the RSS feed contains before deciding whether or not to subscribe, or what method to use for subscribing. Safari only has two options: open RSS feeds in Safari, or open them in some other application. If you choose the former, there’s no easy way to subscribe in another application other than copy/pasting from the address bar. (This may not seem like much extra work, but a loss of convenience like this does sting a little.) If you choose the latter, Safari will never show any RSS feeds at all; it will immediately send you to the chosen application upon clicking an RSS link. This may be the more conceptually correct behaviour: it’s the RSS reader’s job, not necessarily the web brower’s, to help you decide if you want to subscribe or not. However, I don’t know of any RSS reader that does give you a preview like this (even though they should).
  • Being able to search history by page title in the location bar.
  • Option to automatically close the Downloads window when downloads are finished.
  • Options for which types of files should always open immediately after download. Safari lets you do this with what it calls ‘safe’ file types, which don’t happen to be the types of files I want it to happen for.
  • A one-hand keyboard shortcut for ‘search Google’. I understand that Option-Command-F is nice conceptually because it aligns with Command-F, which is ‘find within this page’. However, it’s pretty much impossible to quickly/comfortably type it with only one hand. By contrast, Firefox’s keyboard shortcut is Command-K. I have no idea what the K stands for, but it really doesn’t matter once it’s in your muscle memory. I only bring this up because it’s a shortcut I use so very often.
  • A determinate progress indicator; i.e., one that shows how far along the page load has progressed. Due to the nature of the web, this can only ever be a very rough estimate, but nevertheless it makes a world of difference to the user experience. This was present in Safari 3, and is still present in Mobile Safari, so hopefully it will return for the final version of Safari 4. (Unlike some, it makes little difference to me where in the UI this indicator is located.)

Things that I’m surprised I don’t miss from Firefox:

  • Firebug. Safari has this built-in, and it has everything Firebug has and more.

Things not in Firefox that I miss from Safari:

  • Tabs On Top, obviously. I can’t quite figure out what it is that I like so much about it. It just seems so obvious. That’s not to say it couldn’t use any improvement, but I like it better than any alternative.
  • Being able to middle-click in ANY menu item that spawns a link and send it to a new background tab instead of the foremost tab. In Firefox, this works for some menus, but not others, and it takes a long time to develop habits according to which ones it works for. Worse, there seems to be no rhyme or reason as to which ones work and which ones don’t. In Safari, it works in all menus; no ifs, ands, or buts. This flaw may be specific to the Mac version of Firefox.
  • Reasonable application launch time.
  • Standard OS scrolling speed. I can jump to the bottom of a web page in Safari by flicking my scroll wheel as easily as any other text document on the Mac. Firefox resists and limits this for some reason.
  • Integration with OS Keychain for password storage. The Mac Keychain is more secure for two reasons: better defaults, and better customisability. Defaults: by default, Keychain won’t show you any passwords at all unless you type your main user password; Firefox, by default, will happily show you (or a nosy family member/coworker) any/all passwords you have stored in clear text just by visiting Preferences. Customisability: with Keychain, you can set it to ask for the main keychain password every X minutes, or you can make multiple keychains, and choose whether to have your login account automatically authorise them, or not. Keychain also lets you use the same stored password across multiple applications, and remembers authorisations across applications. Overall, it’s a much better and more secure experience in pretty much every way.
  • Integration with OS dictionary for spell checking.
  • Standard OS text handling behaviours. e.g., you should be able to right-click any word to highlight it. Firefox fails at many of these very subtle details because they are re-implemented by people who are not very observant of how the OS works.
  • The Activity window. You can see exactly what resources a web page has loaded, even stuff from plugins like Flash.
  • Saving in-progress downloads as a .download file, the icon of which has its own live progress bar. Also, bouncing the Downloads stack once after a download completes.

A few words about extensions

Firefox has a great extension API, which is often mentioned as one of its greatest strengths. But it is also, perhaps, its greatest weakness: in order to make such drastic modifications possible by extension authors, Mozilla has to make a lot of their own stuff from scratch when they would otherwise be using facilities provided by the operating system. This tendency to reinvent the wheel (somewhat poorly) is what results in many of my gripes with Firefox as listed above.

In switching from Firefox to Safari, I figured this extensibility was the thing I would miss most. However, this turned out not to be so. The vast majority of extensions I found I did not miss, and at this point, I couldn’t even tell you what extensions I had installed without going to look.

Safari, on the other hand, has no extension API. There is no supported way to extend Safari. (I am specifically referring to extensions, not plugins; the latter of which basically only provide for playing different types of media files in the browser.) There are a lot of unsupported hacks for Safari out there, such as SafariStand, Saft, Inquisitor, etc. Most of these use the InputManager method. The bottom line is that, since they use an unsupported and hackish method, updates to Safari can (and ususally do) break these, possibly even breaking Safari itself in the process. This can be fixed by removing the hack in question, but it still leaves you with a dilemma: do I install the Safari update, or do I keep this functionality that I’ve grown accustomed to? It’s a very uncomfortable choice, and one I have decided not to make: I will not install hacks just to get the basic level of functionality I need from a web browser.

Therefore, I decided that if I was going to switch to Safari, I would do so if and only if its baseline functionality, with no hacks, compared favourably with Firefox, including any and all Firefox extensions I desired. So far, I have not been disappointed.

However, I will admit that I made one exception to my rule. I try not to think of myself as an evil person, and I realise that advertising makes the world go ‘round, but there are some that are so incredibly obnoxious as to defy belief. I use Safari Adblock to cope with those sites which would be unusable otherwise. (I liken this to my use of the mute button on my remote control, when one of those ads with a car dealer screaming at me comes on TV.) However, it is not needed for the majority of my browsing, which makes it an acceptable casualty in the event that it is rendered incompatible by a Safari update.