Improved rendering engine

Version 1

    Status

    Preliminary discussion.

    Introduction

    Portals, by their very nature, aggregate content from multiple sources. The rendering engine is at the heart of the aggregation mechanism that occurs before a page can be sent to a user and displayed. While GateIn's rendering engine is quite good, there is always room for improvement.

    Parallel rendering

    Portlets are more or less complex, requiring or not access to other, potentially slow, resources or even accessed over WSRP, gadgets could access remote data, etc. GateIn currently asks each markup source for its markup in sequence before aggregating the content, meaning that a slow source could delay the rendering of a page and increase the response time when other markup sources could be ready faster.

    It would therefore make sense to be able to ask content providers to send their markup using multiple threads so that content can be generated in parallel thus allowing content providers to generate their markup even if/when one of them is slow or waiting on external resources.

    Content push

    Another dimension of this issue concerns how information is sent to users. While content can be retrieved in parallel and then aggregated in a full page that is then sent to users, it is also possible to conceive a parallel rendering push engine that would send immediately send a skeletton page with placeholders instead of actual content as soon as the user request is received and then pushes markup from content providers as soon as it becomes available instead of waiting for all the content to be ready before sending a fully-rendered page.

    This second aspect is slightly more complex than simple parallel rendering because it will require client-side support to dynamically retrieve content and update the page once new content is available to be displayed.

    Specification

    Nothing at the moment, evaluation of technical aspects and risks needs to be performed.