<?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"
	>
<channel>
	<title>Comments on: 4 Things To Hate About PureMVC</title>
	<atom:link href="http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/</link>
	<description>About Technology in My Life</description>
	<pubDate>Wed, 07 Jan 2009 04:41:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: polesen</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-5975</link>
		<dc:creator>polesen</dc:creator>
		<pubDate>Mon, 01 Dec 2008 20:59:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-5975</guid>
		<description>@PabloBandin:

&lt;blockquote&gt;commands are created based on an Notification, witch create a new instance of the associated command&lt;/blockquote&gt;

Yes, exactly. And as puremvc insist on being the one that create the command instances, and at the same time supports no injection as part of the framework, I cannot get injection.

&lt;blockquote&gt;The singleton Controller dosent known anything about the implementation of the command&lt;/blockquote&gt;

Nor would it need to.

&lt;blockquote&gt;Using a Dependency Injection pattern will make you write more code in order to make the controller inject the apropiate Proxy instance to the command&lt;/blockquote&gt;

That is not true. But the framework code might become larger. A trade-off as a framework user I would like, if that made the code of the application more clear with less clutter.

&lt;blockquote&gt;Using composite in a Mediator, Proxy or Command will brake all the internal code that these classes use to register itself with the other singletons&lt;/blockquote&gt;

I think you misunderstand me or maybe I haven't been clear enough. I do not want to compose a command inside my own class, and dispatch methods to it. I would simply like to be able to create commands, mediators, proxies without being forced to inherit. With the current implementation, I am forced to.

&lt;blockquote&gt;This is a design decition. But it dosent restrain you to use platform specific API, come on! lol, what are you doing?&lt;/blockquote&gt;

It should be clear, but to answer your question: "I write flex applications using puremvc".

It is in the original blogpost above, but I feel the need to repeat myself here:

&lt;blockquote&gt;
This means the framework cannot tell about what it is doing using the flash trace() method. I suspect this to be the reason that there is no debug option to turn on in puremvc. It also cannot utilize flex or flash event classes. I suspect this to be why notifications, a completely new abstraction found in puremvc, was conceived, instead of just using the event framework.

Each and every time there is a very platform specific feature, the core framework is unable to utilize it, as that part would then be impossible (or damned hard) to port to another platform.
&lt;/blockquote&gt;

