|
|
||
Firefox the Browser—Part 2© Copyright Darrell Anderson. (February 2007) Approximately two years ago I published my thoughts about Firefox as a browser. I discovered Firefox back in the Phoenix days, around version 0.4 or so. I always wanted Firefox to succeed, if only from a philosophical perspective. Yet I am pragmatic. I wanted Firefox to succeed as a useful tool too. Firefox has improved, but my thoughts posted in my previous review have changed little in two years. Yes, installing extensions globally now seems to function correctly. However, many “standard” tab features are not part of the raw Firefox. There remains no easy way to modify Firefox context menus. Default actions for using the location and search bar have improved, but the Home button still opens in the current tab with no user preference to open in a new tab. There remains no white list options for JavaScript, Java, HTTP referrer headers, user forms, and minimum font size (why do so many web page developers design pages with terribly small fonts?). Unlike Opera, there remains no way to add simple background sounds to various user events. Unlike Opera, there remains no option to add site-specific preferences. Although available as a menu option, there remains no toolbar button to quickly toggle page styles. Many user preferences remain unconfigurable except through a text editor or the about:config portal. Why do the Firefox developers refuse to adopt the more comprehensive Preferences dialog boxes from Seamonkey? Yes, many of these issues are resolved through extensions, but extensions add overhead and bloat because of the interpreted nature of the XUL/JavaScript interface. I wonder whether the primary hurdle is that too much of NIH (Not Invented Here) seems to prevail in the Firefox developer community. For whatever reasons, the Firefox developers have their agenda and motives, and the opinions of typical users do not sway those people much. I can live with that. Yet for a long time now I have been growing more dismayed with the performance of Firefox. Despite a lack of features and extensions at that time, I was content with version 0.7, but thereafter I believe each release got slower. I always blamed the underlying XUL/JavaScript interface. Web page rendering speed seemed acceptable, but the program interface was always slow. A simple action such as popping up the link context menu often required a full second or two to appear. Trying to get the link context menu to appear when rapidly opening a succession of tabs in the background was all but impossible. Scrolling a web page sometimes would grind to a turtle’s pace or stop while a page loaded in the background. Similarly, the mouse pointer sometimes “skipped” or “jumped” while loading pages in the background. For the past many months I noticed that web page rendering speed was getting slow too. Some people might blame my operating system, Windows NT4 (SP 6a), but I scoff at such efforts because every other piece of software on my 400 MHz K6-III+ box with 256 MB of RAM simply flies. Because of the slow interface response, earlier this winter I began exploring K-Meleon 1.02, a cousin to Firefox. I began using K-Meleon about the same time Firefox 2.0 was released. K-Meleon is a Gecko-based browser, but written with native Windows DLLs and widgets rather than the contemptible XUL. The K-Meleon interface is much snappier and responsive than Firefox. I also noticed that K-Meleon rendered web pages faster than Firefox. Overall that was quite pleasing, but K-Meleon lacks many features that I now expect from any standard web browser. Additionally, despite one developer’s valiant effort to create a version of K-Meleon that runs well on WINE within GNU/Linux, there is no native GNU/Linux version of K-Meleon and likely there never will. An additional frustration for me is that I like certain aspects of Konqueror, the native browser for KDE, but like K-Meleon, Konqueror lacks several features I consider essential to my web browsing. I occasionally use Opera, but the design of Opera is sufficiently different from Gecko browsers. And Opera lacks an important feature that I demand from any browser I use: the ability to define the tab focus when closing a tab. The lack of that one feature alone prevents me from using Opera sincerely. All of these issues left me wishing I could get Firefox running in some kind of acceptable manner. Much to my surprise I did just that. The first thing I did was update Firefox from version 1.5.0.7 to 1.5.0.9. These minor updates are always advertised as security fixes and occasional minor bug fixes. I was hardly confident that this updating would amount to much, but I was clinging to proverbial strands of rope. Then I removed all plugins. Almost always when I access an online document I download the document for later use. Additionally, because I do not like consuming CPU cycles running anti-virus software in real-time mode, I download files so I can scan them manually before opening. I also prefer to open files in their native program rather than inside my web browser. I’m from the old “one tool—one job” school. Plugins are overhead and bloat. I also have been suspicious about commercial plugins and the great desire by the people who design them to have their software “phone home” or track usage. Because a plugin is internal to a browser, I have my doubts that a basic Windows software firewall can trap such nefarious or malicious attempts because the firewall is configured to allow the browser all access. The browser is a trusted program, whereas a plugin is not, but the firewall does not see the plugin function—only the browser. Running or viewing files with an external program seems safer to me. Therefore, plugins do not provide me any great service or value. I also disabled plugin scanning, which required editing the master all.js file. Next I removed several prefs.js tweaks that allegedly make Firefox faster. Frankly, whether running with dial-up or broadband I never noticed any speed improvements with these tweaks. I suspected that possibly these tweaks actually might be hindering my browsing sessions. After removing those tweaks I again noticed no difference in my browsing with Firefox. Yet, I left the browser configured in that manner. Someday I might learn how I might quantitatively measure the effects of these alleged improvements. Next I looked long and hard at extensions. After a lot of research that did not light any proverbial bulbs in my head, I nonetheless decided to disable some usual suspects. First I disabled NoScript 1.1.4.3 and then manually disabled JavaScript. I never have trusted surfing with JavaScript enabled except for certain sites that have proven to me trustworthy. NoScript provided an easier way to temporarily enable JavaScript as needed. I was unsure after browsing whether I noticed any considerable improvement, however. I thought I saw some improvement but I wasn’t sure. I next disabled Adblock 0.5.3.043 and User Agent Switcher 0.6.9. According to all reports I could find, these versions should not have been problematic to Firefox, but previous versions were known to conflict with performance. I also concurrently disabled FirstField 1.1 and Cookie Button 0.8.5. I next installed Adblock Plus 0.7.2.3. Everything I read led me to believe that Adblock Plus was a major improvement over the original Adblock. But before starting Firefox I disabled Adblock Plus. I next updated several extensions, including NoScript although I kept that extension disabled. All of the updates were minor incremental version changes, but not being an extension guru, I had no idea if any of those extensions were causing problems. Those extensions are essential to my web browsing and I was not going to disable them. After these changes I restarted Firefox. I ran a few under the hood checks, deleted the cache, etc. All seemed well. I then started surfing. Bingo. I immediately noticed an improvement in user interface response, as well as page rendering speeds. Compared to my previous many months of frustrating usage, Firefox this time was much like a breath of fresh air. Next the question arises. Which extension or combination thereof was the culprit for my growing discontent with Firefox? I haven’t a clue, and when I started my project I had no intention of investigating methodically. I simply wanted Firefox to become usable. Somehow, for whatever reason, I got Firefox to that stage. Firefox remains slower than K-Meleon in Windows, or Konqueror in KDE, but is now usable. Encouraged, but not exactly whooping with glee, I then made all the same changes to Firefox-GTK running on my Slackware box. I again noticed an improvement in user interface and rendering speed. Firefox-GTK remains slower than Firefox-Windows, but is now more usable. I have no idea which extension, extensions, or combination thereof caused much of my problems, but they now seemed history. Perhaps the update from version 1.5.0.7 to 1.5.0.9 played a role too. After deciding that I had somewhat restored a nominal amount of confidence in Firefox, I cautiously enabled the handy FirstField extension. I noticed no impact upon performance. I then installed the PrefBar 3.3.4 extension to provide a more useful method of quickly toggling various browser options. This is one area where the Firefox developers do not see the big picture. Many elements of a browser need to be configured in an easy fashion. Opera provides a pop-up context menu. Firefox provides nothing. Yet, after adding this extension I again noticed no impact upon Firefox performance. I did not reinstall the Cookie Button or User Agent Switcher extensions because the PrefBar extension provides the same features.. I have no plans to test the effects on Firefox. I had not yet enabled the NoScript and AdBlock Plus extensions. I suspected both of those extensions contributed to my overall dismay with Firefox, but for a while I wanted to test without those extensions in the way. After several hours of surfing I decided to again try those extensions. Both slowed my Firefox performance and Adblock Plus more so, including my infamous jumping mouse pointer. Without that extension page scrolling returned to normal. So good-bye to that extension. Eventually I probably will try tinkering with NoScript, although I do not like the way the entire Gecko JavaScript policy scheme works. That is, to create a JavaScript white list, JavaScript must be enabled at all times. That is just plain dumb. I cannot say that I am thoroughly tickled and happy that I once again use Firefox as a browser. The menu system in Firefox still responds slower than any program written with native operating system widgets and DLLs. Firefox-GTK remains slower than Firefox-Windows. I remain convinced that certain features provided only through extensions do indeed consume unnecessary CPU cycles because of the underlying XUL/JavaScript interface to those extensions. I realize the Firefox developers seem intent on providing the world’s most stripped browser and never will absorb many extensions into the trunk code. If I had the big bucks or influence I’d hire a couple of sharp developers, fork Firefox, convert those handful of extensions into the trunk code, and also add the far more extensive and useful Preferences dialog boxes provided in Seamonkey. Nonetheless, I am happier than previously now that I somehow managed to configure Firefox back into the realm of being useable. Last but not least I updated the Tab Mix Plus (TMP) extension from version 0.3.0.5 to 0.3.5.2. That updating allowed me to eliminate the Open Link In extension—a critical extension for me. That extension, and the newer TMP, provides a link context menu option to open tabs in an active tab or a background tab—no middle-clicking required. The lack of this option in the raw Firefox has always been a pet peeve of mine. Both Opera and K-Meleon provide those menu options and I like them. Without the Open Link In extension I also am now able to delete the Menu Editor extension, which I used only to arrange my context menus because of using the Open Link In extension. Overall, TMP is one of those successful extensions where many or most of the features ought to be streamlined into the Firefox trunk code (Firefox developers: are you reading this?). Firefox is simply unusable to me without that extension and I am not the only person with that same opinion. Using native trunk code would make the Firefox interface faster with respect to those particular features rather than always having to interpret them through the slower XUL/JavaScript interface. Yes, I have installed Firefox 2.0 and a separate profile for that browser. I’ve read reports that version 2.0 is more stable and faster than version 1.5x, but I seldom believe that kind of marketing and fan-boy hype until seen with my own eyes. Currently I am migrating to 2.0 slowly. I tested Adblock Plus in 2.0 and again I noticed a slow down in performance. Yet, even with that extension removed, version 2.0 seems a tad slower than version 1.5.0.9. I offer no quantitative measurements, only my initial reaction to loading local pages. Happily, however, with version 2.0 I no longer need an extension for session saving and crash recovery, nor do I need the View Source With extension. I otherwise have updated all extensions, synced my prefs.js and user.js as much as possible for two different versions, but I have not ventured fully into exploring whether all I have done here will be just as successful in version 2.0. Grumpily, with 2.0 I noticed the Firefox developers modified yet another existing file format. The various search engine plugin files are now in XML format. Mere copying and pasting those files from version 1.5.0.9 will not suffice. Therefore, before migrating fully to 2.0 I’ll need to learn how to modify those files to my preferences. Like so much in Firefox, the developers provide no direct interface to modifying those files. I like configuring my Google search engine to listing 30 results per page. Lastly, this entire venture left me with a challenge. Firefox was once again usable, but I no longer had any ad blocking. I’ll continue my thoughts about how I decided to block ads in another essay. You might be surprised by the final result. Update(February 2007) I’ve been using version 2.0 more often and all seems to proceed well. I have updated to 2.0.0.1 while concurrently also using 1.5.0.9. Oddly, while starting Firefox, both 2.x versions rapidly display the outline of the extensions list window. I never have seen this with any version of Firefox. Probably harmless, but annoying. (Note: 2.0.0.2 does not do this.) Another annoyance I noticed is although I thought I finally eliminated the halting page scrolling and jerky mouse pointer while loading pages in the background, which originally I thought was related to the Adblock extensions, I notice that behavior again with Firefox 2.x. That annoyance alone is sufficient to keep me using 1.5.0.9. And my original gut feeling that page rendering was a mite slower in 2.x now seems correct. (Note: 2.0.0.2 seems as fast as or faster than 1.5.0.9, but the occasional halting when loading pages in the background continues.) I have not yet re-enabled the NoScript extension. I seldom need JavaScript and I am unsure whether than extension impacted my browsing session speed. Therefore I want a good feel for running both versions of Firefox without that extension before trying again. After updating my browser extensions and testing, I saw no reason to keep the Searchbar Button extension. The primary reason I originally used that extension was for the button but also to force Firefox to open the results page in a new tab. Version 2.0 provides the ability to do both. Yet when I deleted that extension, one element I missed was having my search bar automatically clear when the results page loaded. A small nit-pick, but life is full of how each of us wants our lives to proceed. A little searching helped me find a new extension named Searchbar Autoclear, created by Peter Wang. Peter took a previous extension, Searchbar Autosizer, stripped all the fluff such that only the auto clearing function remained. I installed and tested the extension in version 2.0 and everything worked as advertised. When I tried the extension in version 1.5.0.9, however, the extension failed to function. I wrote to Peter asking for help. He responded promptly with a recommendation for modifying the existing search.xml file located in chrome/content/browser.jar. He added one line to the existing code: <method name="onTextEntered"> The additional instruction worked great! My thanks to Peter. Please know that this tweak is for version 1.5.0.9 only (probably any version of 1.5x). The search.xml code is different in version 2.0. I also wanted to discover how to completely disable all plugins in Firefox-GTK. In addition to deleting all files located in the plugins directory, in Windows there are several preferences in greprefs/all.js that can be commented out to disable automatic scanning of system plugins. Those preferences include: //pref("plugin.scan.SunJRE", "1.3"); To block plugin scanning some people recommend modifying the version numbers to a ridiculously high number, such as version 99, but I merely commented out all of those preferences by adding a double slash to the beginning of each line. In Windows Firefox no longer loaded any plugins. Although deleting files from the plugins directory is part of the solution, none of these preferences exist in Firefox-GTK and manually adding them fails to help. As some people have noticed, the GTK version of Firefox is not as well supported as the Windows version. So off to the web to find an answer. I never found any. Apparently everybody on this planet thinks plugins are the greatest thing since sliced bread. I found a lot of help with adding plugins but not removing. However, on a whim I looked in the firefox script used to start Firefox. In that script I found a snippet of code that creates an environment variable called MOZ_PLUGIN_PATH. I commented out the export command for that variable and then started Firefox. No plugins loaded. Finis. |
||