Thursday March 11 , 2010

Imajn Modular Client Platform

Imagine modular Flex and AIR development with no messy plumbing, and you don't have to write the desktop or web container.

With Imajn, Futurescale and its Danish partner Ahead have taken Modular development for Flex and AIR to the next level.

  • The Ahead Framework provides an API for creating an application as a configurable set of collaborating modules.

  • The Imajn Desktop and Web Clients provide intelligent, configurable containers for deploying your Ahead-based modules.

Addressing the Challenges of Modular Development

The chief problems that all architects face when creating modular applications of any sort are:

  • Figure out what responsibilities each module (and the main app) should assume.
  • Figure out how to load the modules and what to do with them once loaded.
  • Figure out how set up the communications between the modules.
  • Figure out the protocol for exchanging data between the modules.

Configure Racks of Apps, Widgets and Adapters

Together, Ahead and Imajn address all these standard issues for you.

  • There are three basic Ahead module types: Apps, Widgets and Adapters. Their roles are very clear and make it easy to understand how to distribute the responsibilities across modules.
  • Ahead introduces the concept of Racks into which modules are loaded. Each module type's Rack  maintains a configurable-sized instance pool for quick access at runtime.
  • Imajn activates and plumbs the modules automatically - as needed - according to a simple XML configuration. In the configuration, each App module is associated with some Action, each Widget is associated with some Task and each Adapter is associated with some service.
  • Ahead defines a basic message protocol for each module type which is sensible for most any implementation. Of course you can extend these protocols as needed, but out of the box, your modules will have a simple, straightforward vocabulary for communications.

Actions, Tasks and Services

An 'application' from the standpoint of Imajn is a set of modules collaborating to respond to some Action. Inside the Imajn container, Actions trigger Apps, which use Widgets to complete various Tasks and Adapters to communicate with Services.

The Imajn Web and Desktop Clients offer two containers into which you may deploy modules. Either Client has the capability of running multiple instances of your 'application' simultaneously.

When the Imajn Client is told to perform an Action (for instance, viewing a particular set of pictures in a Flickr user's account), an App is activated to handle this. When the App is activated, it requests that an Adapter for the Flickr Service be attached to it. When the Adapter is attached, the App sends the request to get the user's picture set. When the Adapter returns this to the App, the App may then request one Widget for each picture for the Task of displaying that picture and letting the user interact with it. Imajn will dutifully retrieve and connect all the Widgets to the App. The App can then pass an the image to each Widget.

PureMVC MultiCore Based

Ahead and Imajn are based on the MultiCore Version of the PureMVC Framework for the Flash Platform.

PureMVC MultiCore has become an industry standard for creating modular applications on the Flash Platform. It allows multiple independently created modules to interact with each other in the same virtual machine with the main application; each being an isolated PureMVC core. For maximum separation of interests, cores can communicate with each other by sending and receiving messages through pipelines using the MultiCore Pipes Utility.

Imagine What You Could Build

  • A game engine for which free or monetizable games can be published.
  • A modular music creation platform with oscillators, filters, envelopes, samples, sequencing, etc.
  • A 3D package with viewports, procedural modeling, animation, channel editing, etc.

And modules from these various projects might also work together. For instance the game platform might use modules from the music platform and the 3D platform. Developers could easily contribute to any project, by simply creating useful new Widgets modules for useful tasks.

Futurescale and Ahead plan to open a module store as a central place to offer and download modules for Imajn. And since the Imajn Desktop Client uses Zarqon for License control, developers selling their modules through the module store will can be sure that only users with a valid license for their modules can use them.

Moving Ahead

Ahead.com

When the founders of Ahead contacted Futurescale and described the application they wanted to build, it was clear that their needed to be a way for PureMVC to handle modular development.

The result was PureMVC MultiCore, and both companies felt that it was something that should be open source rather than proprietary. So MultiCore and Pipes were created and released to the community where they were immediately improved and hardened through the 'many eyes' principle.

For the next six months, Futurescale worked feverishly to build a powerful but generic framework atop PureMVC MultiCore to support development of Ahead's phenomenal next generation CMS application.

Coming in Q2

The Ahead Framework is free but not open source; and you may use it to create applications for any non-commercial purpose. A commercial license is available from Ahead.com.

The Imajn Modular Client System is a product of Futurescale and is also free but not open source.

Third-party modules deployed into the Imajn Modular Clients may be licensed by their respective owners.

Imajn - Coming Soon

Soon we will be opening the beta program with a limited number of PureMVC AS3 MultiCore Developers. If you have experience with MultiCore and would like to 'move ahead' to the next level, then why not...