FLUID-5047: Implement "new Renderer" eliminating renderer component trees and protoTrees in favour of newly graded standard IoC component trees

Metadata

Source
FLUID-5047
Type
Improvement
Priority
Major
Status
Reopened
Resolution
N/A
Assignee
Antranig Basman
Reporter
Antranig Basman
Created
2013-06-11T13:29:30.220-0400
Updated
2021-09-09T08:18:23.057-0400
Versions
  1. 1.5
Fixed Versions
N/A
Component
  1. IoC System
  2. Renderer

Description

The Fluid Renderer system, constructed by direct translation from Java code forming the "RSF Renderer", has increasingly come to be seen as a source of confusion and fragility. The JSON dialect(s) that it operates are hard to write, and increasingly we have come to see that facilities provided in the Renderer are more properly, powerfully and usably supplied within the JSON dialect operated by the IoC system and graded defaults scheme for standard Fluid components, which did not exist when the renderer was first written.

We should eliminate the JSON dialects parsed by the Fluid Renderer entirely from direct use in client code, instead providing a facility where arbitrary rendering effect can be achieved by writing standard Fluid components in an IoC tree, some of which will be in direct correspondence with the old Fluid renderer types e.g. UIInput, UISelect etc.

Initially this implementation will work by translation - as part of FLUID-4260, the framework will automatically construct a standard "renderer component tree" which will then be fed to a standard invocation of the old renderer. Over time, we plan to be able to remove the majority of implementation code from the "old renderer" entirely (e.g. primitives for looping and branching through templates, which can be seen as a limited and cumbersome implementation of the more powerful directives available in the IoC system itself - branching -> type/grade resolution for FLUID-4916, FLUID-4932, etc., looping -> FLUID-5022).

This work will allow the resolution of a number of Renderer goals written up separately under various heads - e.g.

FLUID-4260 "Renderer antigen" support
FLUID-4261 "Tag singularity" problem caused by mismatches between component structure and template structure
FLUID-2962 Arbitrary allocation of rendering work between server-side and client side
FLUID-4189 Expanded renderer component workflow

This work will also be assisted by FLUID-5045 which will allow Model Transformations material to appear in a general IoC tree, as well as enabled by FLUID-4982, the "asynchronous ginger world" which is required to allow template references to be freely interleaved amongst the component tree for FLUID-4260.

Comments

  • Antranig Basman commented 2021-09-09T08:18:23.057-0400

    Note that the work plan listed in this JIRA is extremely old. In practice we did not work by translation and produce old-fashioned renderer trees from new renderer components - instead the new renderer currently in https://github.com/amb26/new-renderer-demo/blob/FLUID-5047 fabricates the new DOM tree directly from the component tree without any intermediate representation.