Architecture

This page describes the layers of the current concept for the Mashweb.Club architecture. This architectural concept is for a system called “Zen”—a mostly JavaScript library. Each of these layers has some sort of prototype implemented except for layer 7.

Layer 1: The Creator Function

Layer 1, the lowest layer, implements a generalized version of Douglas Crockford s object-creator function. This makes the new operator unnecessary, so that Layer 2 does not need to invoke eval. The use of eval introduces security risks, so it should be avoided. Layer 1 is relatively simple and complete.

Layer 2: The Structure Creator

Layer 2, the next-to-lowest layer, implements a recursive object-creator function to construct nested objects to match literal, declarative-style descriptions. The declarative style of programming enables automated manipulation and persistence. Layer 2 exists but needs to be re-examined for a possible rewrite or refactoring.

Layer 3: Suspended Animation

Layer 3 is an unusual JavaScript event handler that masks out JavaScript events (putting the web page into “suspended animation”) and adds event handlers to implement an “Edit Mode”. A version of Layer 3 is ready to be shared with programmers.

Layer 4: Web-Page Components

Layer 4 implements polymorphic web-page components, i.e. objects of different types having methods of the same name but tailored to type. For example, objects representing plain HTML elements and objects representing Dojo widgets have methods of the same name so both these kinds of object can be treated uniformly. This uniformity allows the visual behaviour of both types to be mixed together in the DMI of Layer 5. Eventually the set of polymorphic methods will include methods like undo, move, delete, delete recursively, and copy. A version of Layer 4 exists but will be reworked to favor the use of Web Components.

Layer 5: Direct Manipulation

Layer 5 implements a direct manipulation interface (DMI) that allows a user to drop components (often components with visible behaviour) into a web page; set and adjust their attributes like foreground and background colours, width, height, etc.; move them around within the hierarchy of mixed-type components (if necessary, using some kind of suitable visual representation of the hierarchy such as a tree widget or organization chart); clone them; delete them; etc. These operations use Layer 4 methods. Layer 5 is the part of the Mashweb architecture that has received the most attention recently. Very early prototypes of parts of the interface are ready to be shared.

Layer 6: Wait( ), Get( ), and Put( )

Layer 6 will implement first-class continuations and use them to build “system calls” for waiting on timer events and for getting or sending I/O asynchronously to or from the user or the stateless web (HTTP) protocol. This should allow web applications to be programmed as straightforwardly as native desktop applications, using sequential programs rather than the complex state machines that usually direct the action in web applications. Mashweb.Club is ready to share a prototype of continuations that can sequence discrete user inputs.

Layer 7: Visual Programming

Layer 7 will implement visual programming, based upon an underlying, invisible dialect of the Lisp language running on top of JavaScript. (Using Lisp underneath the visual layer enables easy, programmatic manipulation by Mashweb.) The hierarchy of program blocks will be represented by boxes within boxes within boxes … .

Contact Us

tom@mashweb.club