throbber
Computer
`
`Networks
`
`and
`
`ISDN Systems
`
`29 (1997)
`
`1507-1517
`
`Responsive interaction for a large Web application: the meteor shower
`architecture in the WebWriter II Editor
`Arturo Crespo a.*, Bay-Wei Chang b~l, Eric A. Bier b.’
`and Science Department,
`Stanford
`University,
`Gates Bldg. Ofice
`420, Stanford,
`CA 94305, USA
`bXerox Palo Alto Research Centel;
`3333 Coyote Hill Road, Palo Alto, CA 94304, USA
`
`‘Computer
`
`Abstract
`
`Traditional server-based web applications allow access to server-hosted resources, but often exhibit poor responsiveness
`due to server load and network delays. Client-side web applications, on the other hand, provide excellent interactivity at tbe
`expense of limited access to server resources. The WebWriter
`Il Editor, a direct manipulation HTML editor that runs in a
`web browser, uses both server-side and client-side processing in order to achieve the advantages of both. In particular, this
`editor downloads the document data structure to the browser and performs all operations locally. The user interface is based
`on HTML frames and includes individual frames for previewing the document and displaying general and specific control
`panels. All editing is done by JavaScript code residing in roughly twenty HTML pages that are downloaded into these
`frames as needed. Such a client - server architecture, based on frames, client-side data structures, and multiple JavaScript-
`enhanced HTML pages appears promising for a wide variety of applications. This paper describes this architecture, the
`Meteor Shower Application Architecture, and its use in the WebWriter II Editor. 0 1997 Published
`by Elsevier
`Science B.V.
`Application generators; Www; Meteor shower; Responsive interaction; Large Web application; WebWriter
`Keywords:
`architecture; Browser-based editor; Server-based WW?V applications construction; Web page generating programs;
`Direct-manipulating Web page editor; Server-based authoring tools
`
`1. Introduction
`
`1.1. The WebWriter application builder
`
`The WebWriter system
`the construc-
`[3] supports
`tion of simple
`interactive web applications without
`the need to learn HTML or CGI programming. Mod-
`eled after HyperCard
`[ 11, WebWriter allows
`the user
`to build an application as a stack of pages, where
`each page can contain
`text,
`images, buttons, and
`other
`form elements, as well as content computed
`
`crespo@cs.stanford.edu
`author. E-mail:
`* Corresponding
`’ E-mail:
`(bchang,bier}
`@parc.xerox.com
`
`on the fly by executing scripts. The user constructs
`the layout of each page of an application using the
`WebWriter II Editor, an interactive editor that runs in
`any browser
`that supports
`frames and the JavaScript
`language [8].
`the
`The user adds application behavior using
`WebWriter
`II Editor by writing
`scripts
`that will
`be run either on the server or in the browser. Users
`without programming
`experience can add behavior
`by selecting a built-in program and filling
`in details
`for that program. For example,
`the user can select
`the built-in
`file listing program and fill in a form
`to
`specify how to determine which
`files to list.
`In addition
`to the Editor,
`the WebWriter
`
`system
`
`0 1997 Published
`0169-7552/97/$17.00
`PII SO169-7552(97)00064-O
`
`by Elsevier
`
`Science B.V. All
`
`rights
`
`reserved.
`
`Facebook's Exhibit No. 1029
`Page 1
`
`

`

