Words by c.z.robertson

User-interfaces are not cross-platform

2002-04-08 01:00:00 UTC

One of the most controversial decisions made by Mozilla's developers as they were designing the program was the decision to implement its user interfaces using a cross-platform GUI toolkit of their own devising. Their reasoning was that maintaining a separate UI for each platform would take too much effort, and they believed that it would not be possible to create wrappers which provided identical APIs to each platform's GUI toolkit due to the fundamentally different ways in which the toolkits worked.

The Mozilla GUI is, to a very large extent, modelled on the Windows GUI. The Classic theme is indistinguishable from a native windows program, and other themes tend to differ in appearance only.

Mozilla has always had a bad reputation among Mac users because it does not use native Mac widgets and does not look or behave like other applications.

On Linux the problem is a little less noticable since Linux already has many different GUI toolkits in active use. Mozilla doesn't appear particularly inconsistent because there was little consistency to begin with. However, for those of us who make efforts to use applications which all use the same toolkit, it is a little bothersome -- enough so that two projects have been started to give the Mozilla rendering engine a native interface. Galeon, the more advanced of these two projects, has been highly successful; Skipstone slightly less so.

What is interesting is that Mozilla's UI on Mac and Linux, where it doesn't fit with the rest of the platform, has been rejected. It could be argued that the creation of a cross-platform UI was a waste of effort for the Mozilla developers.

This is not the first time this sort of thing has happened. Java is essentially dead on the desktop while it flourishes on the server. The problem, again, is the UI. In Java's case, the cause of the problem is obvious: Java is not simply cross-platform -- it is a platform. This is also the case with Mozilla to some extent.

Modern platforms (operating systems or otherwise) tend to provide their own UI toolkits. Many of them also specify a set of user interface guidelines describing the conventions that should be followed by applications on that platform, both in terms of appearance and behaviour. No two platforms have the same UI conventions.

The crux of the matter is this: The UI is part of the platform. In the case of Mozilla and Java, their "cross-platform" UIs are in fact parts of the Mozilla and Java platforms respectively. For this reason, cross-platform UIs are usually a contradiction in terms, and most attempts to create them are doomed to failure.