History will record that the original Mosaic browser was the pivotal technology in the Web revolution, but as the Web has continued to evolve, many observers have opined that browsers have not kept pace. The Gecko development team addressed this issue by baking evolution right in to the system's interface-oriented design. A number of key insights into Web trends resulted as well.
The first major insight proffered by the Gecko team is the mandate to clearly separate the stylistic, structural, contentual, and behavioral components of a document. Graphic designers acknowledge that the ability to independently vary presentation along these four dimensions is fundamental to great design. This observation is relevant to both document and user-interface design.
Separating (and dynamically recombining) the stylistic, structural, contentual, and behavioral aspects of a document allow for richer, more effective presentations. This approach offers the same kind of runtime benefit that late binding offers to object-oriented designs. The system defers resolving the necessary information until the last possible moment, an approach that offers the greatest flexibility since more information is available. This insight also provides the key to high performance. By independently varying stylistic aspects from contentual ones, it's possible to apply changes in one dimension that don't affect the other. As a result, document reflows occur in a more controlled manner, offering a good opportunity for performance optimization. This critical capability (amongst a handful of others) will allow developers to build document editors on top of the Gecko engine.
The second major insight of the Gecko team is that layout is primarily a style issue; it's only secondarily a geometric issue. Consider this: Before the layout engine can determine how big a page element is geometrically, it must first resolve a considerable number of stylistic questions. What font sizes are required? What are the capabilities of the output device? What "look" are you trying to achieve? These stylistic questions are resolved and converted into the data used by the layout process as it determines the geometry necessary to represent your document.
The third insight is that the layout of a document is fundamentally no different from the layout of a user interface. If you stop to consider it, both use style, and both result in the production of a geometric hierarchy of flow objects. By judicious use of these capabilities, Web developers will further blur the lines between Web documents and full-fledged software applications. Netscape itself will use these features to build the user interface for its own next-generation products.
Gecko's fourth insight is that as the Web matures, developers are going to rely increasingly on their documents being well formed. XML, DOM, CSS, and much of the HTML 4.0 specification presume well-formed documents (though they often omit concrete details on how to achieve such a goal, or how to deal with badly formed content). As a result, the Gecko engine does its utmost to ensure that its internal content models are also well formed and rationalized.
The fifth and final insight is a philosophy shared by members of the development team that says, "Design to 200 percent but implement to 75 percent." It means that you must take into account both current and future needs when designing software systems. Thinking the design through means you stand a far better chance of getting it right, even if you don't have time to implement the entire design (and no one ever does). When you do eventually get time to revisit the design, you will find that you can make improvements much more quickly and cohesively. -- Rick Gessner