Versioning Infusion

Colin Clark colin.clark at
Fri Sep 19 21:20:05 UTC 2008

Hi everyone,

I'm digging into my last remaining task for 0.5: adding versioning  
support to Fluid Infusion. This will allow multiple versions of our  
JavaScript code to be loaded into the browser simultaneously, without  
causing conflicts.

Most JavaScript libraries suffer in portal or mashup environments. If  
two portlets require conflicting versions of the same library, things  
tend to break randomly. Since JavaScript gives us no modules or  
linker, we had to come up with a simple strategy based on the use of  

Here's a document that describes the process:

Component developers will get this versioning support nearly for free  
if the use the pattern outlined here:

When we tried to implement this feature for Infusion 0.4, we ran into  
one show stopper: our invokeGlobalFunction() approach--which allows  
for declarative function calling--leaked out of the closure scope,  
causing errors. I'll be modifying invokeGlobalFunction() so that it  
takes the current fluid variable as an argument. Here's an example:

(function (fluid) {
     invokeGlobalFunction("fluid.helloWorld", {
         fluid: fluid
}) (fluid_05);

Generally, only internal Infusion code will ever call  
invokeGlobalFunction, so this added argument won't affect component  
authors or users.

As always, feedback is appreciated,


Colin Clark
Technical Lead, Fluid Project
Adaptive Technology Resource Centre, University of Toronto

More information about the fluid-work mailing list