`1508
`
`A. Crespo
`
`et al. /Computer
`
`Networks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`the WebWriter Page Generator, a server-
`includes
`based CGI service
`that creates new pages as a
`WebWriter-built
`application
`runs. Because they use
`the Page Generator, applications produced by Web-
`Writer run as CGI programs on a web server and
`hence can be used from many platforms and in many
`web browsers.
`
`1.2. Increasing
`
`interactive pe$ormance
`
`The original WebWriter Editor was a CGI pro-
`gram so that every interaction with the user had to go
`to the server for processing. The interactive speed of
`the program was poor due to network delays, startup
`time of the server-side script, and whole screen re-
`draws at the client after each interaction.
`In addition,
`this solution was not scalable: as the number of users
`of the editor
`increases, the server becomes a bot-
`tleneck. This paper describes the architecture of a
`new version of the editor (the WebWriter
`II Editor)
`that overcomes these limitations.
`In this architecture,
`which we call the Meteor Shower Application Archi-
`tecture, both the web browser and the web server
`collaborate
`in
`the execution of the WebWriter
`II
`Editor. Operations
`that need high
`interactive speed
`are performed
`in the web browser using JavaScript,
`while
`the server executes only
`the operations
`that
`need server resources or that otherwise cannot be
`performed by JavaScript in the browser.
`The rest of the paper is organized as follows. First,
`we review related work. Then,
`to give context
`to
`the architecture discussion, we present the user in-
`terface of the WebWriter
`II Editor. We then describe
`what happens behind the scenes during a typical ses-
`sion with the editor, from starting the editor, to load-
`ing and modifying a web page, to finally saving the
`page. Having described the way the WebWriter
`II Ed-
`itor works, we generalize
`these ideas and introduce
`the Meteor Shower Application Architecture. Finally,
`we discuss the advantages and disadvantages of the
`model and give our conclusions and plans for future
`work.
`
`2. Related work
`
`There are many systems that divide an interactive
`application between a web server and a web browser.
`
`[5,2]. In
`One way to do this is to use a Java applet
`this case, very general programs written in the Java
`language are downloaded
`to a browser where they
`can interact at high speed with the user. We chose
`JavaScript over Java in the WebWriter
`II Editor
`for
`several reasons, including:
`(1) Browsers can already display formatted HTML.
`We did not want to duplicate
`this function-
`ality
`in Java. In
`the first place,
`it would be
`more work. In the second place, by using the
`browser’s formatting we take advantage of any
`improvements
`in that formatting without having
`to update our code. Finally,
`for users who want
`to preview
`their HTML
`page in a particular
`browser, our implementation
`allows them to do
`this just by running WebWriter
`in the browser
`in question.
`that building our control panel
`(2) We anticipated
`components as fragments of HTML
`would
`be less work than building
`them as calls on
`the
`java _ awt
`toolkit
`(Java’s Abstract Win-
`dow Toolkit)
`[6] or the subArctic user interface
`toolkit
`[4].
`(3) Java applets must specify a fixed rectangle as
`their size. We wanted to allow the user to resize
`the WebWriter editing
`region just by resizing
`the browser. This is easily done using frames.
`(4) By using JavaScript, we avoid the need to com-
`pile our code as we change it, so we can try out
`new versions of WebWriter very quickly.
`Our architecture
`is similar
`in some respects to
`that used by the Krakatoa Chronicle
`[7]. Like
`the
`WebWriter
`II Editor,
`the Krakatoa Chronicle down-
`loads a document
`(in this case a set of newspaper
`articles) to the browser which is then formatted at the
`browser for reading. Unlike
`the Krakatoa Chronicle,
`our system uses the native formatting capabilities of
`the browser, is implemented
`as a set of JavaScript-
`containing HTML pages, that are loaded into frames
`on demand.
`[9], a mul-
`is Netscape’s PowerStart
`Also similar
`tiple page, multiple
`frame JavaScript application
`for creating a home page. The constructed page,
`based on a small set of templates,
`is saved as a set
`of preferences in a browser cookie, and is recre-
`ated from
`that cookie on subsequent visits. Unlike
`PowerStart,
`the WebWriter
`II Editor provides di-
`rect manipulation
`editing, can create general web
`
`Facebook's Exhibit No. 1029
`Page 2
`
`

