Valid XHTML 1.0!



Feldt, Kenneth C. Programming Firefox. Sebastopol, CA: O'Reilly, 2007. xvi, 494 pp. ISBN 0-596-10243-7. $59.99

There are several ways of customizing the Web browsing experience. The Mozilla Firefox browser is composed of open-source libraries that welcome modification. The development community surrounding Firefox has developed hundreds of browser add-ons, small programs of helpful features to aid your Web experience. One add-on, Greasemonkey, allows Web surfers to modify the look and feel or functionality of any Web page. Extending the idea of customization, you could build your own Yahoo Widget that could, for example, regularly seek and present Web information on your desktop. Or, you could roll up your sleeves, and build your own Web browser-type application (it would be Internet Explorer, however) simply by dragging a Web browser control on to a Windows Form using VS.Net and adding any editing, database, etc. functionality that you like.

This survey of strategies illustrates that customization can be achieved using a range of easy-to-hard scripting and programming. And, depending on which technology is employed for customization, there are different payoffs of functionality. For example, a Greasemonkey add-on written in JavaScript cannot address the hard drive of its hosting computer, while a Windows Form Web browsing application has full access to the hosting hard drive and the Internet.

This book falls exactly at this nexus of the cost-benefit of possible customization, degree of difficulty and potential pay-off.

Feldt focuses on XUL (pronounced zool), Extensible User Interface Language, that offers libraries of widgets for painting the browser screen and communicating with a distant Web server or local file. For example, one could split the screen with more than one window widget, each window displaying a different Web page and featuring different scrolling and paging characteristics. A third window might display a text area where you could take notes. One may construct buttons that fire JavaScripts that make asynchronous HTTP requests or calls to files on the hosting hard drive.

The galaxy of technologies that Feldt uses to display XUL is impressive: JavaScript, DOM (the Document Object Model), Cascading Stylesheets, RDF (Resource Description Framework), PHP (Personal Hypertext Processor), MySQL, and so on. In short, a rich and cosmopolitan technical background aids the comprehension of the contents. Feldt proselytizes his reader as a 'developer' who might combine these technologies in XUL applications. This book is obviously not for beginners, which is not a criticism of Feldt, but a recognition of the complex technical and conceptual environment of XUL applications. Simple XUL applications don't do much but paint the screen, useful ones can be quite complex with errors lurking in use of XUL widgets, JavaScripts, server scripts and so on. Feldt concludes several chapters with sections "What to do when things go wrong." Since XUL applications represent the combination of several technologies, the developer is not working in an integrated development environment that aids the location and fixing of errors.

The pedagogical strategy is of building a single application across several chapters of content; for example, the introductory chapters build a browser application that permits users to select portions of a Web page and make notes. The incrementalism is useful except very quickly the source code spans five or six pages. At this point the publisher should have used a dramatic font contrast to help the reader find the code under discussion. Feldt's exposition is a model of clarity, even though he has to stop himself to give small tutorials on event processing, element addressing in the DOM, server issues and so on. The book also features chapters on XUL with SVG (Scalar Vector Graphics) and XForms.

Feldt's work is impressive, and he is not to be faulted even though I still find myself still thirsting for the compelling XUL application and fearful of the complexity of it all.

Terrence A. Brooks
Information School
University of Washington
Seattle, WA
July, 2007

How to cite this review

Brooks, T.A. (2007). Review of:  Feldt, Kenneth C. Programming Firefox. Sebastopol, CA: O'Reilly, 2007.  Information Research, 12(4), review no. 270  [Available at:]