Mozilla is not just a browser. Mozilla is also a framework that allows developers to create cross-platform applications. This framework is made up of JavaScript, CSS (Cascading Style Sheets), and Mozilla's XUL (XML-based User-interface Language) as well as the Gecko rendering engine, XBL (eXtensible Binding Language), XPCOM (Mozilla's component model), and several other components.Creating Applications with Mozilla explains how applications are created with Mozilla and provides step-by-step information about how you can create your own programs using Mozilla's powerful cross-platform development framework. This book also shows examples of many different types of existing applications to demonstrate some of the possibilities of Mozilla application development. One of Mozilla's biggest advantages for a developer is that Mozilla-based applications are cross-platform, meaning programs work the same on Windows as they do on Linux or the Mac OS.Working through the book, you are introduced to the Mozilla development environment and after installing Mozilla, you quickly learn to create simple applications. After the initial satisfaction of developing your own portable applications, the book branches into topics on modular development and packaging your application. In order to build more complex applications, coverage of XUL, JavaScript, and CSS allow you to discover how to customize and build out your application shell. The second half of the book explores more advanced topics including UI enhancement, localization, and remote distribution.Mozilla 1.0 was released on June 5th, 2002, after more than four years of development as an open source project. This book has been written so that all of the information and examples will work with this release and any of the 1.0.x maintenance releases. In addition to Netscape's Mozilla-based browsers (Netscape 6.x and 7.x), the Mozilla framework has been used to create other browsers such as Galeon and Chimera, and chat clients such as ChatZilla and JabberZilla. Developers have also used Mozilla to create games, development tools, browser enhancements, as well as all sorts of other types of applications.

David Boswell

David has been involved in the Mozilla community for more than three years. He started the Mozilla development effort at Alphanumerica and set up the first two Mozilla Developer Meetings. At Alphanumerica David worked with Pete Collins on a number of Mozilla application including Aphrodite, Total Recall, and Chameleon. Pete and David also founded mozdev.org, a site offering free hosting for Mozilla applications. There are currently over 70 development projects hosted on the site. David has also written a number of articles about Mozilla including 'Getting Your Work Into Mozilla' and a series of articles discussing how to use Mozilla technologies to create a Pacman-like video game.

Brian King

Brian has been hacking on Mozilla and related projects since early 1999. It began with a European funded project called Fabula to create software for children with the aim of learning minority languages like Basque, Catalan, Frisian, Irish, Welsh. This was built using Mozilla. Interest bloomed and he started contributing to the Mozilla Editor, and exploring the rest of the vast body of code. He moved on to work at ActiveState where he was heavily involved in the Komodo project, a scripting language IDE that uses the Mozilla application framework. Previously, Brian spent his time as a C++ applications developer, interspersed with some Perl development and XML consultancy. His technical interests include observing and participating in the re-shaping of the web environment brought about by XML. Other languages he dabbles in are PHP, Python, and JavaScript. Brian is now working as a Web technologies consultant.

Ian Oeschger

Ian Oeschger is Senior Principal Writer at Netscape Communications, where mozilla.org was started over three years ago. His abiding interest in language is the basis for some of his more recent infatuations with Python, XML, web application development, and linguistics. He maintains a number of the XPFE documents on mozilla.org, including the XUL and DOM References. Ian published several articles about XML and mozilla application development for O'Reilly, and also wrote the themes documentation for Netscape, the XPInstall API Reference, and others. Before getting involved with Mozilla and Netscape, he worked at Oceania, a startup doing XML-based electronic medical records and charting software.

Pete Collins

Pete got involved with the Mozilla project in April 1999 as a contributor to the editor module. He was also the first external developer to start documenting xul. His initial efforts were a remote, web enabled script editor and a community driven rewrite of the existing Mozilla UI. The project was later named Aphrodite. In January 2000, he joined with David Boswell and the Alphanumerica team. Together they evangelized Mozilla as a viable application platform through the many projects they created and Mozilla developer meetings they organized. Currently a software engineer employed by WorldGate, Pete is working on customizing Mozilla for their TV Internet Client Software. He is the co-founder of mozdev.org a site dedicated to Mozilla based projects. He is a regular Mozilla comitter and owner of various Mozdev projects including jslib and Chameleon.

Eric Murphy

