PureMVC Architects Lounge

Announcements and General Discussion => Fabrication => Topic started by: Darshan Sawardekar on September 12, 2008, 02:51:59



Title: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on September 12, 2008, 02:51:59
Hi All,

I want to present a new PureMVC utility called Fabrication. The objective of Fabrication is to simplify the process of developing modular PureMVC multicore applications.

Fabrication is a collection of common ideas that I was using in applications built on top of PureMVC multicore. A Fabrication application is just like any other PureMVC application, with a few optimizations and shortcuts. It is based on the Pipes utility of PureMVC multicore, and some other related ideas I found in the open source video conferencing project, Blindside (http://code.google.com/p/blindside/).

I found that the Puremvc Facade's behaviour is common across most applications. A facade.startup(app:Object) call initializes the PureMVC apparatus, A startup command is registered with it to do bootstrap work. This process was common to almost all my applications. So I decided to create a standard Facade implementation with a StartupCommand registration and a STARTUP notification.

By eliminating the need for a concrete facade, the work of bootstrapping Proxies, Mediators, etc was shifted to the StartupCommand. Since this is common for all applications I implemented a FabricationApplication extending mx:Application. In the process I was also able to setup automatic multiton key generation. With Fabrication, the only thing needed to hook into the PureMVC apparatus is to override the FabricationApplication's getStartupCommand method. Sample code is below,

:
<?xml version="1.0" encoding="utf-8"?>
<fab:FabricationApplication
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:fab="org.puremvc.as3.multicore.utilities.Fabrication.components.*">

<mx:Script>
<![CDATA[
import myapp.controller.MyAppStartupCommand;

override protected function getStartupCommand():Class {
return MyAppStartupCommand;
}

]]>
</mx:Script>

</fab:FabricationApplication>
An important part of Fabrication is its support for modules. Fabrication comes with a custom FabricationModule class that extends mx:Module. It also bootstraps in the same way as a FabricationApplication, with the getStartupCommand() method.

FabricationModules come fitted with standard pipe fittings. However instead of creating manual fittings to establish communication between modules, a principle of routing is used. The routing metaphor eliminates the need to create JunctionMediators and the translation of pipe messages into internal module notifications and vice-versa. The corresponding mxml code for the module is,

:
<?xml version="1.0" encoding="utf-8"?>
<fab:FabricationModule
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:fab="org.puremvc.as3.multicore.utilities.Fabrication.components.*">

<mx:Script>
<![CDATA[
import mymodule.controller.MyModuleStartupCommand;

override protected function getStartupCommand():Class {
return MyModuleStartupCommand;
}

]]>
</mx:Script>
</fab:FabricationModule>

The module is loaded into the application using the FabricationModuleLoader which extends mx:ModuleLoader. Since typical configuration in modular applications is shell-module, the default communication route for the module is set to the shell. The module loading code is,

:
var moduleLoader:FabricationModuleLoader = new FabricationModuleLoader();

moduleLoader.url = moduleDescriptor.url;
moduleLoader.router = applicationRouter;
moduleLoader.setDefaultRoute(applicationModuleAddress.getInputName());

moduleLoader.addEventListener(FabricationModuleEvent.MODULE_INITIALIZED, moduleInitializedListener);
moduleLoader.loadModule();

The most interesting part of all this is the communication between module and shell. Instead of sending and receiving messages via the junction.sendMessage and handlePipeMessages, messages are routed as standard PureMVC notifications. To send messages to other modules you call routeNotification. And to receive messages from different modules you simply add the notification name in listNotificationInterests of your Mediator. Or instead you can register that notification name with a command. The routing code is below,

:
// to listen to a routed notification from the shell, in the module's mediators use,
override public function listNotificationInterests():Array {
return ["MESSAGE_FROM_SHELL"];
}

// and handle the notification as you would in PureMVC
override public function handleNotification(note:INotification):void {
if (note.getName() == "MESSAGE_FROM_SHELL") {

}
}

// to send a notification to the shell use,
override public function onClick():Array {
routeNotification("MESSAGE_FROM_MODULE", {foo:"bar"});
}

The routeNotification method has an additional 4th parameter, "to". Use "to" for specifying the module to which you wish to send the message. This method is provided by extending FabricatonMediator or via facade.routeNotification.

:
// to send a message to all modules, use *
routeNotification(noteName, noteBody, noteType, "*");

// to send a message to all instances of a specific module use, ModuleName/*
routeNotification(noteName, noteBody, noteType, "ModuleName/*");

// to send a message to a specific module use
routeNotification(noteName, noteBody, noteType, "ModuleName/ModuleInstanceID");

In summary to build modular Fabrication applications you need to do the following,

  • In the shell, extend FabricationApplication and implement getStartupCommand.
  • In the module, extend FabricationModule and implement getStartupCommand.
  • Mediators extend FabricationMediator.
  • To send notifications between modules use routeNotification.
  • To listen to routed notifications use, listNotificationInterests or map a command to that notification.

Fabrication also contains some other useful features like multi-level undo, routing firewall for controlling communication between modules etc. I will talk about some of these things in future posts.

I want to thank Cliff Hall for creating PureMVC. It has made my Flex programming much more fun. Also thanks to the folks behind the Blindside (http://code.google.com/p/blindside/) project. The routing principles mentioned above are adapted from Blindside.

Download the Fabrication utility here (http://www.codedrunks.com/wp-content/uploads/2008/09/fabrication_utility.zip).
Download the Fabrication routing demo application with the binaries here (http://www.codedrunks.com/wp-content/uploads/2008/09/fabrication_routing_demo.zip).
The live demo is here (http://www.codedrunks.com/wp-content/uploads/2008/09/fabricationroutingdemoshell.html).

I would love to get feedback from the community about Fabrication. Thanks.

peace,
darshan



Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: puremvc on September 15, 2008, 02:20:38
Darshan,

This is pretty cool stuff. I like the firewall/router concept. I won't have time to dig into this deeply just yet, but I'm sure others here will. I did peruse the code enough to see that it's definitely sound in concept.

I notice you've packaged it properly for the PureMVC utility space, would you like me to set up a repository and trac site? There is a backlog of this work, but I will get to it if you'd like to offer it up.

-=Cliff>


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Joel Hooks on September 16, 2008, 08:05:19
Wow. This is a really cool utility. I love the router/firewall metaphor. The undoable command structure is interesting also, and I would love to see simple examples of this stuff in action.

I want to thank Cliff Hall for creating PureMVC. It has made my Flex programming much more fun.

QFE


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on September 16, 2008, 10:11:23
Thanks all for your comments.

Joel,

I am working on sample applications to explain the undo/redo functionality of fabrication. It is like a series on different types of undo's that applications generally require. I will be releasing this in the next few days.

Cliff,

It was my intention to contribute Fabrication as part of the PureMVC utilities. If would be great if you can setup the repository and trac for this. With regards to the sample applications mentioned above, I have modified the EmployeeAdmin sample application from PureMVC standard demos to use Fabrication's undo/redo. Is it ok to release this? Should I send you the files first?

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: tinils on September 17, 2008, 03:57:09
Wow!..great work! Thank you for this.


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on September 18, 2008, 03:46:11
Joel, I have started the series on Fabrication undo's. Enjoy. ;-)

[1] : Fabrication Undo (Part 1) - Simple undo demo (http://www.codedrunks.com/index.php/2008/09/18/fabrication-undo-part-1-simple-undo-demo)

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Joel Hooks on September 19, 2008, 10:38:02
Awesome, thanks Darshan.

I have a question. I have several Air applications that I'd like to Fabricate. Should I just make a new class called FabricationWindowedApplication that mirrors the code in FabricationApplication but extends WindowedApplication instead? Do you think there is a better way to do this? I hate to repeat all the code, but I can't see another way.


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on September 20, 2008, 10:20:23
Joel,

Thats the good point, I hadn't thought of the different type hierarchy issues with Air. There is similar duplication in the FabricationModule and FabricationApplication classes, had ignored at that time. Extending a class with the Fabrication hooks is required and cant be avoided. I will look into refactoring some of the internals to prevent this duplication. I am thinking something on the lines of,

FabricationBootstrap
   < FlexApplicationBootstrap
   < AirApplicationBootstrap
   < FlexModuleBootstrap
   and possibly < FlashApplicationBootstrap also

Move the duplicate code into the Bootstrapping classes and implement different concrete bootstrappers as needed. The IRouterAwareModule interface will still need to be implemented by the main application classes like FabricationApplication, FabricationModule, etc, but this would be limited to calling methods on the bootstrapper instances. And it keeps open the possibility of using Fabrication with flash cs3 applications, something I have been meaning to address also.

:
public function acceptRouter(router:IRouter):void {
   bootstrapper.acceptRouter(router);
}

public function getModuleAddress():IModuleAddress {
   bootstrapper.getModuleAddress();
}

Sound reasonable? Your thoughts.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: diamondTearz on September 21, 2008, 06:36:46
WOW!   :o uh...Wowww!!  Okay so I spent my whole morning cursing and blessing Pipes and the associated utility(mainly because my brain was full and dizzy trying to get it) and I accidentally happened upon this!).
Thank you so much!!  I will get little to no sleep tonight messing with this but that's okay!!!   I can already tell it will save me countless hours in the future! ;D ;D


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on September 22, 2008, 09:20:58
Thanks diamondTearz, I am glad you like it. Fabrication just sets a convention using standard pipe fittings that works well for multi-module applications. It saves a lot of time due to the elimination of code to do message-to-notification and vice-versa.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Vernon Haughton on October 05, 2008, 01:22:26
Darshan,

Are there plans to create a version of Fabrication for AS3 only projects?


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Jason MacDonald on October 06, 2008, 06:13:03
Any PMVC Utilities that require the MX package makes us Flash CS3 guys sad programmers :(

I'm going to have a look through the code and see what I can do to adapt it to work with Flash... though I may have to rewrite a lot to be more like your example above (extending bootstrap) to get it to work.

EDIT: Now that I've looked through the code, there's just far too much code to go through and change while trying to learn how the utility works. Nice work anyways. I'll anxiously await a CS3 version. :)


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on October 08, 2008, 10:43:46
Hi Jasonmac, Vernon,

Fabrication isn't meant to be a Flex specific PureMVC utility. I realized a few errors in the design after the initial release. I have fixed a good part of these issues since. Like Joel suggested above, there wasn't very clean way to create custom fabrications for say flash, air, etc.

The basic premise of the refactoring is instead of FabricationApplication, FabricationModule, etc there are application context specific fabrications ie:- FlexApplication, FlexModule, AirApplication, etc. The internals have now been refactored to use an adaptor so there isn't much code duplication in the concrete fabrication classes. There is a clean breakup on the mediator side also with separate FlexMediator and a FlashMediator. And creating new fabrications is much easier with the ApplicationFabrication abstract class.

The refactoring is pretty much done, I am waiting on Cliff to setup the project SVN. Fabrication is getting much more stable now. Moving forward I want to avoid releasing arbitrary zip files on the blog. Just a little more time... ;-)

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Jason MacDonald on October 09, 2008, 06:59:10
Great news! Thanks for your hard work, it's appreciated. I can't wait to give it a go. Though it might have to wait till my next project since the one I'm doing now is under a tight deadline. :(


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: puremvc on October 09, 2008, 07:27:42
Thanks for hanging in there and continuin to improve the code, Darshan. I have about 12 projects queued to be set up right now. Since even one takes minimum half a day because of the sundry admin associated with it, I'm trying to do them all in parallel. I'm part way done with your setup, but not all the way. I'm busting it hard on the job this week to try and clear an extra day or half day Friday to get it going.

Fear not, the repo awaits in the near future.

-=Cliff>


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: puremvc on October 12, 2008, 07:42:46
Darshan,

Partway through setting up the projects, I find the routing demo needs to be refactored into the PureMVC namespace first. It would be helpful if you could give it a name, say FabRouting, and refactor the classes into that namespace.

org.puremvc.as3.multicore.demos.fabrouting.common.*
org.puremvc.as3.multicore.demos.fabrouting.shell.*
org.puremvc.as3.multicore.demos.fabrouting.simplemodule.*

Also, the Fabrication Undo demo, if you would like to put it in the repo should get the same treatment (i havent seen the code for it yet).

org.puremvc.as3.multicore.demos.fabundo.*

Thanks,
-=Cliff>


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on October 13, 2008, 07:52:13
Hey Cliff,

Partway through setting up the projects, I find the routing demo needs to be refactored into the PureMVC namespace first. It would be helpful if you could give it a name, say FabRouting, and refactor the classes into that namespace.

Thanks. I can do that, np. And yes the undo demo is also without a base package. I was trying to keep the package depth down in the demos. I will use the org.puremvc.as3.multicore.demos package for future demos.

About the repository, is it going to be a separate repository for the project and each demo? I was thinking of having one repository for everything with the below structure,

fabrication
   framework
      trunk
      branches
      tags
   examples
      fabrouting
         trunk ...
      simpleundo

Framework/trunk is the main line for the utility. Each example is under fabrication itself. I am not sure whether the trac integration would work with such a setup.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: puremvc on October 13, 2008, 12:58:09
Repositories are one per project. This is the way the site works now, and automated tools that are being built make it important that it stay that way.

Also, we will need unit tests for your classes and asdoc. Compare to the Pipes utility if you're unfamiliar with unit testing or just looking for the level of documentation to provide.

If actual development companies who must deliver sound architecture to their clients are to adopt such a framework as Fabrication, API docs and unit tests are absolutely necessary. Sure, there are no warranties expressed or implied, yada yada, but that doesn't absolve us of the need to provide this. Imagine if Flex had no ASDocs. (I'd like to see the unit tests, myself).

-=Cliff>


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on October 14, 2008, 08:37:00
Repositories are one per project. This is the way the site works now, and automated tools that are being built make it important that it stay that way.
Ok, thats fine by me.

Also, we will need unit tests for your classes and asdoc. Compare to the Pipes utility if you're unfamiliar with unit testing or just looking for the level of documentation to provide.
I have improved the asdoc usage in the code considerably since the initial release. Regarding unit tests, I haven't written any unit tests yet, but I did run the PureMVC unit tests to verify that I didn't break any PureMVC internals. Fabrication was initially for an internal project in my company. I was under some time constraints at that time. I will start writing unit tests for it in a few days.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: freakinruben on October 15, 2008, 02:56:28
Hi Darshan,

I've just implemented fabrication in my application and it works great (saves me a lot of headaches right now ::)), so thanks for that!
I was wondering why the proxy classes don't have a FabricationProxy so they can routeNotifications too. Is this a design choice you've made or something that isn't implemented yet. If it's a design choice, what solution is there for sending notifications from the proxy to other modules? (with a special command/mediator to handle proxyRoutes, I'm just bringing back the JunctionMediators)

I'm also curious what you think about the idea to store notifications that should be routed but can't be because there isn't a router connected to the module which sends the routeNotification. One module for example is routing some notifications to the log about what is happening in his initialization fase (in which he isn't yet connected...). As soon as the router will get connected, the stored notifications will be send along.

Thanks in advance,
Ruben


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on October 15, 2008, 06:27:50
Hey Ruben,

I've just implemented fabrication in my application and it works great (saves me a lot of headaches right now Roll Eyes), so thanks for that!
Cool, Thanks.

I was wondering why the proxy classes don't have a FabricationProxy so they can routeNotifications too. Is this a design choice you've made or something that isn't implemented yet.
It wasn't a design decision, I just hadn't implemented it at the time of the initial release. I have added a FabricationProxy since, and it does have routeNotification. ;-)

I'm also curious what you think about the idea to store notifications that should be routed but can't be because there isn't a router connected to the module which sends the routeNotification. One module for example is routing some notifications to the log about what is happening in his initialization fase (in which he isn't yet connected...). As soon as the router will get connected, the stored notifications will be send along.
This would be a hard to do this at the initialization phase of the module because the internal pipe fittings need to be created before routing can work. I recently refactored the bootstrapping code. Instead of accepting a router, you set the router on the module loader. The module looks up this router as part of its initialization and connects to it. I was debugging some stuff where i forgot to set router on the module loader. So I basically added a rule that the router must always be set on the module loader.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Jason MacDonald on October 15, 2008, 09:22:42
Any chance we can get a peak at the updated source code while we wait for it to be set-up in SVN? This is something I could really use in my AS3 project but waiting till it's in SVN might be too long for my project.

Again, great work and thanks for sharing this.


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: realien on October 16, 2008, 10:31:22
I'm using fabrication in a prototype and had 2 questions

1) I saw there is a repository for the Fabrication utility, but no track page yet that I can see, is there an offical trac page and svn for this now, as I'd like to be using the most up to date code ?

2) When I get a FabricationModuleEvent in my listener as a result of a FabricationModuleEvent.MODULE_INITIALIZED from the FabricationModuleLoader, the module property of the FabricationModuleEvent is null, so I have to get the event.target.loadedModule property, maybe this is correct, can you confirm ?

