The New Framework And What It Means To You

Antranig Basman antranig.basman at
Tue Feb 19 19:38:29 UTC 2013

Our community meeting tomorrow will cover the recent changes and improvements to the framework, most 
recently visible through the merge of the long-term FLUID-4330 branch over the weekend (thanks, Michelle!), 
talking over our evolving recommendations on best practices for component development, as well as 
highlighting various APIs and aspects of manual workflow that will be deprecated over the next framework 
release or two.

Although the headline JIRA for the branch is FLUID-4330 (the "globally ginger world"), this merge resolves a 
large number of other framework issues which I will list here. In fact, it should resolve almost every 
significant framework-related JIRA that is not related to our renderer component infrastructure, which is 
targetted for the next work cycle. In the meantime there will also be work to bring all of our historical 
components up to modern standards, in preparation for deprecating the less general and more awkward 
framework features that they relied on. The prototypes for this process are

i) The Reorderer, which has already been committed in a version no longer using the non-standard workflow 
involving the features "reverse merge", "global options" and "returned options" which have themselves now 
been removed from the framework.

ii) The Uploader, for which I now have a branch FLUID-4916 which no longer uses the non-standard IoC feature 
"fluid.alias" which has likewise been removed from its branch. Work continues on this component to remove 
all use of manual component initialisation. This work is described by FLUID-4919

iii) UIOptions, the next target for refactoring - by this point (mid-2011) we had tired of adding new 
framework features just to "explain" the activity of a particular component and its manual options merging 
workflow was deliberately kept "ad hoc" and not incorporated into the framework. This manual code can now be 
rewritten in terms of the "Luke Skywalker options system" ("IoCSS") under FLUID-4873 as well as modernising 
the code in various other ways which will make it much easier to work on by ourselves and our partners.

iv) .. xxx) Work will continue on our lower priority and older components as time permits - in particular, 
InlineEdit, Progress and the Pager need to be brought up to at least the standard where they no longer rely 
on old-fashioned manual instantiation schemes ("initView", "initSubcomponents") etc. in preparation for 
removing these features from the framework.

Here are the list of JIRAs believed resolved by the currently merged branch:

FLUID-4330 - "Globally ginger world" breaking time dependence of options merging
FLUID-4392 - Additive demands blocks - also duplicate FLUID-4130
FLUID-4636 - Nickname of components is not responsive to all sources
FLUID-4733 - Default value merge policy is inadequate default
FLUID-4873 - IOCSS aka Luke Skywalker options
FLUID-4709 - can't bind to invokers with listeners
FLUID-4192 - "broken trees" - instantiator corruption through unrelated instantiation
FLUID-4707 - No match on mismatched context names - also duplicate FLUID-4634
FLUID-4332 - Superfluous instantiators created through some paths
FLUID-4236 - Merging between decorator and demands block options
FLUID-4114 - mergePaths mishandling {options}
FLUID-4129 - detect mergePolicy from outside defaults
FLUID-4631 - argument transmission for events via demands blocks
FLUID-4540 - can't resolve a listener with an expander
FLUID-4914 - match any grade name as context name
FLUID-4918 - new facility for "members" incorporating top-level material

Underway in the Uploader branch is also
FLUID-4916 - dynamically resolved gradeNames
FLUID-4917 - "demands block horizons"
as well as various improvements to the ProgressiveEnhancement system.

an important holdout is

FLUID-4334 - refreshView is not created in a timely way

this is a crucial part of the upcoming work that will begin to focus on our renderer infrastructure.


More information about the fluid-work mailing list