`

`A. Crespo
`
`et al./Computer
`
`Nehvorks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`1509
`
`forms and behavior, and uses
`pages that can include
`the server for file operations and large processing
`tasks.
`Other ways to provide interactive applications ac-
`cessible from
`the web include helper applications
`and plug-ins, using,
`for example Mosaic CCI,
`the
`Netscape plug-in API, or Microsoft Active X. As
`with Java applets, we rejected these methods because
`we wanted to take advantage of the HTML
`format-
`ting capabilities of the browser itself.
`In addition,
`plug-ins and helper applications must,
`in general,
`be written
`for a particular platform or browser; we
`wanted a system that would work on many browsers
`and platforms.
`
`3. The WebWriter
`
`II Editor user interface
`
`the architecture, we briefly
`Before describing
`present the main user interface elements of the new
`WebWriter
`II Editor. Fig. 1 shows a typical screen.
`The editor consists of
`five
`frames
`tiling
`the
`browser window (see Fig. 2). The
`top level page
`is invisible
`to the user; it contains the frameset (the
`HTML description of the sizes and positions of the
`five frames inside
`the browser window), the global
`JavaScript
`functions and data structures of the edi-
`
`tor. The title frame holds the WebWriter
`logo. The
`frame contains the page that is being edited.
`preview
`frame provides
`file and stack
`The general controls
`operations and cut/copy/paste editing. The object in-
`contains controls for inserting
`sertion controlsframe
`HTML elements. We refer to an HTML element
`in
`the preview frame as an “object”. The objecr proper-
`ties frame contains commands that are specific to the
`currently selected object.
`II Editor displays
`In editing mode, the WebWriter
`the current page as interpreted HTML
`together with
`images, called handles, as shown in Fig. 3.
`additional
`Handles are used to select an object; red handles in-
`dicate the currently selected object, and the blinking
`black bar next to the red handle is the insertion point.
`Selecting an object causes that object’s properties to
`appear in the object properties frame, where they can
`be examined and changed. To insert an object,
`the
`user selects it in the insertion control frame and fills
`in its properties.
`in the
`facilities available
`There are many more
`WebWriter
`II Editor, including
`those for copying and
`pasting HTML, managing multiple page applications
`(“stacks”), and specifying behavior to execute when
`buttons are pressed on the page. For a detailed
`description of the original WebWriter Editor
`from
`the user’s point of view, see [3].
`
`Fig.
`
`I. The WebWriter
`
`II Editor
`
`Facebook's Exhibit No. 1029
`Page 3
`
`

`

`1510
`
`A. Crespo
`
`et al. /Computer
`
`Networks
`
`ana’ ISDN Systems 29 (1997)
`
`1507-1517
`
`Top Level Page
`
`Title
`General Contml
`Object
`controls
`
`Preview
`
`Insertion
`
`0 bject Properties
`
`Fig. 2. WebWriter
`
`II Editor
`
`frames.
`
`*
`e The WebWriter Editora
`a*
`b What am bedoneh WebWxiterM
`**
`shapes)
`red
`and
`(grey
`Fig. 3. Handles
`(vertical
`black bar to the right of the word
`
`the
`and
`‘Editor”).
`
`insertion
`
`point
`
`4. The WebWriter
`
`II Editor architecture
`
`in order
`The WebWriter Editor was re-designed
`to improve
`its interactive performance and to reduce
`screen clutter. As mentioned earlier,
`the original
`WebWriter Editor was implemented as a CGI script,
`in which every handle selection and button press was
`handled by the server. The user then had to wait
`for network
`travel, CGI startup, and complete
`re-
`layout and redrawing of the browser window. Since
`the WebWriter Editor was designed as an interac-
`tive, direct manipulation
`application, nearly every
`click of the mouse incurred
`this delay. Exacerbat-
`ing the situation
`is the use by WebWriter Editor of
`many control elements surrounding
`the actual page
`elements being previewed - handles and insertion
`points approximately
`tripled
`the number of non-text
`
`in layout and display. Even when
`elements involved
`WebWriter was running on a local web server on
`a very fast machine,
`the delay caused by a simple
`interface operation
`(selecting a handle,
`for exam-
`ple) was still several seconds long. Although
`sev-
`eral seconds is acceptable for operations
`that users
`expect to require some computation,
`this is much
`slower than the near-instantaneous response for in-
`terface-level operations in typical non-web graphical
`applications.
`II Editor more usable, we
`To make the WebWriter
`focused on improving
`response time for interface op-
`erations, as well as improving
`the interface itself. We
`accomplished
`this in three parts: dividing process-
`ing, as appropriate, between a CGI script running
`on the web server and JavaScript functions running
`on the client browser; segmenting
`the interface into
`individually
`reloadable pages using multiple
`frames;
`and replacing
`images
`in place
`to reflect changes
`in state. The result is an editor
`in which response
`times for many operations are nearly instantaneous,
`and are comparable
`to those of standalone, non-web
`applications.
`
`4.1. Selectively dividing processing between server
`and client
`like JavaScript en-
`languages
`Browser scripting
`able dynamic behavior without the overhead of traf-
`
`Facebook's Exhibit No. 1029
`Page 4
`
`