Eric has been doing Mozilla development since Spring 2000, starting off with an instant-messenger client called Jabberzilla. He enjoys exploring opportunities of Jabber and Mozilla working together with new implementations, such as a collaborative whiteboard and real-time web content demonstrations. In 2002, Eric is looking forward to joining the workforce with a recent computer science degree from the University of Northern Iowa. Working on Mozilla projects has been a great resume-builder for him, and will always be an important part of his life to reflect on.

Our look is the result of reader comments, our own experimentation, and feedback from distribution channels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The animal on the cover of Creating Applications with Mozilla is a frilled lizard. Native to Australia, the frilled lizard is known for the colorful neck frill that it uses to frighten predators. The frill normally lies in folds around the lizard's shoulders, creating a camouflage. When the lizard is frightened, it activates the frill by opening its mouth wide. This raises the frill, displaying its bright red and orange underside. Frilled lizards eat insects such as cicadas, ants, and spiders. Their population has been greatly diminished by land clearing and being preyed on by cats. Mary Brady was the production editor and proofreader, and Ann Schirmer was the copyeditor for Creating Applications with Mozilla. Mary Anne Weeks Mayo and Claire Cloutier provided quality control. Johnna Van Hoose Dinse wrote the index. Brian Sawyer and Derek Di Matteo provided production support.Ellie Volckhausen designed the cover of this book, based on a series design by Edie Freedman. The cover image is a 19th-century engraving from the Dover Pictorial Archive. Emma Colby produced the cover layout with QuarkXPress 4.1 using Adobe's ITC Garamond font.David Futato designed the interior layout. This book was converted to FrameMaker 5.5.6 with a format conversion tool created by Erik Ray, Jason McIntosh, Neil Walls, and Mike Sierra that uses Perl and XML technologies. The text font is Linotype Birka; the heading font is Adobe Myriad Condensed; and the code font is Lucas-Font's TheSans Mono Condensed. The illustrations that appear in the book were produced by Robert Romano and Jessamyn Read using Macromedia FreeHand 9 and Adobe Photoshop 6. The tip and warning icons were drawn by Christopher Bing. This colophon was written by Linley Dolby.

I have the impression this book was printed prematurely. It took me over 4 hours to get the example of chapter 2 to run.

Do not buy this version wait until a corrected version comes out. If you apply all the errata from http://books.mozdev.org then you have to change almost every page. Actually I would like to get my money back, but...

In the year since this book was published, new Mozilla releases have continued to improve and evolve. The book's contents were written with Mozilla 1.0.x in mind, so it is important to be aware of this when trying to use more recent versions such as Mozilla 1.4 or one of the Phoenix/Firebird releases. In fact, Firebird didn't exist at all when the book came out so there's no information at all about the next generation XUL toolkit it uses.

To help deal with the ever changing new Mozilla releases, the book's authors have tried to write new articles and to keep the online version of the book more current. If you are having problems using the book with a recent Mozilla release or with one of the Phoenix/Firebird releases, I'd recommend taking a look at some of the following links:

The Future of Mozilla Application Development

Corrections for the online version of the book">Reviewers mailing list where the authors and other community members will be available to help you with your questions

I'm obviously a little biased, but I think the book does a very good job of providing a useful snapshot of what's involved with creating applications with Mozilla at the time it was released. A little frustration is inevitable when new releases don't work as advertised in the book, but in conjunction with online resources the book is still a good guide for how to use Mozilla to create your own application.

This book does not even begin to work as a tutorial. Chapter 2, "Getting Started" is poorly organized, with continuous forward references "we show you this here, but we explain it in 3/5/10 pages or in chapter X". Getting Started should be giving an overview from the top down, which doesn't require forward reference, whereas this basically starts describing detail after detail, incompletely, and as mentioned, with forward references that only obfuscate the topic.

At the end of Chapter 2 it's noted that you should grasp this material before moving on, but quite honestly, I can't see how that's possible. I can't even get the examples to work with Mozilla 1.2.1 or Phoenix 0.5, and I know this stuff works generally because I've installed extensions from mozilla.org into both browsers. When I finally set up my installed-chrome.txt file (which BTW didn't exist until I created it), the path is somehow wrong somewhere so my browsers can't find the xfly application, but there is nothing like sufficient information in Chapter 2 to help me figure out what's wrong with the path--I've set the directory structure exactly as described and all the dirs are 755 and files 644 permissions.

