Creating Applications with Mozilla
On the first and most obvious level, the book is just the typical, thorough treatment of the important APIs that we've come to expect from O'Reilly. There are chapters addressing all of the important layers of the Mozilla platform and plenty of examples that show you how to customize the platform. Some may want to change the icons and others may want to add more robust features. The range of possibilities is surprising and coders are creating one-to-one communications enhancements, add-on widgets, and even games. There are certainly some things missing, and some areas that could use more detail or more complicated examples, but the book is already 454 pages long.
On another level, this book is also one of the first finished documents that explains what the Mozilla group has really been up to for the past five years. Some have abandoned the project, and others have attacked it as fundamentally misguided. This book shows why it took so long by demonstrating all of the cool features added during the long march to a new, thoroughly extensible architecture.
Are the results enough to justify the time and the effort? Some note that the features may be a bit overhyped, because building your own browser with the Mozilla API is like making a pizza with $15 and a telephone. While there's a large part of the book devoted to the work you can do to change the look and feel of the buttons on your browser, the book and the project offer much more. The Mozilla project is one of the biggest threats to simple tools like Visual Basic to come down the pike in some time. The various layers offer many ways to provide good, customizable interfaces to databases, the web, and much more. I can see how many corporate development shops may want to start making Mozilla the platform for a license-free front-end, simply because it's a straightforward tool without extra costs or restrictions.
At the most abstract level, the book is a great way to get a taste of modern software development. Computer scientists sometimes fix problems by adding more and more layers of indirection. This may not solve anything, but at least there are hooks for a real solution to use some time in the future if some one ever does figure out how to make the box do it. The Mozilla browser is one of the most extreme examples of this philosophy to ever emerge. Emacs was something special, but this is even more insane. Everything can be changed around by rewriting some XML and Javascript and most people don't need to juggle the pointers in grubby C to do amazing things. I realize it's not as beautiful as Lisp to some, but it's got a clarity and level of abstraction that's stunning to behold. Lisp was just procedural, while XML is more like logic programming.
This relentless customizability embodies one of the deepest reasons for the success of open source. Technology is inherently complicated and the only way we can use it is if we can look under the hood. You can say all you want about CVS trees and bazaars filled with competing code, but opening up the interface is one of the most powerful themes of open source. It's not about teaching people to build their own VCR or PVR from scratch, getting the VCRs for free or even debugging the VCR's source code -- it's just about making them easy enough to program.
The book illustrates how Mozilla opens up the API to create a relatively easy language for people to use. The real open source is not the C in the tar ball, but the XML interface spelled out in the book. Many people feel that the most important thing that the first browser designers did was make it easy for people to see the HTML tags marking up the document in front of them. The new Mozilla takes this transparency to a new high.
If you look at the book at all of these levels, you can see that this is one of the most important documents to emerge from the open source community in some time. At first glance, it's just another set of APIs for us to wiggle. I realize it's not fair to credit the Mozilla team or the book authors with creating the browser or XML ex nihilio -- they just jumped on some of the most popular bitwagons propagating across the Net. But the result is a stunning completion of a very important and cohesive vision. The book doesn't crackle with bleeding-edge novelty, but shines with the certainty of a job well-done.
Peter Wayner is the author of Translucent Databases , Disappearing Cryptography , and a number of other books. You can purchase Creating Applications with Mozilla from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Let's see... can I embed IE into my web app?
Nope.
Can my IE web app run on almost every platform out there?
Nope.
Can I modify IE in case I need additional functionality?
Nope.
There's the tip of the iceberg in differences...
Department of Homeland Security: Removing the rights real patriots fought and died for since 2001
This is one way in which you just know that the Mozilla developers are at the top of their field(s) -- deciding to go with XML full-fledged (several years ago, too) was one of the greatest decisions they've made so far. The XUL interface, which is basically XML-based at its core, is about as flexible as one can get with the UI experience.
Furthermore, and of particular interest to someone like myself, the XML format offers a number of advantages for computational physics: clear markup of input data and results, standardized data formats, and easier exchange and archival stability of data.
I will definitely use a few dollars of grant money to purchase this book and keep it in the labs for all to read and enjoy.
Department of Physics and Atmospheric Science, Dalhousie University, Halifax, N.S., Canada, B3H 3J5
Ugg you got modded insightful. I better clarify before I get modded down:
This article is about the mozilla application framework. The application can be a stand alone application! This is not some kind of "mozilla only webpage."! This is just a method for creating an application that uses parts of the mozilla codebase, or more appropriately (though you and the mdos don't seem to understand the meaning of this) the mozilla application framework.
--
WHO ATE MY BREAKFAST PANTS?
mozdev has it for free
In true open source fashion, the book is also available in online form at http://books.mozdev.org/chapters/
An example of this kind of thing would be Komodo, an IDE for Perl/Python/Tcl/ development.
I seem to recall that some use MSIE as a component architecture to develop generalized applications in much the same way, but I can't think of any examples of this right now.
I know this is short notice, but I'm going for dinner with one of the the authors tonight in two hours time, and then going to his talk with the Internet Society in Trinity College Dublin (Ireland). The details of the talk are here.
The TCP/IP effort was very focused on standards and interoperability. That's what the U.S. Department of Defense, which funded the effort, wanted, because they wanted all their computers to be able to talk to each other. (Back then, IBM, DEC, Xerox, etc. each had their own network protocols, all incompatible.) The DoD project management people were very insistent on this; a formal DoD TCP/IP standard was pushed through. The individual implementations were forced to comply. (The Berkeley BSD crowd had to be hammered on a bit; they'd gone off on a LAN-only tangent for a while, neglecting long-haul issues.) And it worked.
C was the creation of two people. K&R C was rather PDP-11 oriented and lacked a real type system, but UNIX took off within the academic community before C was standardized. ANSI C came years later, so the UNIX world was still on K&R C years after the DOS world used ANSI C. Eventually, everybody settled down on ANSI C, but it took a while.
There are a couple of very interesting examples developed using this technology out already:
- OEOne, a complete desktop environment.
- Kimodo, a python and perl IDE.
I myself am working on a Bible program that will run, locally, under Mozilla. This is probably the future of desktop application development for most stuff."He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
What is doubly amusing is that when Microsoft attempted to kill (perhaps did kill) Netscape, they did so because they were scared the browser would turn into a platform that would let you write kickass apps making Windows irrelevant. In a way, this became a self-fulfilling prophecy, as if Netscape hadn't been taken over by AOL and left to do its own thing, would Mozilla (a platform as well as a browser) exist today?
I doubt that one day all desktop apps will be written using Mozilla. But it's an intriguing possibility, I look forward to the GRE with much interest.
I've been developing a Mozilla-based application component since August 2001. It's an HTML-rendering MOO client, and recently I've been pouring some 90% of my free time into working on it.
75% of that 90% of my free time lately has been updating the application to newer standards which have come into place since August 2001. For example, the Navigator/Mail/Editor/Chatzilla options used to be on the 'Tasks' menu in Mozilla, and were moved to the 'Window' menu around 1.0rc1. Bang, suddenly my application stops working properly, and less importantly, stops being a friendly component which works like all the others. A patch from a friend moved just about everything over to the 1.0rc1 way of doing things, and all was fine. Not everything worked flawlessly, though. The 'MOO Client' menu option didn't have an associated key visible, and the 'Window' menu inside MOOzilla didn't have any visible keys. The menus inside the application had long since stopped graying-out/disabling properly depending on what you have selected in the window. Many hours of last weekend was spent fixing these problems by conforming to new command handler expectations, and so on. (Where 'new' means 'changed since 0.9.6'. ;))
XUL is a wonderful tool. However, it runs dog slow on OS X. You don't have to take my word for it, just look at the Pheonix project. Pheonix is available for Windows and Linux, but not for OS X. Why? Because Chimera exists for OS X, which is faster (I'm using it right now) and integrates with the OS better. But... it doesn't support XUL. That's why it's faster. So where is my Mozilla application left? Stuck in the massive Mozilla suite when it's run in OS X. Mozilla, at startup, uses over 120 megs of RAM on my TiBook. Thank God for good VMs.
When initially writting MOOzilla, the XUL documentation was shit. The only place to go for any idea of how things really worked was deep inside the Mozilla source. And sure enough, this worked. The official XUL documentation at that time had sections which trailed off in 'blah blah blah' often because someone got bored of writting. I specifically remember it once read 'This is very important because blah blah blah'. Arrrg! How frustrating!
Mozilla is a powerful application development environment. XUL is a wonderful tool. Books like this one are going to make the world a better place for Mozilla component developers. And more cross-platform software developed with Mozilla makes the world a better place for users. Now... if only we can somehow apply this book heavily to the head of people who don't want to download Mozilla to try out an application, because they don't want to use it as a web browser. *sigh*.
And here I thought he was one of the knights who say "Ni!"
"I can't give you a brain, so I'll give you a diploma" - The Great Oz (blatently stolen sig)