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
introduces security risks, so it should be avoided. Layer 1 is relatively simple
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 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