`

`A. Crespo
`
`et al./Computer
`
`Networks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`1511
`
`II Editor
`fit over the network. The new WebWriter
`was designed to use JavaScript to provide fast inter-
`active behavior, resorting
`to the overhead of a CGI
`call only when server resources are needed, or when
`JavaScript cannot reasonably provide
`the behavior
`required. For example, computationally
`intensive op-
`erations may be technically
`feasible in JavaScript but
`run very slowly. In that case, the overhead of a CGI
`call (including network traffic and page redisplay)
`is
`worth the savings in processing time.
`II
`Of the 23 modules composing
`the WebWriter
`Editor,
`four of the modules are CGI scripts written
`in the Python programming
`language
`[lo] and run
`in the server. The remaining 19 modules are HTML
`pages enhanced with JavaScript. Only
`five of the
`HTML modules are active at once, one in each of the
`WebWriter
`frames.
`The CGI modules provide server-side services
`such as loading
`files, parsing HTML,
`saving files,
`and setting up the environment
`for the HTML mod-
`ules at start up. The JavaScript modules handle
`displaying
`the edited page in
`the preview
`frame,
`selecting
`the current object, editing and insertion
`of HTML
`objects, and copying and pasting of ob-
`jects.
`In the following sections, we will show how pro-
`cessing is directed
`to the server and to the client
`as these basic tasks are performed: starting the Web-
`Writer II Editor, loading and saving an HTML pages,
`and displaying and modifying
`the page.
`
`4.1.1. Startup: using the server to create the HTML
`environment
`II Editor by in-
`The user starts the WebWriter
`voking a CGI script at the server. The server-side
`CGI script creates an HTML page with three com-
`ponents: global JavaScript
`functions, calls to build
`the JavaScript global data structures, and the def-
`inition of the frameset, as shown in Fig. 4. The
`global
`functions provide an interface
`to the global
`data structures, and provide common
`functionality
`needed by all modules. The global data includes the
`document tree, which holds the elements of the page
`that the user is editing, and global status informa-
`tion such as the position of the insertion point. The
`frameset defines the position and properties of the
`frames, as well as the URLs of their
`initial
`con-
`tents.
`
`Fig. 4. The server
`and the component
`
`functions,
`downloads
`frames
`to the browser.
`
`global
`
`data structures,
`
`Server
`
`Browser
`
`him1
`
`Fig. 5. The server
`
`startup meteor
`
`shower.
`
`When the browser receives the HTML page gen-
`erated by the server, it interprets
`the page by run-
`ning the JavaScript function definitions, creating the
`JavaScript document
`tree and storing it at the top-
`level browser window. Then,
`it creates the frames
`and requests from
`the server the content of each
`frame, starting a “meteor shower” of HTML pages
`from the server to the browser, as shown in Fig. 5.
`The HTML page sent to a frame could be static
`HTML
`(such as the one used in the title
`frame)
`or an HTML
`page that includes JavaScript code.
`Pages with JavaScript code can collaborate with
`one another via global data structures and functions
`placed
`in
`the top
`level page of the browser. For
`example,
`the HTML
`page loaded
`in the preview
`frame contains a script that translates the document
`tree stored at the top window level into an HTML
`representation with handles.
`
`Facebook's Exhibit No. 1029
`Page 5
`
`

`

`1512
`
`A. Crespo et al. /Computer
`
`Networks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`Fig. 6. The general
`
`controls
`
`frame
`
`4.1.2. Loading and saving pages: using the server
`accessjles
`frame (Fig. 6) usually con-
`The general controls
`for operations such
`tains a module, general.
`html,
`files or cutting and past-
`as loading and saving
`ing objects. This module defines routines
`to per-
`
`to
`
`these commands and then describes the but-
`form
`tons in HTML. Each button contains a small piece
`of JavaScript
`that calls
`the associated
`function.
`For example, general.
`includes
`these two
`html,
`pieces, in JavaScript and HTML
`sections, respec-
`tively:
`
`function
`. . .
`<input
`
`Load0
`
`I
`
`. . . 1
`
`type=pe="button"
`
`value="Load"
`
`onClick="return
`
`Load0
`
`;">
`
`When the user clicks on a button, the JavaScript
`code associated with it is executed. The code can
`either execute locally, or it can ask the server to
`perform some service. For example,
`the “Hide Han-
`dles” button executes locally;
`first, a global variable
`is modified
`to change the display mode and then
`the preview frame is redisplayed
`to reflect the new
`mode.
`The “Load” button is an example of an operation
`that requires the help of the server. We need to ac-
`cess the server for this operation because files are
`located in a server accessible file system. When the
`user clicks the “Load” button,
`the browser pops up
`
`a dialog box asking the user to supply the URL of
`a file to load. The information entered by the user is
`sent to a CGI script that runs on the web server.
`The server tries to read and parse the URL spec-
`ified by the user. If this succeeds, the server sends
`a new frameset as in the startup process; but this
`time,
`instead of sending an empty document
`tree, it
`sends a representation of the document
`tree for the
`requested document.
`In fact, because the server is a
`Python program and the client is running JavaScript,
`the server encodes the document as a set of nested
`JavaScript calls to be interpreted by the client. These
`calls look like this:
`
`tr :ee =
`new CreateChild(new
`new CreateState('hl',
`'<hl>',
`'</hl>',
`new CreateChild(new
`new CreateState('text',
`'One Header',
`null,
`'text'
`
`)I,
`)I,
`\\ h 1 t\
`
`CreateObject(
`'hl'),
`
`CreateObject(
`",
`'text',
`
`null,
`
`'One Header',
`
`'italics',
`
`0,
`
`'bold',
`
`0,
`
`. . .
`
`)
`
`));
`where each CreateObject call adds a new object to
`the tree, and each object, in turn, may have children.
`The fragment above builds the tree for the document
`Thereaderneednotun-
`“<hl>One
`Headerc/hl>".
`
`derstand this code in detail, but can simply note its
`nested form.
`to loading a page. The user
`Saving a page is similar
`clicks in the Save button, which causes a JavaScript
`
`Facebook's Exhibit No. 1029
`Page 6
`
`

`

