<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Flex Frameworks: Nothing But Pain?</title>
	<atom:link href="http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/</link>
	<description>Winning At Yelling</description>
	<lastBuildDate>Wed, 09 Nov 2011 16:13:16 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Maxim Porges</title>
		<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/comment-page-1/#comment-181</link>
		<dc:creator>Maxim Porges</dc:creator>
		<pubDate>Tue, 20 Nov 2007 22:21:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.maximporges.com/?p=53#comment-181</guid>
		<description>Yeah, I&#039;d love to. I have to get the speaker form back to the cf.o() guys so I can be confirmed to speak about something. I was going to do my usual Java fare at the very least, or maybe talk about open source ESB-ing with Mule.&lt;br/&gt;&lt;br/&gt;Really, I wanted to wait until we had a production example of the Flex no-framework perspective, but I&#039;m sure it could be an interesting talk nonetheless. We&#039;ve got enough sample material to make the point.&lt;br/&gt;&lt;br/&gt;And as I&#039;ve said in the past, I&#039;m not sure I want to be the Flex version of Simon Horwith...&lt;br/&gt;&lt;br/&gt;- max</description>
		<content:encoded><![CDATA[<p>Yeah, I&#8217;d love to. I have to get the speaker form back to the cf.o() guys so I can be confirmed to speak about something. I was going to do my usual Java fare at the very least, or maybe talk about open source ESB-ing with Mule.</p>
<p>Really, I wanted to wait until we had a production example of the Flex no-framework perspective, but I&#8217;m sure it could be an interesting talk nonetheless. We&#8217;ve got enough sample material to make the point.</p>
<p>And as I&#8217;ve said in the past, I&#8217;m not sure I want to be the Flex version of Simon Horwith&#8230;</p>
<p>- max</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: seancorfield</title>
		<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/comment-page-1/#comment-180</link>
		<dc:creator>seancorfield</dc:creator>
		<pubDate>Tue, 20 Nov 2007 07:10:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.maximporges.com/?p=53#comment-180</guid>
		<description>Hmm, I should get you to talk at cf.Objective() about this... :)</description>
		<content:encoded><![CDATA[<p>Hmm, I should get you to talk at cf.Objective() about this&#8230; :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maxim Porges</title>
		<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/comment-page-1/#comment-175</link>
		<dc:creator>Maxim Porges</dc:creator>
		<pubDate>Sun, 18 Nov 2007 14:55:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.maximporges.com/?p=53#comment-175</guid>
		<description>Hey Sean,&lt;br/&gt;&lt;br/&gt;Yes, we looked at MG:Flex and liked it a lot, but last time I checked it was still in alpha 1.&lt;br/&gt;&lt;br/&gt;We just built a small Flex app using our &quot;Flex only&quot; theory of development, and it worked great. We just used the event/component/binding model in Flex with simple, standard OO design techniques (layering, listeners/observers, and all that fun stuff); no framework required.&lt;br/&gt;&lt;br/&gt;The only thing we have identified so far internally as a possible need for a framework so far is global event handlers, which PureMVC does very nicely. We&#039;re using PureMVC on a mission-critical application that we expect to go in to production in Q2/Q3 of next year. We define a global event handler as a case where you have multiple components that you want to react to an event. PureMVC handles this neatly with its notification system. This would be harder in MXML or AS without a framework, since you would need to roll your own code to have interested parties register interest in an event. Doing this while keeping the components involved blissfully unaware of each other would require similar code to the stuff already in PureMVC out of the box.&lt;br/&gt;&lt;br/&gt;Of course, this isn&#039;t a terribly difficult thing to achieve. We have another mission-critical application just kicking up official development after a long PoC phase, so we&#039;re going to try to tackle the global notification scenario again using traditional OO techniques and the built-ins in Flex. I&#039;m definitely going to publish our findings when we&#039;re done, including sample code, since Flex frameworks (or the lack of need for them) seems to be a hot topic in the Flex community at the moment (see my recent post on &quot;&lt;a HREF=&quot;http://www.maximporges.com/2007/11/cairngorm-bad.html&quot; REL=&quot;nofollow&quot;&gt;Cairngorm Bad&lt;/a&gt;&quot;). :)</description>
		<content:encoded><![CDATA[<p>Hey Sean,</p>
<p>Yes, we looked at MG:Flex and liked it a lot, but last time I checked it was still in alpha 1.</p>
<p>We just built a small Flex app using our &#8220;Flex only&#8221; theory of development, and it worked great. We just used the event/component/binding model in Flex with simple, standard OO design techniques (layering, listeners/observers, and all that fun stuff); no framework required.</p>
<p>The only thing we have identified so far internally as a possible need for a framework so far is global event handlers, which PureMVC does very nicely. We&#8217;re using PureMVC on a mission-critical application that we expect to go in to production in Q2/Q3 of next year. We define a global event handler as a case where you have multiple components that you want to react to an event. PureMVC handles this neatly with its notification system. This would be harder in MXML or AS without a framework, since you would need to roll your own code to have interested parties register interest in an event. Doing this while keeping the components involved blissfully unaware of each other would require similar code to the stuff already in PureMVC out of the box.</p>
<p>Of course, this isn&#8217;t a terribly difficult thing to achieve. We have another mission-critical application just kicking up official development after a long PoC phase, so we&#8217;re going to try to tackle the global notification scenario again using traditional OO techniques and the built-ins in Flex. I&#8217;m definitely going to publish our findings when we&#8217;re done, including sample code, since Flex frameworks (or the lack of need for them) seems to be a hot topic in the Flex community at the moment (see my recent post on &#8220;<a HREF="http://www.maximporges.com/2007/11/cairngorm-bad.html" REL="nofollow">Cairngorm Bad</a>&#8220;). :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: seancorfield</title>
		<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/comment-page-1/#comment-174</link>
		<dc:creator>seancorfield</dc:creator>
		<pubDate>Sat, 17 Nov 2007 22:18:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.maximporges.com/?p=53#comment-174</guid>
		<description>Have you looked at Model-Glue: Flex? It&#039;s still very much in its infancy but it&#039;s trying to work from the principle of no boilerplate text whilst also leveraging some of the configuration idioms from Model-Glue: ColdFusion. I&#039;d be interested to hear your take on it because I&#039;ve looked at Cairngorm and find it tedious with a lot of boilerplate code and I haven&#039;t yet looked at PureMVC in any detail (I got as far as downloading it!).</description>
		<content:encoded><![CDATA[<p>Have you looked at Model-Glue: Flex? It&#8217;s still very much in its infancy but it&#8217;s trying to work from the principle of no boilerplate text whilst also leveraging some of the configuration idioms from Model-Glue: ColdFusion. I&#8217;d be interested to hear your take on it because I&#8217;ve looked at Cairngorm and find it tedious with a lot of boilerplate code and I haven&#8217;t yet looked at PureMVC in any detail (I got as far as downloading it!).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maxim Porges</title>
		<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/comment-page-1/#comment-121</link>
		<dc:creator>Maxim Porges</dc:creator>
		<pubDate>Mon, 28 May 2007 20:35:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.maximporges.com/?p=53#comment-121</guid>
		<description>Thanks for the post, Cliff. It&#039;s always nice to get info straight from the source. I think I have yet to see a framework that doesn&#039;t have to work with some trade offs, and I&#039;m sure PureMVC will be no exception.&lt;br/&gt;&lt;br/&gt;We&#039;re really interested in PureMVC at CFI, which led to my analysis of the sample app. I&#039;m glad to see some other frameworks popping up besides Cairngorm, for obvious reasons. It will be nice to look back in a few years and see where the Flex community stands in terms of frameworks.&lt;br/&gt;&lt;br/&gt;As you probably read on my blog, I&#039;m going to be experimenting with a collection of things that I consider my favorite items from each of the popular Flex frameworks, and trying to hobble together something. It might end up being a framework, it might end up being a set of practices for Flex development, or (most likely) it will collapse under its own weight and I&#039;ll enjoy the knowledge gained. :)&lt;br/&gt;&lt;br/&gt;In any event, I&#039;d love to hear your thoughts as I progress (I may even start posting some code soon), especially with the professional experience you have and your experience building a framework so far.&lt;br/&gt;&lt;br/&gt;The documentation you&#039;ve provided on the PureMVC web site has been very helpful with my understanding of the framework. I&#039;ll be taking a look at the Best Practices document as you suggested.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;&lt;br/&gt;- max</description>
		<content:encoded><![CDATA[<p>Thanks for the post, Cliff. It&#8217;s always nice to get info straight from the source. I think I have yet to see a framework that doesn&#8217;t have to work with some trade offs, and I&#8217;m sure PureMVC will be no exception.</p>
<p>We&#8217;re really interested in PureMVC at CFI, which led to my analysis of the sample app. I&#8217;m glad to see some other frameworks popping up besides Cairngorm, for obvious reasons. It will be nice to look back in a few years and see where the Flex community stands in terms of frameworks.</p>
<p>As you probably read on my blog, I&#8217;m going to be experimenting with a collection of things that I consider my favorite items from each of the popular Flex frameworks, and trying to hobble together something. It might end up being a framework, it might end up being a set of practices for Flex development, or (most likely) it will collapse under its own weight and I&#8217;ll enjoy the knowledge gained. :)</p>
<p>In any event, I&#8217;d love to hear your thoughts as I progress (I may even start posting some code soon), especially with the professional experience you have and your experience building a framework so far.</p>
<p>The documentation you&#8217;ve provided on the PureMVC web site has been very helpful with my understanding of the framework. I&#8217;ll be taking a look at the Best Practices document as you suggested.</p>
<p>Cheers,</p>
<p>- max</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cliff Hall</title>
		<link>http://www.maximporges.com/2007/05/26/flex-frameworks-nothing-but-pain/comment-page-1/#comment-120</link>
		<dc:creator>Cliff Hall</dc:creator>
		<pubDate>Mon, 28 May 2007 14:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.maximporges.com/?p=53#comment-120</guid>
		<description>Maxim,&lt;br/&gt;&lt;br/&gt;Good to see you had a close enough look at the PureMVC framework to make good and pointed comments like:&lt;br/&gt;&lt;br/&gt;----%snip%----&lt;br/&gt;In AppControlBarMediator&#039;s constructor, there are three lines of code registering event listeners so that the mediator can pick up events from the AppControlBar. The AppControlBar then has to define specific functions to announce these events (another six lines of code). Once the AppControlBarMediator catches the events, it does nothing but invoke the appropriate proxy, but only after referencing specific properties of the AppControlBar using dot property notation.&lt;br/&gt;&lt;br/&gt;Having discussed this with my buddy Russ at work (easily our most experienced Flex developer, and a very sharp fellow besides that), we agreed that using an event registration/announcement model would allow the AppControlBar component to be reused in other applications. I can see the point for completely reusable components, but this control bar is so specific to the application in question that all the event registration code seemed like overkill, especially if the mediator is just going to break the encapsulation of the component in order to get the properties to pass to the appropriate proxy.&lt;br/&gt;----%snip%----&lt;br/&gt;&lt;br/&gt;Here, you saw and described precisely the give and take of the of the Mediator implementation.&lt;br/&gt;&lt;br/&gt;For this particular Mediator the listener / handler functions may seem overkill, but it was meant to demonstrate the most common idiom that will be used to couple the View Component to the Mediator, that is placing listeners on it, and acting as the mediator between it and the rest of the PureMVC system.&lt;br/&gt;&lt;br/&gt;By doing this, the View Component can remain relatively free of code, which is a positive thing, because it helps separate the view definition (mxml) from the logic that controls it (mediator handlers). A big benefit is that that code may now be included in your ASDoc.&lt;br/&gt;&lt;br/&gt;Yes, the Mediator &#039;breaks the encapsulation&#039; of the View Component ( AppControlBar ), by looking deeply into it, but, as you say the two are, somewhat necessarily tightly coupled.&lt;br/&gt;&lt;br/&gt;So, consider the direction of the coupling. If the View Component only raises events, then it is reusable in other (or may easily be ported from), non PureMVC contexts.&lt;br/&gt;&lt;br/&gt;The Mediator assumes the sole burden of knowledge about this View Component, within the system. Other actors (Mediators, Proxies, Commands) are only allowed to affect change on this View Component by sending Notifications, which the Mediator hears and uses to manipulate the View Component.&lt;br/&gt;&lt;br/&gt;There must be a coupling to attach a View Component or Data Object (local or remote) to any system. The devil is in the details of how that coupling is implemented.&lt;br/&gt;&lt;br/&gt;The trick is to contain the coupling in such a way as to promote reusibility in those boundary objects, while allowing for easy refactoring in the future if those objects are replaced.&lt;br/&gt;&lt;br/&gt;BTW, I&#039;ve recently posted a draft of the best practices document on the website, which I hope will make this and other issues about implementation with the PureMVC framework clearer.&lt;br/&gt;&lt;br/&gt;It&#039;s a work in progress. It&#039;ll be done when it doesn&#039;t say &#039;Draft&#039; on it any more :)&lt;br/&gt;&lt;br/&gt;PureMVC.org -&gt; Docs -&gt; Praxis.&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;Cliff</description>
		<content:encoded><![CDATA[<p>Maxim,</p>
<p>Good to see you had a close enough look at the PureMVC framework to make good and pointed comments like:</p>
<p>&#8212;-%snip%&#8212;-<br />In AppControlBarMediator&#8217;s constructor, there are three lines of code registering event listeners so that the mediator can pick up events from the AppControlBar. The AppControlBar then has to define specific functions to announce these events (another six lines of code). Once the AppControlBarMediator catches the events, it does nothing but invoke the appropriate proxy, but only after referencing specific properties of the AppControlBar using dot property notation.</p>
<p>Having discussed this with my buddy Russ at work (easily our most experienced Flex developer, and a very sharp fellow besides that), we agreed that using an event registration/announcement model would allow the AppControlBar component to be reused in other applications. I can see the point for completely reusable components, but this control bar is so specific to the application in question that all the event registration code seemed like overkill, especially if the mediator is just going to break the encapsulation of the component in order to get the properties to pass to the appropriate proxy.<br />&#8212;-%snip%&#8212;-</p>
<p>Here, you saw and described precisely the give and take of the of the Mediator implementation.</p>
<p>For this particular Mediator the listener / handler functions may seem overkill, but it was meant to demonstrate the most common idiom that will be used to couple the View Component to the Mediator, that is placing listeners on it, and acting as the mediator between it and the rest of the PureMVC system.</p>
<p>By doing this, the View Component can remain relatively free of code, which is a positive thing, because it helps separate the view definition (mxml) from the logic that controls it (mediator handlers). A big benefit is that that code may now be included in your ASDoc.</p>
<p>Yes, the Mediator &#8216;breaks the encapsulation&#8217; of the View Component ( AppControlBar ), by looking deeply into it, but, as you say the two are, somewhat necessarily tightly coupled.</p>
<p>So, consider the direction of the coupling. If the View Component only raises events, then it is reusable in other (or may easily be ported from), non PureMVC contexts.</p>
<p>The Mediator assumes the sole burden of knowledge about this View Component, within the system. Other actors (Mediators, Proxies, Commands) are only allowed to affect change on this View Component by sending Notifications, which the Mediator hears and uses to manipulate the View Component.</p>
<p>There must be a coupling to attach a View Component or Data Object (local or remote) to any system. The devil is in the details of how that coupling is implemented.</p>
<p>The trick is to contain the coupling in such a way as to promote reusibility in those boundary objects, while allowing for easy refactoring in the future if those objects are replaced.</p>
<p>BTW, I&#8217;ve recently posted a draft of the best practices document on the website, which I hope will make this and other issues about implementation with the PureMVC framework clearer.</p>
<p>It&#8217;s a work in progress. It&#8217;ll be done when it doesn&#8217;t say &#8216;Draft&#8217; on it any more :)</p>
<p>PureMVC.org -> Docs -> Praxis.</p>
<p>Thanks,<br />Cliff</p>
]]></content:encoded>
	</item>
</channel>
</rss>