I know it does not restrain ME from using platform specifics. It restrains ITSELF from utilizing the platform specifics.</description>
		<content:encoded><![CDATA[<p>@PabloBandin:</p>
<blockquote><p>commands are created based on an Notification, witch create a new instance of the associated command</p></blockquote>
<p>Yes, exactly. And as puremvc insist on being the one that create the command instances, and at the same time supports no injection as part of the framework, I cannot get injection.</p>
<blockquote><p>The singleton Controller dosent known anything about the implementation of the command</p></blockquote>
<p>Nor would it need to.</p>
<blockquote><p>Using a Dependency Injection pattern will make you write more code in order to make the controller inject the apropiate Proxy instance to the command</p></blockquote>
<p>That is not true. But the framework code might become larger. A trade-off as a framework user I would like, if that made the code of the application more clear with less clutter.</p>
<blockquote><p>Using composite in a Mediator, Proxy or Command will brake all the internal code that these classes use to register itself with the other singletons</p></blockquote>
<p>I think you misunderstand me or maybe I haven&#8217;t been clear enough. I do not want to compose a command inside my own class, and dispatch methods to it. I would simply like to be able to create commands, mediators, proxies without being forced to inherit. With the current implementation, I am forced to.</p>
<blockquote><p>This is a design decition. But it dosent restrain you to use platform specific API, come on! lol, what are you doing?</p></blockquote>
<p>It should be clear, but to answer your question: &#8220;I write flex applications using puremvc&#8221;.</p>
<p>It is in the original blogpost above, but I feel the need to repeat myself here:</p>
<blockquote><p>
This means the framework cannot tell about what it is doing using the flash trace() method. I suspect this to be the reason that there is no debug option to turn on in puremvc. It also cannot utilize flex or flash event classes. I suspect this to be why notifications, a completely new abstraction found in puremvc, was conceived, instead of just using the event framework.</p>
<p>Each and every time there is a very platform specific feature, the core framework is unable to utilize it, as that part would then be impossible (or damned hard) to port to another platform.
</p></blockquote>
<p>I know it does not restrain ME from using platform specifics. It restrains ITSELF from utilizing the platform specifics.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PabloBandin</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-5960</link>
		<dc:creator>PabloBandin</dc:creator>
		<pubDate>Mon, 01 Dec 2008 15:07:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-5960</guid>
		<description>&#62;&#62;Use of Service Locator instead of Dependency Injection
Heee... no? commands are created based on an Notification, witch create a new instance of the associated command... The singleton Controller dosent known anything about the implementation of the command. Using a Dependency Injection pattern will make you write more code in order to make the controller inject the apropiate Proxy instance to the command. Service Locator avoids having the controller knowing too much about the implementation of a command.

&#62;&#62;Casting, Casting, Casting
The singletons in the framework let you use them as storage base for your concrete implementations of Mediator, Proxy and Command... the only way to do this is using interfaces. I think is not a big deal.

&#62;&#62;Forced Inheritance Everywhere
Mmh... in order to work well, the singleton Model, View, and Controller uses interfaces of IProxy, IMediator and ICommand. You extend them to implement it's interfaces and create custom methods... this inheritance is what let you work with the framework.
Composition over inheritance is recomended ONLY if the implementation of the component's interface is short and easy to recode. Using composite in a Mediator, Proxy or Command will brake all the internal code that these classes use to register itself with the other singletons.

&#62;&#62;Avoids Platform Dependencies
This is a design decition. But it dosent restrain you to use platform specific API, come on! lol, what are you doing?

&#62;&#62;I just think it could be done better.
Mabe if you give an example... instead of just talking... ^^</description>
		<content:encoded><![CDATA[<p>&gt;&gt;Use of Service Locator instead of Dependency Injection<br />
Heee&#8230; no? commands are created based on an Notification, witch create a new instance of the associated command&#8230; The singleton Controller dosent known anything about the implementation of the command. Using a Dependency Injection pattern will make you write more code in order to make the controller inject the apropiate Proxy instance to the command. Service Locator avoids having the controller knowing too much about the implementation of a command.</p>
<p>&gt;&gt;Casting, Casting, Casting<br />
The singletons in the framework let you use them as storage base for your concrete implementations of Mediator, Proxy and Command&#8230; the only way to do this is using interfaces. I think is not a big deal.</p>
<p>&gt;&gt;Forced Inheritance Everywhere<br />
Mmh&#8230; in order to work well, the singleton Model, View, and Controller uses interfaces of IProxy, IMediator and ICommand. You extend them to implement it&#8217;s interfaces and create custom methods&#8230; this inheritance is what let you work with the framework.<br />
Composition over inheritance is recomended ONLY if the implementation of the component&#8217;s interface is short and easy to recode. Using composite in a Mediator, Proxy or Command will brake all the internal code that these classes use to register itself with the other singletons.</p>
<p>&gt;&gt;Avoids Platform Dependencies<br />
This is a design decition. But it dosent restrain you to use platform specific API, come on! lol, what are you doing?</p>
<p>&gt;&gt;I just think it could be done better.<br />
Mabe if you give an example&#8230; instead of just talking&#8230; ^^</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Software Pills » Se busca sustituto de Cairngorm</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3857</link>
		<dc:creator>Software Pills » Se busca sustituto de Cairngorm</dc:creator>
		<pubDate>Thu, 16 Oct 2008 09:01:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3857</guid>
		<description>[...] http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/ se describen algunos otros [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/" rel="nofollow">http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/</a> se describen algunos otros [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joel</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3554</link>
		<dc:creator>Joel</dc:creator>
		<pubDate>Fri, 10 Oct 2008 15:03:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3554</guid>
		<description>&#62;&#62;By design it takes away some platform-specific features — it doesn’t stop me from using them completely, just it makes them significantly less powerful (bindings and event bubbling are two examples in Flex)

I don't really understand this, and perhaps that is just my ignorance, but I use both bindings and event bubbling heavily in my pureMVC flex applications with great success. I've never once felt that I was losing anything from the Flex framework, or felt the need to say "Damn, I sure wish I could use ________ right now, but PMVC is totally restricting me"

&#62;&#62;isn’t that just because someone has written an ActionScript application in Python?

No, it is because outside of the API of the language the patterns in play are the same.

The portability of PureMVC is a side effect, not a stated goal. The reason the ports exist at all is because other people have found them useful, and have therefore contributed their time and effort to make them so. They are not there as an exercise in mental masturbation, stroking the ego of a framework designer.</description>
		<content:encoded><![CDATA[<p>&gt;&gt;By design it takes away some platform-specific features — it doesn’t stop me from using them completely, just it makes them significantly less powerful (bindings and event bubbling are two examples in Flex)</p>
<p>I don&#8217;t really understand this, and perhaps that is just my ignorance, but I use both bindings and event bubbling heavily in my pureMVC flex applications with great success. I&#8217;ve never once felt that I was losing anything from the Flex framework, or felt the need to say &#8220;Damn, I sure wish I could use ________ right now, but PMVC is totally restricting me&#8221;</p>
<p>&gt;&gt;isn’t that just because someone has written an ActionScript application in Python?</p>
<p>No, it is because outside of the API of the language the patterns in play are the same.</p>
<p>The portability of PureMVC is a side effect, not a stated goal. The reason the ports exist at all is because other people have found them useful, and have therefore contributed their time and effort to make them so. They are not there as an exercise in mental masturbation, stroking the ego of a framework designer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Theo</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3547</link>
		<dc:creator>Theo</dc:creator>
		<pubDate>Fri, 10 Oct 2008 08:43:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3547</guid>
		<description>So, let me clarify what I mean when I say that the portability of PureMVC is useless (although, of course, YMMV). Some of it may be a repetition of what I said above:

I choose a platform because it has something that other platforms do not. If I'm creating an RIA I choose Flex, if I'm creating a animation-heavy web site I choose Flash, if I'm creating a text-heavy web site I choose PHP, Rails or some other backend technology. After having chosen the platform I choose the tools, and I want tools that let me harness the powers of the platform, that help me use the features of the platform to their limits.

PureMVC isn't that tool ever. By design it takes away some platform-specific features -- it doesn't stop me from using them completely, just it makes them significantly less powerful (bindings and event bubbling are two examples in Flex). PureMVC is never a good fit for a platform, because it takes a least-common-denominator approach.

The other argument is that you as a programmer get more productive by using PureMVC since you can use your knowledge on other platforms. It may be true when switching from ActionScript 2 to ActionScript 3, or from either of those to Flash Lite, or other Flash-based platforms, but they are more or less identical anyway. The languages is very similar, the API:s are very similar, the runtime is similar, the execution style is similar, etc. I don't think that it's fair to use AS2 and AS3 as examples of changing platforms, they are too similar (but if that's the platforms you are switching between, then good for you).

Looking at the list of platfoms that PureMVC has been ported to there are such extreme differences, PHP and ActionScript 2, for exampe, have almost nothing in common besides being programming languages. They run on platforms that have extremely different execution models, their API:s are two different worlds. Same for C# and Perl, or Ruby and ColdFusion, and so on. AS2 to AS3 I do understand, but even AS3 to Flex is questionable.

The application framework is such a tiny thing compared to the differences in language, API, execution style, runtime peculiarities, that is why I find PureMVC's portability utterly useless.

Joel mentions that when looking at a Python PureMVC application it's instantly clear what is going -- but isn't that just because someone has written an ActionScript application in Python? I mean, &lt;a href="http://www.acmqueue.com/modules.php?name=Content&#38;pa=showpage&#38;pid=271" rel="nofollow"&gt;you can write Fortran in any language&lt;/a&gt;.

By all means, use PureMVC for AS2 and AS3 applications. I have issues with the design of the framework (besides my other reservations), but I don't know of any better. You may even say that being able to use the same framework in both AS2 and AS3 applications is helpful to you, and I won't disagree. But you can't go from there to saying that PureMVC being portable to any platform is useful, or that it says something about the usefulness of the framework on that platform. I'm sure I could port Wordpress to Flex, but it would most definitely not be useful.</description>
		<content:encoded><![CDATA[<p>So, let me clarify what I mean when I say that the portability of PureMVC is useless (although, of course, YMMV). Some of it may be a repetition of what I said above:</p>
<p>I choose a platform because it has something that other platforms do not. If I&#8217;m creating an RIA I choose Flex, if I&#8217;m creating a animation-heavy web site I choose Flash, if I&#8217;m creating a text-heavy web site I choose PHP, Rails or some other backend technology. After having chosen the platform I choose the tools, and I want tools that let me harness the powers of the platform, that help me use the features of the platform to their limits.</p>
<p>PureMVC isn&#8217;t that tool ever. By design it takes away some platform-specific features &#8212; it doesn&#8217;t stop me from using them completely, just it makes them significantly less powerful (bindings and event bubbling are two examples in Flex). PureMVC is never a good fit for a platform, because it takes a least-common-denominator approach.</p>
<p>The other argument is that you as a programmer get more productive by using PureMVC since you can use your knowledge on other platforms. It may be true when switching from ActionScript 2 to ActionScript 3, or from either of those to Flash Lite, or other Flash-based platforms, but they are more or less identical anyway. The languages is very similar, the API:s are very similar, the runtime is similar, the execution style is similar, etc. I don&#8217;t think that it&#8217;s fair to use AS2 and AS3 as examples of changing platforms, they are too similar (but if that&#8217;s the platforms you are switching between, then good for you).</p>
<p>Looking at the list of platfoms that PureMVC has been ported to there are such extreme differences, PHP and ActionScript 2, for exampe, have almost nothing in common besides being programming languages. They run on platforms that have extremely different execution models, their API:s are two different worlds. Same for C# and Perl, or Ruby and ColdFusion, and so on. AS2 to AS3 I do understand, but even AS3 to Flex is questionable.</p>
<p>The application framework is such a tiny thing compared to the differences in language, API, execution style, runtime peculiarities, that is why I find PureMVC&#8217;s portability utterly useless.</p>
<p>Joel mentions that when looking at a Python PureMVC application it&#8217;s instantly clear what is going &#8212; but isn&#8217;t that just because someone has written an ActionScript application in Python? I mean, <a href="http://www.acmqueue.com/modules.php?name=Content&amp;pa=showpage&amp;pid=271" rel="nofollow">you can write Fortran in any language</a>.</p>
<p>By all means, use PureMVC for AS2 and AS3 applications. I have issues with the design of the framework (besides my other reservations), but I don&#8217;t know of any better. You may even say that being able to use the same framework in both AS2 and AS3 applications is helpful to you, and I won&#8217;t disagree. But you can&#8217;t go from there to saying that PureMVC being portable to any platform is useful, or that it says something about the usefulness of the framework on that platform. I&#8217;m sure I could port Wordpress to Flex, but it would most definitely not be useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joel</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3522</link>
		<dc:creator>Joel</dc:creator>
		<pubDate>Thu, 09 Oct 2008 20:07:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3522</guid>
		<description>@Theo
"By the way, Luke Bayes and Ali Mills have released a fork of PureMVC called FlexMVCS: http://www.asserttrue.com/articles/2008/07/15/flexmvcs-released It gets rid of the most annoying anti-Flex-isms, and the worst architectural issues."

This is the underlying beauty and architectural strength of the framework. It is simple, generalized and easy to manipulate to your specifications. When I am writing in Flex, I extend the base patterns to conform to my needs for the application. When I am writing in AS3, I do the same. Now I have a library of useful utilities to develop with.

"for example by saying that it’s a pretty useless feature."

It is a useless feature... to you. Coming from the perspective of somebody that writes applications in using the Flex framework, pure AS3, and Python it is nice to have a similar context across all three approaches. When I look at a PureMVC Python application it is instantly clear what is going on. I'm sure the folks using PMVC in AS2 appreciate the efforts as well.

As much as I love Flex, when I want a widget, tossing the framework overhead onto the file for no good reason is depressing (almost offensive?). The ability to use a similar framework and shared model layer without the burden of additional frameworks is very useful.

While entitled to an opinion, I think by the definition of the term useless, this particular one is incorrect.

Looking over your Mate examples, I really appreciate that effort (Mate looks like something I want to add to the toolbox). Your Cairngorm critique still has me nodding my head in agreement, but I disagree on the PureMVC hate, if for no other reason than it has been incredibly useful to me.</description>
		<content:encoded><![CDATA[<p>@Theo<br />
&#8220;By the way, Luke Bayes and Ali Mills have released a fork of PureMVC called FlexMVCS: <a href="http://www.asserttrue.com/articles/2008/07/15/flexmvcs-released" rel="nofollow">http://www.asserttrue.com/articles/2008/07/15/flexmvcs-released</a> It gets rid of the most annoying anti-Flex-isms, and the worst architectural issues.&#8221;</p>
<p>This is the underlying beauty and architectural strength of the framework. It is simple, generalized and easy to manipulate to your specifications. When I am writing in Flex, I extend the base patterns to conform to my needs for the application. When I am writing in AS3, I do the same. Now I have a library of useful utilities to develop with.</p>
<p>&#8220;for example by saying that it’s a pretty useless feature.&#8221;</p>
<p>It is a useless feature&#8230; to you. Coming from the perspective of somebody that writes applications in using the Flex framework, pure AS3, and Python it is nice to have a similar context across all three approaches. When I look at a PureMVC Python application it is instantly clear what is going on. I&#8217;m sure the folks using PMVC in AS2 appreciate the efforts as well.</p>
<p>As much as I love Flex, when I want a widget, tossing the framework overhead onto the file for no good reason is depressing (almost offensive?). The ability to use a similar framework and shared model layer without the burden of additional frameworks is very useful.</p>
<p>While entitled to an opinion, I think by the definition of the term useless, this particular one is incorrect.</p>
<p>Looking over your Mate examples, I really appreciate that effort (Mate looks like something I want to add to the toolbox). Your Cairngorm critique still has me nodding my head in agreement, but I disagree on the PureMVC hate, if for no other reason than it has been incredibly useful to me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: polesen</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3520</link>
		<dc:creator>polesen</dc:creator>
		<pubDate>Thu, 09 Oct 2008 19:01:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3520</guid>
		<description>Greetings, &lt;del datetime="2008-10-10T04:35:59+00:00"&gt;McDonalds&lt;/del&gt; JasonMacdonald

I shall try to completely ignore you getting personal, and instead try to extract some of your actual arguments about the post and about puremvc.

When you say:

&lt;blockquote&gt;
.. So by your estimate, PureMVC should work with Flex and nothing else because you want to use Dependency Injection? ..
&lt;/blockquote&gt;

No. I would not dream of trying to impose that on puremvc, as that would go against the main design goal of puremvc.

&lt;blockquote&gt;
...If all you’re going to do is whine and complain that something sucks, and do nothing to help, then please do sit down. You aren’t helping...
&lt;/blockquote&gt;

Obviously, I disagree. I actually believe I *am* helping.

Helping is the main point of this post. Not help in the sense of changing the framework. But help people choose a framework that suits them. I myself find it hard to choose a framework for a platform. It is not until you have actually worked with a framework, you discover the real pros and cons of it. I myself would have liked to read a post like this good one, before choosing puremvc. I might very well have choosen it anyway, hey, I might even choose it again.

Now, that said, both Theo and I seem to disagree with you on how much of a value-add the portability of the framework is for the user of the framework, as opposed to the value-add of having platform specific features in the framework itself. 

When you write:

&lt;blockquote&gt;
The fact of the matter is NO framework is perfect in everyone’s eyes. 
&lt;/blockquote&gt;

You are actually quite right and spot on there. That is also why this is a good post. This post, together with the comments, helps possible newcomers to the flex world, to evaluate if they want to use puremvc or not.</description>
		<content:encoded><![CDATA[<p>Greetings, <del datetime="2008-10-10T04:35:59+00:00">McDonalds</del> JasonMacdonald</p>
<p>I shall try to completely ignore you getting personal, and instead try to extract some of your actual arguments about the post and about puremvc.</p>
<p>When you say:</p>
<blockquote><p>
.. So by your estimate, PureMVC should work with Flex and nothing else because you want to use Dependency Injection? ..
</p></blockquote>
<p>No. I would not dream of trying to impose that on puremvc, as that would go against the main design goal of puremvc.</p>
<blockquote><p>
&#8230;If all you’re going to do is whine and complain that something sucks, and do nothing to help, then please do sit down. You aren’t helping&#8230;
</p></blockquote>
<p>Obviously, I disagree. I actually believe I *am* helping.</p>
<p>Helping is the main point of this post. Not help in the sense of changing the framework. But help people choose a framework that suits them. I myself find it hard to choose a framework for a platform. It is not until you have actually worked with a framework, you discover the real pros and cons of it. I myself would have liked to read a post like this good one, before choosing puremvc. I might very well have choosen it anyway, hey, I might even choose it again.</p>
<p>Now, that said, both Theo and I seem to disagree with you on how much of a value-add the portability of the framework is for the user of the framework, as opposed to the value-add of having platform specific features in the framework itself. </p>
<p>When you write:</p>
<blockquote><p>
The fact of the matter is NO framework is perfect in everyone’s eyes.
</p></blockquote>
<p>You are actually quite right and spot on there. That is also why this is a good post. This post, together with the comments, helps possible newcomers to the flex world, to evaluate if they want to use puremvc or not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Theo</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3506</link>
		<dc:creator>Theo</dc:creator>
		<pubDate>Thu, 09 Oct 2008 14:04:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3506</guid>
		<description>If you don't like his blog, don't read it… it's that simple. If you like it but think it could be improved, contribute! Don’t just bash it for the sake of it.</description>
		<content:encoded><![CDATA[<p>If you don&#8217;t like his blog, don&#8217;t read it… it&#8217;s that simple. If you like it but think it could be improved, contribute! Don’t just bash it for the sake of it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JasonMacdonald</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3504</link>
		<dc:creator>JasonMacdonald</dc:creator>
		<pubDate>Thu, 09 Oct 2008 13:35:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3504</guid>
		<description>My comment was directed at the writer of this blog and the fact he seems to do nothing but complain about every framework instead of either (a) contributing to help relieve the "problems" or (b) build his own and share with the rest of us his vision of the perfect framework. I suspect he would dislike having people tell him his framework sucks because of some decision he had to make in building his utopia framework. The fact of the matter is NO framework is perfect in everyone's eyes. I challenge you to build one that is, I'll use it!

Theo, I have no problem with you disagreeing with the way PureMVC is implemented in the Flex context however it would be more beneficial if you also proposed a solution rather than just parroting the perceived deficiency.

And yes, my comment of, "if you don't like it don't use it" is that simple. Or a better one would be, if you like it but find some issues with it, help make it better! If all you're going to do is whine and complain that something sucks, and do nothing to help, then please do sit down. You aren't helping.

Calling the feature of portability "useless" I think is very short sighted. If you don't ever intend to switch platforms then I agree it's probably a less desirable feature for YOU and a platform specific framework might be more desirable for YOU.

However, for myself, and others I'm sure, the ability to learn one framework and use it across multiple platforms outweighs the small benefit of using platform specific features in the framework itself. Right now I'm forced to develop in AS3 only because the Flex framework is simply too large in file size for my app. However, when the time comes that Flex is either optimized in DL size, or the entire world has the framework cached locally, I'll most certainly port my whole project over to Flex. And when I do I'll have very little code to rewrite AND I won't have to learn yet-another-damn-framework. 

Then there's always things like Flash lite. What happens when my company decides they want a version of our app on mobiles? Learn another framework? How about a desktop version using AIR? Rewrite my code again? How about my back-end in another language (PHP or Java)? 

That's now 5 platforms I could use for one app and 4 frameworks I didn't have to waste months learning and rewriting my app for. That is the power of PureMVC to me. Not whether it is the absolute best solution for each platform but rather the time savings across ALL of the platforms I can, and will, use.</description>
		<content:encoded><![CDATA[<p>My comment was directed at the writer of this blog and the fact he seems to do nothing but complain about every framework instead of either (a) contributing to help relieve the &#8220;problems&#8221; or (b) build his own and share with the rest of us his vision of the perfect framework. I suspect he would dislike having people tell him his framework sucks because of some decision he had to make in building his utopia framework. The fact of the matter is NO framework is perfect in everyone&#8217;s eyes. I challenge you to build one that is, I&#8217;ll use it!</p>
<p>Theo, I have no problem with you disagreeing with the way PureMVC is implemented in the Flex context however it would be more beneficial if you also proposed a solution rather than just parroting the perceived deficiency.</p>
<p>And yes, my comment of, &#8220;if you don&#8217;t like it don&#8217;t use it&#8221; is that simple. Or a better one would be, if you like it but find some issues with it, help make it better! If all you&#8217;re going to do is whine and complain that something sucks, and do nothing to help, then please do sit down. You aren&#8217;t helping.</p>
<p>Calling the feature of portability &#8220;useless&#8221; I think is very short sighted. If you don&#8217;t ever intend to switch platforms then I agree it&#8217;s probably a less desirable feature for YOU and a platform specific framework might be more desirable for YOU.</p>
<p>However, for myself, and others I&#8217;m sure, the ability to learn one framework and use it across multiple platforms outweighs the small benefit of using platform specific features in the framework itself. Right now I&#8217;m forced to develop in AS3 only because the Flex framework is simply too large in file size for my app. However, when the time comes that Flex is either optimized in DL size, or the entire world has the framework cached locally, I&#8217;ll most certainly port my whole project over to Flex. And when I do I&#8217;ll have very little code to rewrite AND I won&#8217;t have to learn yet-another-damn-framework. </p>
<p>Then there&#8217;s always things like Flash lite. What happens when my company decides they want a version of our app on mobiles? Learn another framework? How about a desktop version using AIR? Rewrite my code again? How about my back-end in another language (PHP or Java)? </p>
<p>That&#8217;s now 5 platforms I could use for one app and 4 frameworks I didn&#8217;t have to waste months learning and rewriting my app for. That is the power of PureMVC to me. Not whether it is the absolute best solution for each platform but rather the time savings across ALL of the platforms I can, and will, use.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Theo</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3494</link>
		<dc:creator>Theo</dc:creator>
		<pubDate>Thu, 09 Oct 2008 08:27:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3494</guid>
		<description>@Jason (although it was perhaps not directed at me?)

Since PureMVC is touted as a Flex application framework, among other things, I think it's fair to criticize it for being bad at it. It's probably not as bad for pure ActionScript applications, but that's just because it's less limiting for those.

Since one of the fundamental ideas behind PureMVC is being portable, then I think it's fair to criticize it on that point -- for example by saying that it's a pretty useless feature.

Since many think that PureMVC is a good application framework for Flex application development, I think it's fair to criticize their reasons for doing that, if I can make a case for it that is on a higher level than "you are stupid".

It's definitely not as simple as don't use it if you don't like it. You can hate five parts of something while still using it because of the overall benefits. Pointing out the problems leads to progress, asking dissenting voices to shut up leads to the opposite.

By the way, Luke Bayes and Ali Mills have released a fork of PureMVC called FlexMVCS: http://www.asserttrue.com/articles/2008/07/15/flexmvcs-released It gets rid of the most annoying anti-Flex-isms, and the worst architectural issues.</description>
		<content:encoded><![CDATA[<p>@Jason (although it was perhaps not directed at me?)</p>
<p>Since PureMVC is touted as a Flex application framework, among other things, I think it&#8217;s fair to criticize it for being bad at it. It&#8217;s probably not as bad for pure ActionScript applications, but that&#8217;s just because it&#8217;s less limiting for those.</p>
<p>Since one of the fundamental ideas behind PureMVC is being portable, then I think it&#8217;s fair to criticize it on that point &#8212; for example by saying that it&#8217;s a pretty useless feature.</p>
<p>Since many think that PureMVC is a good application framework for Flex application development, I think it&#8217;s fair to criticize their reasons for doing that, if I can make a case for it that is on a higher level than &#8220;you are stupid&#8221;.</p>
<p>It&#8217;s definitely not as simple as don&#8217;t use it if you don&#8217;t like it. You can hate five parts of something while still using it because of the overall benefits. Pointing out the problems leads to progress, asking dissenting voices to shut up leads to the opposite.</p>
<p>By the way, Luke Bayes and Ali Mills have released a fork of PureMVC called FlexMVCS: <a href="http://www.asserttrue.com/articles/2008/07/15/flexmvcs-released" rel="nofollow">http://www.asserttrue.com/articles/2008/07/15/flexmvcs-released</a> It gets rid of the most annoying anti-Flex-isms, and the worst architectural issues.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JasonMacdonald</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3476</link>
		<dc:creator>JasonMacdonald</dc:creator>
		<pubDate>Wed, 08 Oct 2008 20:54:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3476</guid>
		<description>So by your estimate, PureMVC should work with Flex and nothing else because you want to use Dependency Injection? And screw all the Flash/AS3 only users out there? Or maybe they should completely rebuild the framework into two separate branches (or 10) for accomplishing the same thing? That's productive.

Why don't you stop complaining about how all the frameworks out there have it wrong and BUILD YOUR OWN. Save the rest of the world from your complaining how everyone else gets it wrong and you are right. I honestly can't stand people like you. Nothing but complaints all the while you do nothing to contribute to the end goal.

If you don't like it, don't use it... it's that simple. If you like it but think it could be improved, contribute! Don't just bash it for the sake of some blog views.</description>
		<content:encoded><![CDATA[<p>So by your estimate, PureMVC should work with Flex and nothing else because you want to use Dependency Injection? And screw all the Flash/AS3 only users out there? Or maybe they should completely rebuild the framework into two separate branches (or 10) for accomplishing the same thing? That&#8217;s productive.</p>
<p>Why don&#8217;t you stop complaining about how all the frameworks out there have it wrong and BUILD YOUR OWN. Save the rest of the world from your complaining how everyone else gets it wrong and you are right. I honestly can&#8217;t stand people like you. Nothing but complaints all the while you do nothing to contribute to the end goal.</p>
<p>If you don&#8217;t like it, don&#8217;t use it&#8230; it&#8217;s that simple. If you like it but think it could be improved, contribute! Don&#8217;t just bash it for the sake of some blog views.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Theo</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3417</link>
		<dc:creator>Theo</dc:creator>
		<pubDate>Mon, 06 Oct 2008 19:37:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3417</guid>
		<description>One word: overengineered.

I find PureMVC almost offensive in its invasiveness. I do not agree with those that think that PureMVC is a good example of object oriented programming, quite the opposite, to me it looks more procedural than anything. The focus on global variables and centralized event dispatching, are two examples of this, but the inflexible types that require you to cast all over is also a sign of bad, non-object oriented design.

And don't get me started on the portability issue, why on earth would I want to trade the power of my platform of choice for portability? My application code is not portable, so why care if the framework is portable? I don't choose application framework first and platform second. I choose the platform because it has the features I need to get the job done -- to then choose an application framework that denies me full use of those features would be nothing short of stupid.

If you have any argument for the benefits of PureMVC's portability, please post it here: http://stackoverflow.com/questions/143403/how-does-the-portability-of-puremvc-benefit-the-application-developer

I use Mate and my application code has zero dependencies on the framework.</description>
		<content:encoded><![CDATA[<p>One word: overengineered.</p>
<p>I find PureMVC almost offensive in its invasiveness. I do not agree with those that think that PureMVC is a good example of object oriented programming, quite the opposite, to me it looks more procedural than anything. The focus on global variables and centralized event dispatching, are two examples of this, but the inflexible types that require you to cast all over is also a sign of bad, non-object oriented design.</p>
<p>And don&#8217;t get me started on the portability issue, why on earth would I want to trade the power of my platform of choice for portability? My application code is not portable, so why care if the framework is portable? I don&#8217;t choose application framework first and platform second. I choose the platform because it has the features I need to get the job done &#8212; to then choose an application framework that denies me full use of those features would be nothing short of stupid.</p>
<p>If you have any argument for the benefits of PureMVC&#8217;s portability, please post it here: <a href="http://stackoverflow.com/questions/143403/how-does-the-portability-of-puremvc-benefit-the-application-developer" rel="nofollow">http://stackoverflow.com/questions/143403/how-does-the-portability-of-puremvc-benefit-the-application-developer</a></p>
<p>I use Mate and my application code has zero dependencies on the framework.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: polesen</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3415</link>
		<dc:creator>polesen</dc:creator>
		<pubDate>Mon, 06 Oct 2008 18:55:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3415</guid>
		<description>@Raleigh

&lt;blockquote&gt;How would this work for multiple instances of the same proxy class?&lt;/blockquote&gt;

It would not :-)

Or, it could be made to. I am not quite sure how deep the metadata support in AS3 goes, but if an annotation like this one:

&lt;code&gt;
[Inject("PROXY_NAME_HERE")]
private var clientDataProxy : ClientDataProxy;
&lt;/code&gt;

is retained in the bytecode after compilation INCLUDING its parameter, there should be no trouble to implement injection of the same proxy type, but with different names, inside a framework.</description>
		<content:encoded><![CDATA[<p>@Raleigh</p>
<blockquote><p>How would this work for multiple instances of the same proxy class?</p></blockquote>
<p>It would not <img src='http://www.techper.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Or, it could be made to. I am not quite sure how deep the metadata support in AS3 goes, but if an annotation like this one:</p>
<p><code><br />
[Inject("PROXY_NAME_HERE")]<br />
private var clientDataProxy : ClientDataProxy;<br />
</code></p>
<p>is retained in the bytecode after compilation INCLUDING its parameter, there should be no trouble to implement injection of the same proxy type, but with different names, inside a framework.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: polesen</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3414</link>
		<dc:creator>polesen</dc:creator>
		<pubDate>Mon, 06 Oct 2008 18:51:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3414</guid>
		<description>@julien

&lt;blockquote&gt;
...as for the “over casting”, well I just think (correct me if I’m wrong, I want to learn) it comes from the fact that lots of stuff in PureMVC is based on interfaces (I see it as a good practise) and quite “abstract”...
&lt;/blockquote&gt;

I do not agree! In the case of a retrieveProxy call on facade, it is true that the return value is IProxy--an interface. But, to utilize that value, I would either have to (a) call getData() on it and get an Object instance, which I would then have to cast, or (b) cast the IProxy instance itself, to get access to call some of the methods on it. This is what comes with using type-safety in AS3.

BUT: If the framework itself had been designed with injection instead of with some more generic service-locator mechanism, I would not have to cast. I would have the correctly typed instance available.</description>
		<content:encoded><![CDATA[<p>@julien</p>
<blockquote><p>
&#8230;as for the “over casting”, well I just think (correct me if I’m wrong, I want to learn) it comes from the fact that lots of stuff in PureMVC is based on interfaces (I see it as a good practise) and quite “abstract”&#8230;
</p></blockquote>
<p>I do not agree! In the case of a retrieveProxy call on facade, it is true that the return value is IProxy&#8211;an interface. But, to utilize that value, I would either have to (a) call getData() on it and get an Object instance, which I would then have to cast, or (b) cast the IProxy instance itself, to get access to call some of the methods on it. This is what comes with using type-safety in AS3.</p>
<p>BUT: If the framework itself had been designed with injection instead of with some more generic service-locator mechanism, I would not have to cast. I would have the correctly typed instance available.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raleigh</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3413</link>
		<dc:creator>Raleigh</dc:creator>
		<pubDate>Mon, 06 Oct 2008 18:38:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3413</guid>
		<description>RE: #1  - How would this work for multiple instances of the same proxy class? 

For example, I recently had a project that used multiple instances of a simple XML data proxy class, each created with a unique name and XML file URL. Each worked exactly the same, just loaded different data.

It looks like the method you talk about would require a single instance per class, or am I missing something? I'll admit, DI is a relatively new concept to me.

Thanks.</description>
		<content:encoded><![CDATA[<p>RE: #1  - How would this work for multiple instances of the same proxy class? </p>
<p>For example, I recently had a project that used multiple instances of a simple XML data proxy class, each created with a unique name and XML file URL. Each worked exactly the same, just loaded different data.</p>
<p>It looks like the method you talk about would require a single instance per class, or am I missing something? I&#8217;ll admit, DI is a relatively new concept to me.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: 4 Things Bad About PureMVC</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3409</link>
		<dc:creator>4 Things Bad About PureMVC</dc:creator>
		<pubDate>Mon, 06 Oct 2008 16:55:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3409</guid>
		<description>[...] Per has another post to take a in-depth look at one of the ActionScript based framework, PureMVC. This time the post listed 4 things he hates [...]</description>
		<content:encoded><![CDATA[<p>[...] Per has another post to take a in-depth look at one of the ActionScript based framework, PureMVC. This time the post listed 4 things he hates [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: julien</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3400</link>
		<dc:creator>julien</dc:creator>
		<pubDate>Mon, 06 Oct 2008 12:34:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3400</guid>
		<description>Interesting post.

I still find PureMVC much more object oriented and flexible than other frameworks, as for the "over casting", well I just think (correct me if I'm wrong, I want to learn) it comes from the fact that lots of stuff in PureMVC is based on interfaces (I see it as a good practise) and quite "abstract". However, personnaly, I'd say Cairngorm or Mate are much more "strict" when it comes to using them in your code ... And well your previous post on  Mate almost made me think I should never use it

Cheers</description>
		<content:encoded><![CDATA[<p>Interesting post.</p>
<p>I still find PureMVC much more object oriented and flexible than other frameworks, as for the &#8220;over casting&#8221;, well I just think (correct me if I&#8217;m wrong, I want to learn) it comes from the fact that lots of stuff in PureMVC is based on interfaces (I see it as a good practise) and quite &#8220;abstract&#8221;. However, personnaly, I&#8217;d say Cairngorm or Mate are much more &#8220;strict&#8221; when it comes to using them in your code &#8230; And well your previous post on  Mate almost made me think I should never use it</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marty Pitt</title>
		<link>http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/#comment-3393</link>
		<dc:creator>Marty Pitt</dc:creator>
		<pubDate>Mon, 06 Oct 2008 07:54:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.techper.net/?p=143#comment-3393</guid>
		<description>I agree completely, with the exception of the casting, which -- IMHO while painful -- is not really a failing of the framework, but instead the language.

At a previous project I ended up refactoring all the core classes in the framework to use composition rather than inheritance.  The fact that Mediator subclasses Notifier is unnecessary, and makes testing difficult.

We also made a blanket rule that facade.retrieveX() was forbidden in any code except Commands, to avoid tightly coupling objects together.  (At the time, we weren't able to use a DI framework, which would've been preferable as you mention).

We found that using the facade.retrieveX method creates dependencies similar to being dependent on a singleton -- the amount of setup code for a unit test becomes very heavy very quickly.

Great post!

Marty</description>
		<content:encoded><![CDATA[<p>I agree completely, with the exception of the casting, which &#8212; IMHO while painful &#8212; is not really a failing of the framework, but instead the language.</p>
<p>At a previous project I ended up refactoring all the core classes in the framework to use composition rather than inheritance.  The fact that Mediator subclasses Notifier is unnecessary, and makes testing difficult.</p>
<p>We also made a blanket rule that facade.retrieveX() was forbidden in any code except Commands, to avoid tightly coupling objects together.  (At the time, we weren&#8217;t able to use a DI framework, which would&#8217;ve been preferable as you mention).</p>
<p>We found that using the facade.retrieveX method creates dependencies similar to being dependent on a singleton &#8212; the amount of setup code for a unit test becomes very heavy very quickly.</p>
<p>Great post!</p>
<p>Marty</p>
]]></content:encoded>
	</item>
</channel>
</rss>