`A. Crespo
`
`et al.
`
`/Computer
`
`Networks
`
`and
`
`ISDN
`
`Systems
`
`29
`
`II 997)
`
`1507-1517
`
`1513
`
`to execute. The script asks the user for the
`routine
`URL
`in which the file will be saved. Then, the doc-
`ument tree is transformed
`into standard HTML and,
`with the URL,
`is sent to the server. The server does
`two operations when saving a file. First, it translates
`the URL
`into a filename, and then it stores the HTML
`as a file at that location.
`
`the HTML page: using the client
`4.1.3. Displaying
`to construct modified pages
`As described
`in the previous section, the docu-
`ment tree is a JavaScript data structure built when
`a page is loaded
`into
`the editor and stored in the
`root window. The preview frame generally contains
`
`html, which has three parts:
`module preview.
`(1) Definitions of JavaScript functions
`to walk the
`document
`tree and translate it into HTML
`that
`includes editing handles around each object.
`Using a tree data structure
`to represent
`the
`document
`improves program speed, because
`traversing this structure is faster than processing
`a linear string of characters in HTML
`format.
`(2) Definitions
`of JavaScript
`functions
`that are
`called when the user clicks on a handle.
`(3) A call
`to the JavaScript
`functions of part 1,
`which actually causes the new HTML
`to be
`written into the preview frame.
`So for example, preview. html includes:
`
`userdoc,
`function DocumentToHTML(framedoc,
`function OnClick
`(nodeID, objectPropURL)
`. . .
`DocumentToHTML(document, parent.userDocument,
`
`{
`
`showHandles)
`. . . 1
`
`{
`
`. . . )
`
`parent.showHandles)
`
`and the generated HTML
`
`includes handles such as:
`
`<a . . . onClick=ck="OnClick(264,
`<img src="left\-handle.gif">
`</a>
`
`'text.html');">
`
`the object being
`identifies
`where the number “264”
`is the name of the module
`selected, and “text.html”
`to load into the object properties
`frame in order to
`edit the newly selected object.
`to the document,
`After
`the user makes an edit
`the screen is redisplayed by calling
`the JavaScript
`) method on the preview frame. This up-
`reload(
`dates the display without requiring any significant
`interaction with the server (because preview. html
`is cached at the browser and the document
`tree is
`converted to HTML as the browser interprets pre-
`view.html).
`
`4.1.4.. Selecting an object and modifying its proper-
`ties: using the client for interactive response
`The first step for modifying an object is selecting
`it; to do this, we click on the handle that surrounds
`the object. This click
`triggers a JavaScript
`function
`that highlights
`the handles in red and updates global
`data structures to reflect the new current selection.
`The JavaScript code also loads into the object prop-
`erties frame the appropriate HTML
`file for the class
`
`of the selected object.
`The selection of an object is a small-scale meteor
`shower. Fig. 7 shows how the process is initiated
`in the preview frame, requesting
`the server to send
`the appropriate HTML
`file to the object properties
`frame.
`The final step of modifying an object is changing
`its properties. This is done through an interface that
`is object-specific. Similar objects can share the same
`interface, but the programmer can develop special-
`ized interface
`for some objects. For example,
`the
`text object has a specialized interface that allows the
`user to insert text and at the same time change the
`appearance of the text (see Fig. 8).
`The text object interface is a form that is initial-
`ized with the current properties of a text object. The
`user can modify
`those properties and then click
`the
`Done button. This triggers a client-side update of the
`document
`tree, generation of the new document view
`by reloading
`the preview frame, and replacement of
`the contents of the object properties
`frame with a
`blank page.
`
`Facebook's Exhibit No. 1029
`Page 7
`
`

`

`1.514
`
`A. Crespo
`
`et al. /Computer
`
`Networks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`Server
`
`(-$,
`
`Br awser
`
`Fig. 7. Editing
`
`an object.
`
`DoneJ
`
`~Italics nBold aKeyboard -fCode,
`Fig. 8. Text object
`interface
`
`4.2. Segmenting the inteeace
`
`frames that make up the WebWriter
`The multiple
`II Editor
`interface serve several purposes. Most im-
`portantly,
`frames separate the interface
`into areas
`that can be updated independently. One part of the
`interface can change by reloading
`its page with-
`out requiring other parts to be reloaded as well.
`For example, clicking on a handle to get its object
`properties causes a new page to be loaded in the ob-
`ject properties frame, but requires none of the other
`frames to reload. Reloading
`the minimum necessary
`is an important
`factor in reducing
`response times
`during user interaction.
`the editor
`in making
`Frames also play a role
`more usable
`in realms other than responsiveness.
`Since reloading a frame usually causes it to become
`blank before the new page is displayed,
`the frames
`
`which do not change provide continuity of context.
`The editor behaves more
`like a standard desktop
`application which has selective control over what
`changes in
`the interface.
`In addition, placing
`the
`preview area in its own frame allows very long pages
`to be edited conveniently. Since the frames scroll
`independently,
`the preview
`frame can be scrolled
`without affecting
`the layout of the other controls in
`the interface.
`point of view,
`Finally,
`from an implementation
`the program.
`segmenting
`the interface modularizes
`Each possible “state” of a frame
`is a JavaScript-
`enhanced HTML
`file. As illustrated
`in previous sec-
`tions, active modules (those that are currently
`loaded
`in the frames) communicate with one another via
`global data, and cause other modules
`to be loaded
`and unloaded
`into the interface.
`
`4.3. Replacing
`
`images in place
`
`the position
`Making a new selection or changing
`of the insertion point are extremely common opera-
`tions when editing a document, and thus should be
`performed as fast as possible.
`Handles
`in the preview frame are grey if uns-
`elected, and red if selected. Clicking on a handle
`simultaneously
`selects it and deselects the old selec-
`tion. In the original WebWriter Editor,
`this required
`a server round-trip
`to redraw the page appropriately.
`In the JavaScript-enhanced WebWriter
`II Editor, this
`could be handled by the client recreating
`the page.
`However, we made use of an even faster technology
`that exists in the current Netscape browser: replac-
`ing
`images of the same size in place, without a
`reload. This allows the highlighting
`to occur with no
`perceivable time lag.
`the insertion point
`The technique
`for displaying
`also benefited
`from
`this
`technology. The original
`WebWriter Editor placed a radio button at every valid
`insertion point within
`the previewed page. Radio
`buttons are controlled by the browser, so selecting
`one is essentially an instantaneous operation
`that
`does not require a trip to the server. However, making
`all possible
`insertion points visible as radio buttons
`clutters the display considerably. Additionally,
`it was
`sometimes confusing
`to have radio buttons serving
`as insertion points mixed
`in with bona fide uses of
`radio buttons in the web page being constructed.
`
`Facebook's Exhibit No. 1029
`Page 8
`
`

`

`A. Crespo
`
`et al. /Computer
`
`Networks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`1515
`
`this scheme was replaced
`clutter,
`To minimize
`with one in which possible insertion points are no
`longer explicit.
`Instead,
`the selected element deter-
`mines the insertion point. Now when the user clicks
`on a handle,
`that handle and its companion handle
`are replaced by red handles; in addition, one of those
`handles has a small bar next to it indicating
`the po-
`sition of the cursor. To make the cursor more visible
`and also more like a traditional
`text editing cursor,
`we used animated GIFs to make it blink
`(one of the
`only tasteful uses we’ve seen of blinking on a web
`page).
`
`5. The meteor shower application
`
`architecture
`
`-
`II Editor
`The architecture of the WebWriter
`multiple
`frames collaborating with one another via a
`browser scripting
`language and with the web server
`via CGI scripts -
`can produce web applications
`that “in spirit”
`remain server-based, yet are highly
`responsive. This model we call the Meteor Shower
`Application Architecture, after the meteor shower
`of pages that the initial CGI script places into
`the
`browser’s frames.
`in the
`relies
`The Meteor Shower Architectures
`functionality
`of the client browser and the server.
`The client browser provides processing
`for all in-
`terface operations,
`thereby ensuring short interactive
`response times. Since a Meteor Shower application
`is segmented
`into many
`frames, collaboration
`oc-
`curs among
`the frames as user operations
`in one
`frame cause other frames to update. Having many
`frames also limits updates to only those parts of the
`interface that require updating, potentially a signif-
`icant savings because reload times can be relatively
`lengthy compared
`to the timeframe of individual
`in-
`teractions. Furthermore,
`the client can use in-place
`replacement of images
`to indicate state changes,
`wholly bypassing
`the need to reload or regenerate
`pages.
`The server has three functions. First, it sets up
`the state of the client. Second, it provides the client
`with
`the programs
`it needs to run. And,
`third,
`it
`provides additional
`functionality
`(via CGI scripts) to
`the clients
`for operations
`that are either
`inefficient
`or impossible
`to do at the client side. This includes
`access to server resources as well as computations
`
`languages.
`for relatively slow scripting
`inappropriate
`The distribution of work in the Meteor Shower
`Architecture has the following potential advantages
`and disadvantages.
`
`5.1. Advantages
`
`l
`
`Improved performance. Because the code dealing
`with user interaction
`is in the client, we don’t
`incur any network delay communicating with the
`server. Additionally,
`because each client handles
`most operations
`locally,
`the contention
`for the
`server is not as severe as in the case of the pure
`CGI approach.
`0 Economics. There are two economic perspectives
`involved. First, by using the server for only the
`operations
`that are inefficient or impossible
`to
`perform on the client, we reduce
`the cost of
`maintaining
`the server. Second, by reducing
`the
`amount of communication
`between the browser
`and the server, we reduce the cost of communicat-
`ing through the network.
`l Scalability. The Meteor Shower Architecture
`makes supporting a large number of clients eas-
`ier than a traditional CGI approach. Again
`this
`is related to the available resources of the server
`and the bandwidth of the connection between the
`server and the browser.
`l Faster development. The Meteor Shower ap-
`proach can allow
`for
`faster development
`than
`writing applets since
`it can make use of the
`browser’s built-in
`capabilities, primarily
`the ca-
`pability
`to display HTML.
`In
`the case of the
`WebWriter
`II Editor, not only does the browser
`handle layout of all control areas, it also handles
`layout of the preview of the HTML page being
`edited.
`l Debugging. Because only a small number of mod-
`ules are running at the same time, and there is
`a very clear interface between them,
`finding a
`faulty module
`is easy. Additionally,
`the use of an
`interpreted
`language allowed us to test the modi-
`fications faster than with a compiled
`language.
`l Security. A well defined CGI interface the server
`and the browser, allows a secure environment
`to
`be maintained at the server side. Similarly
`the
`security safeguards
`in
`the browser maintain a
`secure client environment.
`
`Facebook's Exhibit No. 1029
`Page 9
`
`

`

`1516
`
`A. Crespo
`
`et al. /Computer
`
`Networks
`
`and
`
`ISDN Systems 29 (1997)
`
`1507-1517
`
`l Caching. Because browsers cache pages, both
`the appearance of user interface components
`(as
`HTML)
`and
`their behavior
`(as JavaScript)
`is
`cached, reducing still
`further
`the demands on
`server and network load. The client expect to in-
`cur a network delay for loading
`the HTML pages
`only the first time
`they are accessed; afterwards
`the pages should come from the cache.
`
`5.2. Disadvantages
`
`These advantages trade-off with problems arising
`from
`the distributed and interpreted nature of the
`Meteor Shower Architecture.
`Intellectual property. All of the JavaScript code
`l
`is shipped to the client, potentially giving away a
`significant portion of the source code. A competi-
`tor may copy this code and do reverse engineering
`to write the missing server-side code.
`is
`l Complexity. The Meteor Shower Architecture
`inherently more complex
`than the CGI model as
`it includes the challenge of a distributed architec-
`ture.
`the
`l Dependence on caching. As noted above,
`HTML modules of this architecture are cached.
`This can obstruct software development
`if the
`client holds on to a stale version of a module
`the
`developer is trying
`to modify and test. We work
`around th

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket