Spotlight Features

DEVELOPER'S TOOLBOX

From Browser to Platform: Mozilla Rises

Didn’t Netscape lose the browser war? Mozilla, the technology that lies underneath Netscape products and a slew of its own products, just gets better and better. Netscape is effectively dead, but Mozilla keeps on keeping on. Here’s a look at why.

In 2010 we’ll look back and say 2003 was the year that Mozilla really began. Mozilla-based products have attracted many flattering reviews and several industry awards this year. At the same time, Microsoft’s Internet Explorer and Outlook Express, which are Mozilla’s most obvious competitors, are moribund at best. At worst, they’re buggy, security compromised and virtually abandoned by Microsoft.

This year, in just about every calendar quarter, the Mozilla Foundation, the Mozilla community and their friends have pumped out a regular minor release. The Mozilla Application Suite is 1.6 now, and the stand-alone Mozilla Browser (Firebird) and Mozilla E-Mail & News Reader (Thunderbird) are motoring steadily toward their own 1.0 releases. Mozilla technology is now very stable, very efficient and full of whizzy features.

If that were all, we’d expect the party to start drifting apart before too long. Such is not the case at all. The Mozilla Foundation is well funded and has lots of friends. Rather than finishing up, something far more interesting has happened this year. Mozilla is maturing into a software-development platform. That means many, many applications are likely to follow.

Platform Think

It seems obvious in hindsight. With user clients like e-mailers, HTML composers, calenders, debuggers, chat applications and address books, Mozilla must be far more than just a Web browser. And it is. The Mozilla Browser is built on top of the Mozilla Platform. Just look in the “chrome” directory of your current Mozilla install to see the browser sitting there as a single file called communicator.jar or browser.jar. Those files are just ZIP archives, each holding a set of human-readable text files.

The Mozilla Platform itself is a set of programmable objects and XML processors bound together into a single program. Applications that exploit this platform consist of images, XML and text files that are interpreted at runtime when the platform starts. Start the platform with one file name as an argument, and a browser appears. Start it with another file name, and an e-mail client appears.

Such application engines are not new. Many 4GL database clients work that way — and so do Smalltalk, emacs, PostScript, Macromeda Flash and so on. What is new with Mozilla is that apparently simple technologies used in Web development, like XML, CSS and JavaScript, are all equally applicable to Mozilla applications. Instead of a Web page, you can build a traditional user-oriented, GUI-based application with these technologies. There’s a huge ready-made Web programmer audience for such application development. There is an opportunity for Web developers to broaden their skillset beyond what is now a very competitive Web development market.

The first key to unlocking the value in the Mozilla Platform is to see graphical user interfaces — most commonly called GUIs — from a new angle.

XML: The Natural Solution for GUIs

It’s always the hardware that does it. Desktop hardware has gotten faster, and now a program doesn’t need to drive its graphical user interface from fast, compiled code. Slower, interpreted code will do. Mozilla’s trick has been to mash together two concepts: GUIs and XML. The result is XUL, a dialect — technically an application — of XML. A document that is XUL describes the GUI of an application in plain text using XML tags like “toolbar,” “menu,” “key” and “window.” HTML doesn’t have these tags. When you display this document, the result is a standard application GUI window, not an HTML page in a browser window. That is a breakthrough.

XUL works because of a golden rule of programming: If a system allows a programmer to state the answer to a problem in a very simple way, then that system is a hit. The simplicity of the command line was a hit for keyboard users of early Unix and of DOS; the simplicity of SQL is a hit for databases; the less obvious but still simple e-mail message header format specified by RFC 622 is a hit for network messages. Likewise, the combination of XML and a set of GUI widgets is a hit for user-oriented GUI clients. To see it at work, just open the address book of the Mozilla e-mail client. That new window is painted on the screen from a set of XUL tags.

Mozilla’s XUL has been so successful and so influential that most vendors of GUI development systems, like Microsoft and Macromedia, now offer an XUL clone or an XUL alternative of their own — XAML and Flex, respectively. One day, all but the most specialized applications will have their visual user interfaces specified this way. It’s the future.