I have to say this is the most disappointing O'Reilly book I have ever purchased.

I read the article after reading a few book chapters and I have to agree with the criticisms about the support files and downloads. But thats easily rectifiable by someone at OReilly I would have thought...

I also agreew ith the comment about deep directory structures. This is something I had a lot of probs with early in in moz hacking. So much so that it took me four attempts before I stored up enough patience to persist with it.

The author does go on though to praise Mozilla and the platform though, so I reckon its a balanced article.

I read the article after reading a few book chapters and I have to agree with the criticisms about the support files and downloads. But thats easily rectifiable by someone at OReilly I would have thought...

I also agreew ith the comment about deep directory structures. This is something I had a lot of probs with early in in moz hacking. So much so that it took me four attempts before I stored up enough patience to persist with it.

The author does go on though to praise Mozilla and the platform though, so I reckon its a balanced article.

I happened to be experimenting with XUL and Mozilla at the time that I ran across this book, so I was very eager to get into it and see if it could help clarify some of the gaping holes in the existing XUL documentation within Mozilla. As an exhaustive reference to XUL and the associated technologies that are used to build Mozilla applications, it was very successful. As a higher level tutorial that explains the relationships between the different technologies and their uses, it was not quite as successful.

Chapters 1-6 lead the reader through the progressive steps required to build and package a Mozilla-based application. The authors create a demo application called xFly which is used as a test bed to show the different features of XUL, CSS, and JavaScript. By the end of Chapter 6, this application contains a tree control, a bunch of sample menus, and various other assorted UI widgets. But it doesn't really _do_ anything. Maybe I'm too picky, but I'd rather see an application that has some function, even if all it does is play tick-tack-toe. Then, to me at lease, it's much clearer how the different pieces would fit together in a "real-world" application.

Chapters 7-12 cover more exotic and difficult aspects of Mozilla programming such as the Extensible Binding Language (XBL), XPCOM (Mozilla's component object model), and accessing web services from XUL applications. These chapters are very dense in technical details, with good references to online resources for further study.

Overall, I found this book to be a very succinct source of accurate information about building applications with Mozilla. Its only weakness seems to be that it focuses too much on low-level implementation details without giving the reader (who may be new to the idea of XML-based GUI application programming entirely) a good high-level overview of the benefits of this type of development and which technologies serve which purpose. Chapter 1 is the only chapter that explicitly addresses high-level application architecture, and it is only 8 pages long. The bottom line is that this is a good reference book for people who already know how and why to build applications based on Mozilla, but a not-so-good introduction and tutorial for people who are completely new to the XUL-CSS-JavaScript paradigm of application development.

Mozilla web applications are another attempt to do what Sun tried to do with Java Applets. However, the Mozilla effort comes after the web has had 7 more years to mature (1.0 released in 2002, with Java making the scene in 1995).

Perhaps the greatest advance has come with XML. Mozilla puts it to good use as: (1) an interface specification language (XUL); (2) a declarative programming language (XBL); and (3) a data definition language (RDF). This removes a lot of the need to write procedural code (a la applets) which is one of the hardest parts of writing distributed applications. Javascript is used for any procedural bits that remain, mainly client-side interaction effects.

Creating web applications with Mozilla does a great job of laying this architecture (and more) out and giving the novice an idea of where to start. Even if you already know XML, javascript, CSS, and all the other components that go into creating Mozilla applications, you need this book to tell you how mozilla synthesises them.

The problems I see with this book are the problems I see with mozilla. Mainly, it's the issue of maturity. For instance, there is mounting evidence that mozilla is going to evolve from its current monolithic approach of providing web, email, chat, and whatnot all in one package to individual applications. One imagines that that will bring about a paradigm shift in how one creates mozilla applications. Is there a way to code with those possibilities in mind. The book is silent on this point because I suspect too much is unknown. It will probably require a major update at that point.

Other issues: (1) What are best coding practices? How would one implement model-view-controller, a popular web application paradigm, using mozilla? (2) Are there standard solutions available so that people do not have to go around re-inventing algorithms and packages? A mozilla coookbook might be in order. (3) How can one write remote applications? The book gives one tantalizing chapter, suggesting this is a growth area. Eventually, it might warrant a book on its own, once things have become clearer.

All in all, I rate the book very good because I think it is a great start. There's more to do.