[Home] [Prev] [Next]


Implementation Architecture

Goals

The basic architecture behind the Interactive HTML design and implementation attempts to address the key issues identified previously, as much as possible. To this end, one of the primary implementation goals is to create a C-based library of routines which may be used to incorporate the system into other browsers, much like the World Wide Web Consortium's Reference Library. This library should be as portable as possible, among different browsers and different operating systems, and require as few changes as possible to existing browsers for them to make use of the library.

In addition, because there will never be a programming language that is the best for all domains and users and new better languages are always being developed, the library architecture should remain as neutral as possible towards the particular scripting language being used. While the actual implementation will have to choose a particular language, of course (in this case, Python), the library should be designed to isolate all of its language-specific components, so that new languages may be incorporated into it with as little trouble as possible.

Thus a high-level view of the Interactive HTML architecture and how it fits into the rest of the Web can be seen as:

[High-level Figure]

iHTML Library Design

The Interactive HTML library is divided into three major modules, which interact with each other and the rest of the system as shown in the following figure:

[Architecture Figure]

Generic Interface Module

The interface module is the component which defines the standard interface across all browsers and languages. It contains very little actual code, but rather is mostly involved with defining common data structures, function calls, and other details which the browser and language modules use as their sole means of interacting with each other.

Browser-specific Module

The browser-specific module factors out all of the functionality in the library which is dependant on the particular browser or operating system which it is running under. It is essentially composed of the actual implementations of the general library functions which interact with the browser or library. This includes, for example, library functions for manipulating the browser's internal HTML parse tree representation, rendering to its window, retrieving URLs, handling files, etc. The primary work involved in incorporating the Interactive HTML library into a new browser involves writing these interface routines so that the rest of the library may interact with the browser; once that it is done, only a relatively few number of hooks need to be added from within the browser back into the library itself. These means that most of the changes needed to incorporate the library may be kept fairly distinct from the internal guts of the browser itself, and localized within this module.

Language-specific Module

This module implements the back-end scripting language's interface with the library, and is where the majority of the library's code is located. There are relatively few parts of the standard inteface defined by this module [most of those involving calls to start and stop the interpreter, and hand off browser events for it to handle]; most of it instead is made of glue code between the interpreter and the generic interface to the browser supplied by the library, allowing scripts to manipulate the browser environment with their own higher-level constructs.


[Home] [Prev] [Next]

_________.oo_Q_Q_oo.____________________________________________
Dianne Kyra Hackborn <hackbod@angryredplanet.com>
Last modified: Sun Sep 29 20:43:28 PDT 1996

This web page and all material contained herein is Copyright (c) 1997 Dianne Hackborn, unless otherwise noted. All rights reserved.