thanks
Grant.


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: puremvc on October 16, 2008, 10:44:27
Hi realien,

The Fabrication utility is in the process of being moved into the repository, but it's not all the way there yet. I'll post here as soon as its finished

-=Cliff>


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: realien on October 16, 2008, 11:57:29
thanks!


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on October 17, 2008, 07:41:59
Hi All,

I have release Fabrication 0.4 on Google Code[1] for the moment. Cliff, let me know when the repository setup is done and I will look into migrating things over. I think this is a big release for Fabrication and also for PureMVC development in general. Hope you like it.

[1] : http://fabrication.googlecode.com/
[2] : http://www.codedrunks.com/index.php/2008/10/17/fabrication-04-released/

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on October 17, 2008, 07:45:58
Jason,

What you are looking for is present in the 0.4 release. And the example you are looking for is here (http://fabrication.googlecode.com/svn/examples/hello_flash_with_module). Hope it was in time for your project.

Grant,

I am sorry, but things have changed with 0.4. You need to listen to FabricatorEvent.FABRICATION_COMPLETE. And you will get a valid reference to the event.target.module in this event handler. Check out the simple_routing example[1].

[1] : http://fabrication.googlecode.com/svn/examples/simple_routing

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: marks416 on December 02, 2008, 12:47:38
Please add some documentation like pureMVC so other can use it easily.

Thanks

Mark


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on December 02, 2008, 11:50:22
Hi Mark,

I am working on improving the documentation. I have added several pages to the wiki to get things rolling on this front. You can check out the below links.

peace,
darshan

[1] : Features (http://code.google.com/p/fabrication/wiki/Features)
[2] : Getting Started (http://code.google.com/p/fabrication/wiki/GettingStarted)
[3] : Using modules with Fabrication (http://code.google.com/p/fabrication/wiki/UsingModules)
[4] : Using reflexive notification interests (http://code.google.com/p/fabrication/wiki/ReflexiveNotificationInterests)
[5] : Using reflexive mediator registration (http://code.google.com/p/fabrication/wiki/ReflexiveMediatorRegistration)
[6] : Building Fabrication (http://code.google.com/p/fabrication/wiki/BuildingFabrication)


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: zermattchris on January 02, 2009, 03:55:41

I am working on improving the documentation. I have added several pages to the wiki to get things rolling on this front. You can check out the below links.

peace,
darshan

[2] : Getting Started (http://code.google.com/p/fabrication/wiki/GettingStarted)


Hi Darshan,

Hope I'm posting this in the right place!

Am trying to make my first steps with both PureMVC and Fabrication with AIR 1.5, but after [attempting to] following the steps in your Getting Started above, I'm getting the following error in Flex (3):

:
override public function execute(note:INotification):void {
        registerMediator(new HelloFabricationMediator(note.getBody()));
       
        sendNotification("now", new Date());
}

1180: Call to a possibly undefined method HelloFabricationMediator.   HelloFabrication/src/controller   

I've added the following libs to the project:
  • PureMVC MutiCore 1.0.5
  • MultiCore Pipes 1.1
  • Fabrication Air 0.5.3

I've copied/pasted the code from your Getting Started example for AIR

It almost looks like view/HelloFabricationMediator needs to be imported in the HelloFabricationStartupCommand, but if I add an import view.HelloFabricationMediator; (and the same to HelloFabricationMediator for the following error for respondToNow(note:INotification) ), I get a whole page of run-time errors when I try and run the app, starting with the line:

Error: Unable to perform reflection for classpath view.HelloFabricationMediator. Check if getClassByName is defined on the main fabrication class (and then a bunch more).

Wondering if you might have any ideas as to where I'm going wrong?


Cheers,
-Chris





Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on January 08, 2009, 07:29:38
Hey Chris,

Can you try adding the following method to your main mxml file.

:
override public function getClassByName(classpath):Class {
   return getDefinitionByName(classpath) as Class;
}

This code is needed with modules. The documentation assumes information that is mentioned in the later wiki pages. I will try to improve this. If you can post your source files I can provide move information.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: realien on January 21, 2009, 10:16:47
Is there a summary of what has changed from the first version of fabrication to this latest one?  I'm using the first version in a rather large project and need to evalute if we should upgrade.  The main issue we are having is modules not being unloaded properly but that could be more of a flex/garbage collection issue.  We implemented a group module loader that uses the fabrication module loader but loads multiple modules based on an xml file, maybe there have been fixed to the fabrication module loader we could do with ?

I'm surprised to see this is still not hosted within the pureMVC site/repository as a Utility. Not being rude, but it would be nice to see everything in once place in the same format as the other fine utilities.

Grant


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Jason MacDonald on January 21, 2009, 02:42:30
Here you go, Grant.

http://code.google.com/p/fabrication/wiki/ChangeLog


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on January 21, 2009, 11:50:58
Hey Grant,

Like Jason mentioned, the list of changes is here (http://code.google.com/p/fabrication/wiki/ChangeLog). 0.5 is the version to get with the fixes for the memory leaks. 0.5 was the biggest release so far and brought in the unit tests (http://fabrication.googlecode.com/svn/framework/trunk/bin/index.html) and fixes to some other reported bugs. 0.6 is the currently release with a Interceptors, Reactions and ModuleGroups.

When I started, Fabrication was just the routing layer on top of pipes. The scope of the project has since changed as I have added features that I think are needed to program in PureMVC in a more efficient manner. Initially I tried to do things from a pov of a PureMVC utility. However features like Reflexive Mediator registration and Interceptors can not be done without extending the core PureMVC actors.

Fabrication will continue on this path and add any features that are useful to general PureMVC development. I will maintain compatibility with PureMVC and any of its utilities as long as it makes sense. Nevertheless It would be nice to be officially linked from the PureMVC site. It is released under the Apache license, and any code contributions are welcome. ;-)

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: allumbra on January 28, 2009, 02:08:25
Hello Darshan,

With regard to licensing, do you have any intent of aligning Fabrication licensing with PureMVC?  To use fabrication in our business, we will have to make two separate requests to our company's OSS review board.  Ideally, it would be best to deal with one license for pureMVC libs and all related utilities and derivatives.

Cheers,

Benjamin


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: Darshan Sawardekar on January 29, 2009, 02:43:53
Hi Benjamin,

Fabrication is released under Apache 2.0 because this was a requirement at my company. Creative Commons is not suitable for software is what I was informed. Apache 2.0 is what I was asked to use. It is unlikely that I would be able to change the Fabrication license to Creative Commons. Sorry.

peace,
darshan


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: zermattchris on May 10, 2009, 10:40:15
Hi Darshan (and Cliff!),

Just digging through the combo PureMVC & Fabrication apps, examples and docs, and was just thinking that if one of you (or several) gurus decided to put together a book on building advanced apps (Flex, AIR) with PureMVC & Fabrication, I would be the first to buy it (along the lines of Manning's *Groovy in Action*).

Something about having a nice thick computer book to fall asleep to -- somehow it sinks in more quickly than sniffing through all the scattered and disjointed pieces that one finds online.

Irregardless of book idea, the combo of AIR, Flex Builder, PureMVC & Fabrication looks to be the answer to my prayers! A great big thank you for taking the time and energy to make this stuff happen :)

Cheers,
-Chris


Title: Re: Fabrication - Simplified PureMVC multicore modules
Post by: arisco97 on June 12, 2009, 01:41:38
Multicore and Pipes is a great offering, however PureMVC continues to push the 'duanting at first sight' even more with multicore. The Fabrication implementation simplifies this, and should get as much attention as the Multicore. I hope Cliff and all the smart developers move this ahead. 

Thank you.