Details
-
Improvement
-
Resolution: Unresolved
-
Major
-
None
-
1.5
-
None
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.
Attachments
Issue Links
- depends on
-
FLUID-4982 Implement "globally asynchronous ginger world" aka "wave of promises" allowing arbitrarily asynchronous progress through the ginger algorithm
-
- Reopened
-
-
FLUID-5045 Improve Model Transformation system to support transforms contextualised by IoC expressions
-
- Closed
-
- is depended on by
-
FLUID-4261 "Tag Singularity Problem" prevents expression of some component trees, especially in recursive cases
-
- Open
-
-
FLUID-4260 Implement system for multi-phased (per component), "one-pass" rendering of complex component trees (formerly, "antigens")
-
- Reopened
-