Mozilla and Portability

XUL is expressed in the syntax of XML, and XML is a portable standard. CSS is a portable standard. JavaScript is also a portable standard. Because Mozilla applications are written using these standards, Mozilla applications are portable. Build your application for Windows and watch it work without change on Linux, Macintosh and elsewhere.

This portability is the same as that of Web pages. It is most welcome, not only because it bridges the Windows-Linux divide, but also because it reenables many disenfranchised platforms like OpenVMS, OS/2 and even such niches as the Amiga. Those operating systems can run any Mozilla application provided there is a port of the Mozilla Platform for that system. Only the Amiga is yet to be completed.

Complementing these portable standards is a set of objects built into the Mozilla Platform. Depending on how you count them, there are somewhere between 1,000 and 3,000. These objects provide the back-end facilities required of any serious application, such as Web connectivity and file access. These objects are available on every platform as well, so the Mozilla Platform looks overall a little like the Java environment.

Mozilla uses the simpler JavaScript and XML languages rather that Java’s fully object-oriented syntax. XUL documents are not intended to be dumb and unresponsive like HTML documents; they are intended to be highly interactive and respond to user commands.

Because the Mozilla platform is not quite as isolated as the Java environment, its performance can also be better in some cases. The platform also integrates more easily and naturally with native desktop features like accessibility systems, window managers, drag-and-drop features and theme engines.

Extreme Portability

No doubt Microsoft has a dim view of yet another cross-platform technology that seeks to trivialize the operating system underneath. Both Microsoft’s .NET initiative and the Longhorn release of Windows contain elements designed to entice programmers away from the simple engine-based system that Mozilla offers. The last thing Microsoft wants is for all future software applications to be served from a standards-based Web server into an OS-independent viewing system like Mozilla. Even worse, such a system can run locally without any Internet connectivity. It’s as though Microsoft lost control of Visual Basic.

Usually, building a platform that is cross-platform is very difficult to do perfectly. This is because the GUI widget sets offered by platforms are subtly different. A Windows button just isn’t the same as a Macintosh button. There are hosts of tiny variations. Together, these restrictions usually conspire to kill any portability strategy.

Mozilla, however, has bent over backward to be portable. The widgets it uses in the GUI are hand-crafted, not borrowed from the operating system. It uses the absolute minimum of Windows services on Windows. It even avoids Windows features that are easy to lean on, like leaving multiline layout of text to the GDI subsystem. Mozilla won’t touch a Windows feature if it can do without it. It will support a feature if that’s a competitive thing to do. And then it will support it on all other platforms if possible.

Probably the most offensively portable thing Mozilla does is to reimplement Microsoft’s COM from the ground up. COM — now called ActiveX — is Microsoft’s standard glue used extensively between applications. A completely separate implementation is both a cheeky and technically demanding feat. When Mozilla runs on Windows, there are two COMs: Microsoft’s and Mozilla’s. Even more cheekily, Mozilla’s portable engine makes its version of COM (called XPCOM) available on all non-Windows platforms.

So Linux and BeOS now have an implementation of COM if they want it. The icing on the cake is that many traditional Visual Basic programmers are wedded to COM. Mozilla provides an alternative upgrade path for those VB-heads who don’t want to absorb the complexities of .NET or Longhorn.

A Pause for Breath

For end users, all this competition might be invisible in the end. After all, if you can’t tell a Mozilla application from a native Windows one, what difference does the underlying implementation make? Probably not much, unless you’re on Linux, where applications are still growing rapidly.

From now on, though, look for portable or new applications with that certain Mozilla feel. We’re already seeing the beginnings of support-center call-tracking systems and customer-database systems. Not all will be free, and not all will be public, but some will be both. For Mozilla programmers, creative Web developers and others, these are interesting times indeed.

Mozilla cranks up the operating-system wars yet another notch with its highly standards-focused and standards-compliant implementation. If you don’t want to develop an application, there’s still a great Web browser to play with. Enjoy.


