Version 7

    Mojo

    GateIn 4.0 leverages the service architecture of GateIn 3.x but provides a completely new web architecture

    • Stateless design
      • Friendly and bookmarkable URLs
      • First class browser support : browser back button and multitab
      • Improved scalability
    • Low latency advanced rendering engine
      • Parallel rendering
      • Guaranteed page rendering time
      • Big pipe technology

    A few backend services are improved

    • Plugable datastore (currently JCR, In memory and MongoDB)
    • Portlet 3.0 support

    Links

    Deployment is simplified as GateIn will come as a single web application file.

    Specification

    This document specific GateIn 4.0 development, for now it is purposely a generic container. When complexity and content will grow, it will be modularized in several pieces.

    Page Editor

    Current page editor prototype is a Single Page Application (SPA) written with Backbone.js MVC technology:

    • session state is managed fully on the client
    • data exchanged between the client and the server is in JSON format

    Entering edit mode

    At any time the user can enter the edit mode to manage the page and its content. When doing so, the client side will manage 2 (and perhaps more) versions of the page:

    • the initial page: it can be used to revert to the initial state but most importantly it can be provided along with an updated version in order to make a three way merge on the server.
    • the current edited page

    Leaving edit mode

    Edit mode can be left either by saving or cancelling the current edition.

    Leaving and saving

    When the user saves the page there are several cases to consider:

    1. The original page was not modified since the user edited the page (i.e the original version and the actual server are the same)
    2. The original page was modified since the user edited the page
      1. The user decides that its new version overwrites the current version whatsoever
      2. The two pages can be merged and the user decides to merge with the concurrent changes locally and save later
      3. The two pages cannot be merged and the user decides to redo his work based on the new document