Frequently Asked Questions (FAQs)

Please note:

FAQs are moved to This page will no longer be updated with upcoming releases.

What is the size of the framework?

fluid is built with plugins and features. Yes, you read it right. Whole framework is a collection of core plugins and features. Therefore size of the framework really depends on what all plugins and/or features you want to include and what not. The build engine bundled with the framework gives low level control to include or exclude individual or a group of plugins (as per context).

Plugin I understand, what is a Feature?

'Plugin' is an independent piece of code that attaches itself to the root of the framework and once loaded it is available via a reachable object. Almost all frameworks have the same meaning of a 'Plugin'. Many a times, the concept of extension dies here in 'Plugins' world. If you need more, you need to write another 'Plugin'.

fluid goes one level down here and introduces 'Feature'. A feature is a mini-plugin that can extend a 'Plugin' or even another 'Feature'. It is defined like a plugin, but when loaded, it gets merged into target plugins. Yes its 'plugins', which means, same feature can be attached to multiple plugins at once. Even though it is merged in a plugin dynamically, it can be individually checked for its presence and conditional code can be written accordingly.

What are packages?

In order for framework to work correctly for a certain functionality, core plugins are grouped in few packages. These are:
  • Kernel: Includes plugins and features that form the core infrastructure of the framework.
  • Core: Includes 'kernel' and set of plugins and features that form the core of vision for which fluid is being written.
  • Custom: Includes 'core' + any other plugins and features of choice, as made during build time.
  • Full: Includes everything, excluding plugins and features of choice, as made during build time.

Why would I ever need to use 'kernel' or 'core' packages?

'Kernel' and 'Core' packages can form basis of some other framework that you want to write. So you get a stable infrastructure which can handle static and dynamic loading of plugins and features. On top of it, you can decide what you want to build.

What is 'portableApp'?

fluid provides several deployment options. 'portable app' mode is one of them. This is the default build mode also. A portable app runs anywhere a browser exists. No server or Internet is required, the whole app can be copied locally (or made to download as a zip from server) on computer or on a USB. Just open the start-up html of the application in any browser of your choice and everything works inside browser.

Why JRE (Java Runtime Engine) is required?

In case of 'portable app', all application files are stored on local file system of computer or on a USB. To maintain state of the application across browser refresh and to store data locally - without getting tied to the browser implementation (e.g., WebStorage, WebSQL, etc. stores data within browser reach only, cannot have it on USB or elsewhere) - fluid needs to access local file system where the application is running. For this, it is programmed to use variety of drivers such as FileSystemObject (FSO) on Internet Explorer, XPConnect API on FireFox and bundled Java applet (fsa.jar) on Google Chrome.

For various reasons, at the moment Java applet is set as primary driver and therefore JRE is required.

What if I don't want framework to access local file system (and therefore get rid of JRE)?

In that case, you can use a different deployment mode (other than 'portableApp') and set 'isEnableLocalFileSystemAccess' option to false. This will exclude JRE dependency altogether.

As of current build (v0.1.500) though, only 'portableApp' mode is stable and therefore you need JRE for the time being. Soon, when all deployment modes are available, this dependency would go off.

Last edited Apr 14, 2013 at 4:18 AM by vikasburman, version 10


vikasburman Feb 18, 2013 at 3:18 AM 
@johnhaite: Thanks for the question. I have added it in FAQ above. In nutshell, JRE is required only if you are using 'portableApp' deployment mode. This dependency is optional and can be turned off as suggested above.

johnhaite Feb 17, 2013 at 5:09 PM 
why is JRE required?