Nigel McFarlane is a freelance science and technology writer with an extensive programming background. His latest book is Rapid Application Development with Mozilla (Prentice Hall, 2003). Contact him at [email protected].


6 Comments

  • You know what? Forget about bloating Mozilla even further and instead give me a "Home" button on the standard toolbar and faster load times. Why is Mozilla so much slower than every other browser? I say improve performance first. Until then, I could care less about all that other crap.

    • One man’s bloat is another man’s feature 😉
      .
      You can get the bloatware you desire (i.e., the Home button) from:
      .
      home.no.net/trihand/mozilla/home/en/
      .
      Mozilla takes less than 2 seconds to load on the PCs at my house (Windoz and Linux). These are NOT high end gamer machines (I’m talking PC-133.) Unless your PC doesn’t have enough memory (128MB for Win9x, 256MB for anything else) or unless you’re running on an old Cyrix…
      .
      I should also note the obvious: about half of the ‘slowness’ in loading IE is hidden within the startup of Windoz. Similarly, Konqueror startup hides a lot of its initialization in KDEinit.
      .
      I feel that the two most important features of a browser are: (1) to be SECURE, incapable of infecting your PC with root exploits unless you CONFIRM that you want to install or run certain content; and (2) to implement the W3C specifications (HTML, DOM, XHTML)correctly.
      .
      For me, ‘speed’ is way down the list (behind features like tabbed browsing and mouse gestures), and I’m finding Mozilla 1.6 to be very quick and "snappy" anyway.
      .
      With regard to #1, Security: The "security" of IE/Outlook is beyond question. In this house, we don’t dare to touch IE for anything except Windows Update, and Outlook is REMOVED (as much as possible).
      .
      With regard to #2, Properly Implementing the W3C standards for web-based content: No browser I have used, except for Mozilla and its derivatives, handles CSS2 well. (I won’t even start in about the rest of DOM-2.) Many fail to even implement "basic" HTML 4.01 correctly.

      • Your bookmarks are in an everyday html file, "bookmarks.html", within the ‘xxxxxxxx.slt’ directory of your profile. You could copy this file to a "backup" place. And of course, you can edit it with any html editor.
        .
        If you are suffering crashes, then (1) you should really back up entire profile (the whole directory tree) fairly frequently. And of course, you should be opening bug reports on these events. You ARE using a talkback-enabled version, right?
        .
        Finally, I must strongly recommend that you not use ANY pre-release ‘development’ versions if you expect to have an ‘official release’ level of stability. (i.e., don’t use Firebird 0.7, or 0.8, or anything before 1.0; or any Nightly; or any ‘alpha’ milestone, or even any ‘beta’ milestone of the Suite.)
        .
        Are/were you using 1.5, or 1.4.1 (more reliable on Windoz), or ??

  • I have been reluctant to use Mozilla for a long time as it crashed when ads didn’t load and it didn’t store its bookmarks as separate files as Internet Explorer has so when it crashed I lost all the websites I saw. I figured out that I could drag and drop the link to the desktop, but that doesn’t work with Firebird .7. I stopped using Mozilla the suite even though Composer was quite useful for me because it locked up for over a minute many times when it launched. I wish they would focus on stability and not on all this other fancy stuff that the end user doesn’t care about. I personally wish developers would write platform specific whenever feasible, because when they support different platforms they don’t often times work as well on the less popular platforms and they are not as efficient. Mozilla should try for efficiency and stability first.

    • All Mozilla bookmarks are stored in an html file in your user directory. On windows that directory is C:Documents and Settingsmy_username If you want your old bookmarks look in:
      C:Documents and Settingsmy_usernameMozillaProfilesdefaultwhatever_name_you_usedbookmarks.html

      • Mozilla _stable_ branch is very stable. Mozilla on Linux is MUCH more stable than on windows (mostly because this is where the majority of development occours). Also, 1.6 is nearing stable status. So if your experience with mozilla is the earlier 1.x series you might want to try 1.6 when it reaches stable status.

Leave a Comment

Please sign in to post or reply to a comment. New users create a free account.

LinuxInsider Channels