Grey Line

This started as a Skype chat room conversation between my colleague Anatole Tartakovsky and myself, and I though that it would be a good idea to invite more Flex developers to this discussion.

Having said this, I’d like to make it clear that over my career, I’ve been developing frameworks myself and truly respect people who are capable of creating frameworks and Anatole has huge experience in this area as well. Here we’re just questioning the need to create frameworks not for a general purpose language like Java, but for a domain-specific framework like Flex.

This is our dialog with minor editing. Your input and feedback are greatly appreciated.

Yakov. Why people design Flex frameworks as opposed to reusable components? One of the framework is called Cairngorm, the other one is called PureMVC. I’m sure there is more. It seems to me that such frameworks is unnecessary overhead over well designed Flex framework. Are there any benefits here? Why bother creating all these singleton-based bottlenecks?

Anatole. First of all, PureMVC seems to be more of an ActionScript Framework. It is not specifically Flex framework and concentrates on the task of creating generic a framework for low-level AS objects. Flex comes with “pre-built suggestions” of how a model/view controller might work – and it offers lots of hooks throughout the data and UI classes that help implementing MVC.
PureMVC is also “server-agnostic”. Flex made very efficient Java implementation of distributed Model that can provide dynamics to the distributed Web applications.
PureMVC is more about making apps in more traditional way.
Cairngorm was started as “Micro – Architecture” – a set of patterns that allowed solving certain problems in the application design – like Model Locator or Commands – and certain applications. It never appealed to me as it had a number of assumptions that required more coding. At best you would use one or two patterns implementation from Cairngorm, but it’s much easier to rip out the part you need and adjust it to your liking.

Yakov. I can appreciate the fact that design patterns are useful in general, because they may help developers in dealing with repeating patterns in software construction such as Singleton, Mediator, Model-View-Controller and the like. But when I look at some of the third-party frameworks built on top of Flex, I keep asking myself the same question, “Why build a framework on top of framework? Are there any benefits to introducing a middleman between an application’s views and already existing Flex framework?

Anatole. It depends on the application you are building. Frameworks provide higher level of automation and abstraction for specific tasks and with various coding and performance costs. Fo example, Flex framework has Data Management Services for distributed Web applications. However, this model has limited applicability for simple Web applications working with HTTP forms-based backend API. You’d need a symmetrical MVC API on the client side. You can also have a client-side only text editor application, for example, that is completely “out of scope” for Flex framework but would benefit from implementing a Command pattern. The real question is to identify the functionality you need, and then to see how it is implemented in the appropriate framework

Yakov. I looked at the Cairngorm’s design, and having hard times figuring out why would I need something like this? Ok, you may say that it helps to organize your project better. What else? Without any disrespect to creators of Cairngorm, I can’t find a justification to recommending it to my clients. One of them has invited me to lead an ongoing Flex project, which is being developed by a large team of developers. The project uses Cairngorm, and at the same time it consists of a number of modules. After reviewing the project, I’ve recommended to stop using Cairngorm. Without going into details, these are some of my concerns in this case:
The client wants to use modules, which are can be loadable/unloadable. But since you are forced to use Cairngorm’s singleton model locator, it’ll keep the hard references to the modules (event listeners), which won’t allow you unloading modules. So, on top of Flex modules’ memory leaking (yes, they leak), we’d introduce another memory issue.

Anatole. In many cases, a detailed look at the implementation will either get you on board or will remove the framework as not applicable implementation. In later releases of Cairngorm you can have weak references – so it works – at least theoretically. However, with modules there are quite a few places when unloading will become impossible due to legitimate code generated by framework. In general, if you are going with modules, you need multi-layered framework and intelligent registration services that are written specifically for the task.

Yakov. As far as I know, the use of Cairngorm was never approved by Adobe Flex team, but I might be wrong here. Flex framework is built on a nice distributed event-driven architecture, but Cairngorm is forcing your events to go through another singleton – event dispatcher. Why is that? Why every view has to register event listener in the central place? Now developers on a large project have to acquire additional skills in proper usage of this framework.

Anatole. The reason for use of global event listeners registration are derived from the size / type of applications the framework developers worked with. It “simplifies” the project management by providing structure and separating developers responsible for model, view and controller into separate entities. All these singletons and managers are a way to establish a non-UI but business communication between parts.

Yakov. Do we really need global areas? Why not doing it locally when needed?

Anatole. First, you need to look at the events. In most cases, these are not UI or input events but rather some application/state changes that need processing. The model is global, and the application events are defined on the global level.
I think most of the seasoned developers with UI background are uncomfortable with this approach. You might want to consider Joe Berkovitz MVCS approach as a middle ground between Cairngorm and our component-based approach that might work better for medium to large size teams that would have no access to code generators and data driven/factories-based architecture.

I recall two framework-related sessions at MAX’07, where approximately the same number of people were asked the question: how many of you have looked at Cairngorm? 70% -80% raised their hands during the Flex frameworks BOF session and 90% on the Best Practices session. During the Flex framework session people were asked a second question,“ How many of you would use or actively oppose Caingorm?“ This time they’ve got a 50/50 split.

Yakov. I hope to be able to attend MAX 2008. So all these people came to the Best Practices session to get reassured that they are doing the right thing? But I’d really want to see some concrete examples where using these frameworks would bring technical benefits. I want to stress, I’m not talking about self-contained components that would automate some tedious job but a framework on top of Flex Framework.

Anatole. I think the main benefit of any pattern library will be based on its applicability to your application. There are quite a few applications – including infamous “shopping cart” ones – that can be coded quite efficiently with any of these frameworks. On the other hand, the extra setup code provided for “flexibility” is ironically the least flexible part of it.

As far as benefit ratio between an architectural framework and smart components, I think you might want to try a little test. Ask any developer if she wants an architectural framework that still would require her to implement a DataGrid componment (she would be allowed to use Grid component or some other low level controls as a superclass). On the other hand, offer her a DataGrid component without any framework. I think this developer would recognize the importance of smart objects and go with a DataGrid. Take it a level deeper and you will see an “extra” code in a DataGrid , and we’ve successfully have overridden it in our own DataForm, SuperGrid and controls.

Yakov. Do not forget though, that we are enterprise developers and are mostly concerned with a boring thingy called data processing. There are legions of Flex developers who do not care about the DataGrid. They are into creation of cool visual components. But these guys do not need any frameworks either.

Here’s another strong statement from the PureMVC framework, “The PureMVC framework has a very narrow goal. That is to help you separate your application’s coding concerns into three discrete tiers; Model View Controller”.

But isn’t this goal already achieved in Flex Framework? Wouldn’t a simple separating views, controllers and models into different folders of your project suffice? In many cases the role of Controller in Flex is kind of blended into model itself (bindable data collections can emit and listen to events caused by some data changes). In some cases, if your application’s views have reusable business logic (i.e. validation or connection to specific back end data feed) you may create separate controller classes that may be shared by more than one view. But this should be done on the case-by-case basis, and not as a must for the entire application.

Here’s another statement from a well-written PureMVC documentation: “Making separation of Model, View and Controller interests eliminates the most harmful responsibility misplacement issues that hamper scalability and maintainability“. My English is not good enough to understand this phrase in its entirety, so can you play the PureMVC advocate and suggest, how PureMVC would improve Flex scalability and maintainability?

Anatole. Well, there is an old saying that life is a play, written by God, and directed by Devil. By making the process more formal you can build a lot smaller chunks, communicating and specific way, and in your mind the more formal process will yield better maintainability. On the other hand, it will create more parts to maintain and less flexibility to do so.

Yakov. PureMVC uses mediators, which is a very applicable pattern for the software that produces UI. But would it be that difficult for developers or project architects apply Mediator pattern while designing their business applications as opposed to relying on a framework that implements Mediator globally? Check out this blog on using the mediator. Is it that difficult so it has to be hidden into a framework?

Anatole. ActionScript 3 makes a lot of patterns excessive. A lot of things can be done by using events or dynamic code without really breaching good programming practices. One-liners work for me as long as they are simple and concise.

The main question remains, “Do you want to use intelligent objects that encapsulate most of the framework functionality or if you prefer to deal with simple objecst and do explicit coding for each instance?”

Yakov. I prefer using self-contained loosely-coupled objects.

Anatole. So, coming back to your question of system-wide singletons… I do not see any reason for creating global objects – they are really bad for both application development process and maintenance in the long run. You can have a singleton pattern inside the models themselves or bind location services with module loaders depending on the architecture of your application.

I have seen these frameworks being used mostly as means to provide project manager/architect with ability to separate areas for developers, quantify functions and make project more manageable. The effect for the resulting application most likely to be negative, but it is very straightforward approach to build systems.

Yakov. So you are saying that utilizing a framework on a project allows create and enforce a nice looking project plan that reads, “Mary will create 10 model objects by February 1, and John will be done with his views a week before?”

Anatole. Yes, and then we will have all the commands coded a week after that and then we will think about fitting it all together, essentially moving real architectural and design questions toward the end of the project. If you answer the question “How?” first, people tend not to ask “Why?” for quite some time. On the flip side, you will have people doing their parts rather quickly thus producing enormous amount of code to fix when the design problems become evident. The problem with formal coding techniques is the human generated code (thus cut/paste errors) without the ultimate understanding how it will be used and very little testing done while writing the code.

Yakov. In the USA, we are already accustomed to protective medicine, when the main goal is to ensure that the patient won’t sue you. So when a guy with a headache shows up in an emergency room, they start with sending him to an MRI and making tons of other not too necessary tests. But, it’s better to be safe then sorry… The same rationale here – it’s easier to CYA with a nice project plan (see www.acronymfinder.com for the definition of CYA).

Anatole. The problem starts MUCH later – at some point of the project the spec changes – business analyst realizes that mistakes were made, process changes, the other department needs some of your functionality or another line of business has to be handled. There is no time compression or shortcuts available there – commands need to be amended and re-coded, views redesigned, events integrated with a different workflow. You are now thinking to yourself, “Why, oh why, did not I go with an application framework instead of the architectural one?”

The application framework goal is a way to get you through the “implementation” part faster while giving you maximum flexibility on design and functionality part. If you do not have 80% of application built in 20% of the time, you will be late with the last 20%.

Flex itself is more of an application framework. It is not a library of patterns but rather a set of objects that are built to communicate and react. Flex uses code generators and other behind-the-scene techniques to achieve that. The key here is automation of implementation tasks by minimizing the amount of code while behaving predictably. That is done by explicitly checking the “related” objects for specific interfaces. By not adhering to the implementation of these interfaces, the external frameworks require serious application development effort to support them.

MVC principals are also questionable in the Web2.0 world. The concept of fine granularity and validation on the client has serious security implications. You go to any AJAX show and you see one or two sessions with security specialists, cracking AJAX sites, getting free airline tickets, buying things for one penny, etc. It seems that every serious organization should be more interested in distributed model rather then pure client side solution. In that case most of the benefits of global MVC go out of the window.

Yakov. So far we have just a couple of the third-party Flex frameworks, but creation of the new ones is a viral thing, and the last thing I want to see in Flex community is more than a hundred of frameworks that do the same thing. We already see it in the Ajax world.
Anatole, it’s not easy to quarrel when both parties share the same views. We really need other people’s opinions to better represent Flex developers who may see benefits of using frameworks.

16 Comments

  1. swebster said,

    December 27, 2007 @ 10:23 am

    I don’t want to be drawn into the debate too much here. Every application has an emergent architecture, a fundamental skeleton within which the rest of the application will fit. You say that “why do people focus on frameworks rather than reusable components”, and I reiterate – the 2 are not mutually exclusive. A well designed application with Cairngorm will also incorporate reusable components.

    I’ll let the rest of the community respond to your post; my thoughts are already laid out as to when you should and shouldn’t use Cairngorm, I don’t believe a black and white answer is the answer, and I’ve always took the position that if it works for you use it (and it works for many people) and that if you have preferences to use something else or something you consider more fit for purpose, then that’s a decision any good developer is capable of making on their project.

  2. Yakov Fain said,

    December 27, 2007 @ 10:55 am

    See, this is my problem: “If it works for you, use it”. What exactly should work for me? A better structured project that is easier to explain to new team members or your manager or a framework that has clear technical merits like shorter development cycle, better performance, loose coupling between components, simpler architecture? I\’d love to see a comment to this post that would state in a simple down to earth language, “We’ve used so-and-so Flex framework in a so-and-so project. We would not be able to deliver the project on time and it would not be as scalable as it is now without this framework, and these are the reasons 1….2…3….”

    I’ve been doing object-oriented programming during the last fifteen years, but I’m not in love with it and would rather not see frameworks created just for the sake of OOP. But this is a whole different discussion altogether.

  3. Greylurk said,

    December 27, 2007 @ 11:47 am

    I’m pretty new to the Flex Arena, and I haven’t looked at PureMVC at all, but coming from the ColdFusion world, where “frameworks” have proliferated, I have a few things to add to the conversation.

    As to why you would want multiple frameworks for an application (or development platform), think briefly about what a framework really is. It’s a library of pre-written code that provides services for your application, and a library of recommeded design patterns for interfacing with that library of code. Looking at things this way, the Flex Framework, isn’t so much a “framework” as a base Object Library, similar to the .Net API, or the Java API, or even the old school Win32 API. Just because we’ve applied the word “Framework” to the Flex core API doesn’t mean that we don’t need some other code or design pattern libraries to build a complete application. You can start building a .Net application using just the Windows.Forms API, but as soon as you start moving outside of the trivial applications, you’re going to start needing an architectural framework to decide how to lay out your code, and a unit-testing framework to prove that your classes are providing advertised functionality.

    These frameworks aren’t being created just because someone has too much time on their hands, and can’t think of anything better to do. They’re being created because they fulfil a need. Each of them provides a service that the others don’t, or a combination of services the others don’t. You don’t (and shouldnt need to) know all of them, or use all of them, and you definitely shouldn’t be recommending them to clients or refusing to recommend them to clients. You should be familiar with what problems each of them solves, and use them when appropriate. Cairngorm isn’t suited to every single Flex Project. PureMVC isn’t suited to every single Flex projet, nor is Model Glue Flex. However, sometimes one or more of them is appropriate. Being familiar with when each is apprpriate is tough, but a worthwhile exercise.

  4. jgervin said,

    December 27, 2007 @ 12:32 pm

    Not all Flex developers have 15 years of enterprise development. Your article might be more well-received if you would give examples. Maybe recreate the CafeTownsend without a Flex Framework and illustrate the benefits (for you) and how where the frameworks hurt the CafeTownsend project.

  5. Yakov Fain said,

    December 27, 2007 @ 1:08 pm

    I never said without Flex framework. I said without a third-party framework on top of Flex framework.

  6. Anatole Tartakovsky said,

    December 27, 2007 @ 2:05 pm

    Oops – comments are drifting away from the topic. Here is brief recap of what the main topic is. Steven says that you might want to build application on a certain architectural frame – there is a notion of skeleton there. In reality, it is not a skeleton of your future applications (that would be “application”* framework and not the “patterns” one) but rather set of communication patterns (outlets) and implementation classes (application bus wiring).

    Yakovs point is more of “why get a cow when you can have milk for free”. Why do I need extra framework with a lot of duplicate functionality to the Flex one? Why do I have to do all manual labor of wiring and configuration instead of objects falling into places themselves and registering themselves by taking advantage of Flex built-in code generators**? Should we just treat patterns for what they really are and package them in the way we package other reusable objects? Should they be parallel framework or rather extension (or even aspect-based override) of the existing ones? Can useful patterns be that simple? Why I need global objects if I build modular application and most of my events are local? What is wrong with registration and broadcasting events via standard extensible singletons like Application?

    Very few new developers think of Flex as framework. Simple fact that demos/samples work “somehow” by falling into internal communication patterns seems so natural that the question “how” is never asked. Binding, event notification and delegation are pre-built and code generated based on the tiny little metatags we place automatically – and it just works. Another loosely bind framework is CSS implementation. You place objects, apply “CSS” and the behavior/presentation chages – across multiple objects. Again – code generation and pre-built functionality work miracles. And Flex is rich with patterns that like class factories – it is foundation of the current release and becomes more profound with Flex 3 and Thermo. If you master and dynamic resources they provide solid foundation for customization and wiring in any imaginable way.

    The only benefits of “structured framework” approach I can see are in the areas of project management ( well overshadowed by consequences I have seen when asked to take over failed projects – see my answers to Yakov) and some applications closely matching the ones used as testbed for the framework itself – if you think sample application does what you want to do and scope is similar – go for it. If the main reason to go with architectural framework is lack of Flex knowledge and it comes with samples/there is a lot of code – use Steven’s guiding principles “When not to use architectural framework”

    Regards,
    Anatole

    *Application frameworks are essentially applications stripped out of some implementation details and generalized in the places that are most likely to be customized. Indeed, for your application skeleton you want something similar in size and shape – starting “fish” with “girafees” skeleton is going to be challenging at least. With a good fit though, you can have “working” app much faster – even with time for adoption and training

    ** Look at the compiler output to see all the initialization code Flex generated for you – why not use metatags and code generators? Hopefully, with Flex compiler going open source this week ( I believe Adobe mention end of the year in their May press release) most of our code generators can be rolled in. From the management perspective, I firmly believe that writing tons of code should be banned in most of applications.

  7. Victor Rasputnis said,

    December 27, 2007 @ 2:10 pm

    Flex Framework has been designed and implemented as a _framework_. It is not up to us to “apply” the word framework to Flex, it’s them, the Flex team, who came with the Flex Framework by design. What I see quite often, however, is that level of training behind today’s Flex projects is far beyond the required to tap into opportunities Flex framework provides for free. One outcome of this is homegrown frameworks, which re-invent the wheel (at the very best). True, each framework fulfills the need. The grounds for this need should be questioned though. So, my point is the reasonable approach might be to start with the question: how is this design issue is _supposed_ to be addressed in FLEX FRAMEWORK? Chances are, if you ask the Flex expert, you might not need to create a “new” solution. As far as getting _familair_ with each 3rd party framework, if one can’t think of anything better to do, why not. I’d rather _study_ Flex.

  8. kewball said,

    December 27, 2007 @ 5:22 pm

    I’m already into < rant > mode after wrestling through today’s second code example of Flex widget “X” that is thoroughly obfuscated by Cairngorm abstraction. I’m trying to understand how “X” works, not Cairngorm. And no, “X” isn’t at all related to the Cairngorm framework other than it’s part of a Flex project. Indeed when the example writer provides this instruction, “you’ll need to include Cairngorm.swc in your project…” then it’s clear that the author himself realizes a) Cairngorm isn’t necessary for the job at hand and b) he’s writing for an audience that doesn’t use Cairngorm. Bleh!

    I grant the possibility, however remote, that Cairngorm, et al have a useful purpose but never, ever in Flex example code, unless the example is of the framework itself.

  9. polesen said,

    December 28, 2007 @ 4:14 pm

    I can only agree with what Greylurk hinted at: We should be careful with the application “framework” term here. To me, flex is not a framework, it is a library of reusable components and classes, combined with a SDK. Together with the flashplayer, this makes the platform for developing applications in flash. But, it is not a framework, as I understand frameworks.

    There are tons of ways to combine the library classes and tons of ways to organize the source code of flex applications. Guidance can be a good thing, which you can get from a framework. Now, I have not myself used a flex framework yet, but I will be having a look at PureMVC. Maybe I like it. Maybe I don’t. Maybe I shall then look at another. I come from a Java world filled with frameworks. Sure enough, there are some good ones, but there are also lots of not-that-great-ones (again, to me, that is).

    I think it is a good thing with frameworks on top of flex (which is not an application framework in itself).

  10. Yakov Fain said,

    December 29, 2007 @ 1:35 am

    To polesen

    You came from a Java world that has about 50 Web frameworks, and so did I.
    But I believe that Java Struts framework is bad, and when I see all these Flex frameworks that are built around MVC, it\’s clear to me that they were created by a former Java Struts programmers.

    Please try to forget Struts, think more loosely coupled Spring, if you can\’t live without a framework.

  11. polesen said,

    December 29, 2007 @ 8:42 am

    Hi Yakov. I sure can live without a framework, .. I do now :-)

    Are you totally against application frameworks in the flex world, or are you simply against the ones present now? Maybe it is because there isn’t one yet, that satisfies your needs? If this is the case, maybe, by making clear (a) what you don’t like in the existing and (b) what you would like, could start a movement for a better flex framework!?

  12. judah said,

    December 29, 2007 @ 5:01 pm

    I think the Flex framework provides a lot of what a developer needs. Still there is this open ended ness to it that new developers don’t know where to start or how to architect their projects. It is much like a foundation with a wonderful toolbox and lots of “lego” pieces. Still it lacks a clear direction for some common and some obscure puzzles developers face such as global variables, singletons, etc. But these are not enough to prevent someone from finishing a application successfully.

    I have to agree with Anatole that a framework can help define a structure when working on a team. To answer the question, I think a third party framework can provide structure, definition and solve some puzzles developers face but I think they are too much overhead for many projects. I do not have time. I can write something clean and precise without following a framework. What I would like to see is more structure and best practices for the existing Flex framework.

  13. Victor Rasputnis said,

    December 29, 2007 @ 6:36 pm

    If I could sum up: people participating in discussion are confirming that flamework side of the Flex framework (and hence, structure, definition, guidance, etc.) remains hidden treasury – at lest for the unarmed eye. Certainly, that’s a subject for Adobe evangelists and training teams to address. We all should understand, however, that during the early adoption cycle deep dive into coding practices had been almost a taboo, it is so bo-o-ring for the audiences that come to see how _easy_ it is to put a gallery of pictures with transitions into a TileList. In fact, initial part of the Adobe training had been purposely avoiding coding subjects to accomodate wider range, including designers etc – and rightfully so. When you train a corporate client and talk to coders with the similar skills and background it’s a totally different story, of course. I would not be surprised if Adobe come with the course labeled Flex for developers: after all, the answers are already in the documentation, they just need to be brought up to light.

  14. puremvc said,

    January 26, 2008 @ 6:02 pm

    Hi folks,

    The reason I wrote PureMVC was so that people without a lot of design pattern background could be given a set of patterns and a recommended program structure that solve the MVC problem without it having to be cooked up from scratch on every application.

    There’s nothing wrong with building something from scratch, just ‘doing whatever works’, but the problem is that 6 months later you yourself may not remember what you were thinking. And given the common developer’s lack of documentation discipline, it’s unlikely that ‘whatever worked’ was actually documented.

    So 6 months later when a totally different developer approaches your code, if they know the framework, then they only need to understand the problem domain to make immediate progress. A quick survey of the app will show everything is in place and doing what one would expect and you get on with extending the app. This is where the case for maintainability is made.

    Over the last year, I’ve looked at a lot of applications written in PureMVC by other people and – surprise – they usually look exactly as if I had written them myself. There is a lot of benefit to be had in having a well-defined methodology for the core organization of an app.

    Think about where Design Patterns come from. We stole them from ACTUAL architects – people who draw up the blueprints for the buildings we live and work in. Now consider if the home you are living in were NOT architected AT ALL. The builders show up with some materials, have a look at your land and start hammering away. Depending on the skill of the builder, you might end up with something that’ll keep the rain off, but wouldn’t you feel safer in a nice well-architected house? One where all the major issues with home-dwelling had all been taken into account and handled with tried and tested methods (architectural patterns)?

    Scalability is also enhanced because the way to add new use cases to the system is clear. In a system without a sound architecture, the way to add new functionality (without breaking the old) is not always so clear. To return to the un-architected house metaphor, if your house wasn’t architected, and furthermore, neither was your town, then adding new houses and getting to them would be, well, a shantytown: http://www.laputan.org/mud/mud.html#BigBallOfMud

    Here’s an everyday issue with civil hacking without patterns that you’ll be familiar with.

    Do you know how sometimes you walk up or down a set of stairs and they just feel wrong? You look at them and they seem well built, maybe even covered with granite, and nice little sandy footgrip pads, but still when you walk those stairs you feel weird? The step is too long or not long enough, too tall or not tall enough, somehow you stagger up and down them, cursing whoever built them. That’s because the builder / architect completely failed to apply the 7/11 Stair Pattern. Seven inches up, Eleven inches out. That’s just right for most humans and its the pattern for most stairs. Except the poorly architected ones.

    -=Cliff>

  15. Yakov Fain said,

    January 28, 2008 @ 12:09 am

    Cliff,

    I don’t agree with your shantytown analogy. I live in the area where you can find very nice looking development with buildings that look alike, but the nicest developments are those where each house was custom-built. While a framewtork allow some freedom of programming, the best result are achieved when an application uses only those building blocks that are needed for this particular application.

    I can’t argue about pureMVC as I did not have a chance to use it, butwell-designed framework/class library should seemlesly blend into your application. When you look at the application’s code, you should see…the application-specific code, and not model locators, delegates, commands, etc. This is definitely not the case with Cairngorm.
    I’ve joined one of my current projects too late in the game. It consists of 20 separate Flex modules and uses Cairngorm. The code looks convoluted and unnecessary heavy. I do not allow using Cairngorm for development of the new modules for this application. I’d be happy to remove Cairngorm completely, but it turned out to be an expensive project.

  16. verdant said,

    February 18, 2008 @ 7:36 pm

    This is an interesting discussion.
    I am a Flex newbie coming from developing in Java, .NET, C++. Like most developers I think in patterns. So using Cliff’s analogy, I think in 7/11 Stair Pattern all the time. I am given a problem and I solve it using the tools I have used on many jobs over the years – patterns. I don’t need an architect to write it on the blueprint – regardless of what is written the stair will be 7/11.
    This discussion is whether you *need* frameworks when using Flex. And I have come to the conclusion that you don’t.
    Before that, I endured a good few weeks trying to wrap my head around Cairngorm and coming to the conclusion that it was convoluted and felt “wierd”,(like those odd steps), cursing whoever dreamt up this unnatural way of working.
    I have seen this in enterprise projects where the code becomes increasingly complex and over-engineered to comply with rules dictated by the architecture police. The end result is bloated code millions of lines long and hundreds of layers deep that is impossible to maintain. Cairngorm seems to love god-objects, reams of boilerplate code and provides unmaintainability out-of-the-box.
    I doubted myself at first because I’m a newbie, and if the “experts” are using Cairngorm then it must do something and I am just missing the point. But now I am not so sure. Flex does 90% of what I need without any additional “frameworks”, and the other 10% can be delivered using standard patterns.

RSS feed for comments on this post

cialis cananda canadian site for cialis can viagra be purchased without prescription viagra canadian pharmacy cialis on line india non pescription cialis order viagra uk levitra sales online how to buy cialis in canada cheap levitra without prescription propecia generic from india buy propecia without a prescription viagra quick delivery cialis samples cialis dosage cialis usa best way to use cialis viagra pay by e check find cheap cialis canadian viagra no prescription us viagra sold in us no prescription needed viagra sales from us buy cialis africa cheapest propecia prescription price cialis buy generic cialis online cialis canada on line cialis fast delivery cialis professionel buy vardenafil get free viagra sell viagra cialis delivery in 5 days or less canadian cheap viagra pills levitra sale viagra online in canada viagra canada 50mg buy female viagra online without prescription generic viagra canadian pharmacy generic viagra uk viagra online to canada cialis endurance cialis canadian cost super viagra uk cheap propecia canada cialis soft tablets pharmacy fast delivery viagra buy cheap uk viagra cialis com viagra ordering canada cialis order by mail buying cialis online canada viagra sale buy indian generic viagra buy viagra canada is it legal to buy viagra from canada purchase cialis no prescription viagra on line sale canada pharmacy best levitra prices cialis online canada no prescription drug hair loss propecia buy viagra online in the uk ed canadian pharmacy viagra pills online pharmacy propecia renova viagra online without prescription in canada tadalafil cheapest viagra buy brand name cialis no prescription needed best canadian pharmacy for propecia cheap 25mg viagra but viagra online with mastercard cheapest propecia uk baldness male propecia viagra cost soft viagra tabs viagra online shop france deer viagra cheap levitra cialis online ordering buy cialis best price cialis 10mg price how to buy cialis online with overnight shipping shop viagra pfizer where to get viagra viagra online 50mgs viagra cialis canadian pharmacy brand name cialis without prescription cialis mail order uk cheap propecia online cheapest propecia in uk discount viagra soft gels fast shiping viagra buy viagra in australia generic cialis 10mg cialis on line pricing in canada buy levitra without prescription cialis uk order cialis kanada buy viagra now how to get cialis without prescription drug viagra cheapest priced propecia viagra original buy online order viagra canada 5 mg propecia buy viagra visa cheapest propecia in uk original viagra where to buy cialis cheap viagra for mail order find cheapest cialis best price for propecia online health center for viagra prescriptions purchase discount viagra 10 mg vardenafil online canadian pharmacy viagra cheap viagra prescription online usa pharmacy viagra viagra cheapest prices canadian pharmacy discount cheap canadien viagra viagra femele viagra purchase online pharmacy canada viagra viagra mexico buy pfizer viagra online generic fda approved purchase no rx cialis canada viagra sales viagra pushups viagra online reviews cialis 20 mg canada cialis mail order uk canada online pharmacy propecia viagra from china cheapest levitra uk order viagra us buying propecia online discouont viagra levitra purchase viagra where to buy were to buy viagra buy viagra without rx levitra in uk how to buy levitra online propecia pay by check buy cialis pill fda approved viagra viagra online buy buy cialis online without prescription viagra online tester best place cialis canadian viagra sales best way to buy cialis online generic viagra viagra online 50mgs prescription viagra buying viagra now buy cialis canada purchase cialis us viagra england mexico viagra without prescription viagra cialis online canada canadian online cialis order discount viagra online natural viagra propecia candaian pharmacy lowest price viagra us pharmacy propecia or finasteride cialis ship to canada cialis 50 viagra online delivered next day canadian healthcare generic cialis how much is viagra fine levitra viagra price cheap propecia online india get propecia prescription cialis sample viagra prescription needed cheap viagra pills online free sample pack of cialis best price generic propecia cialis pharmacy online purchase viagra usa discount sale viagra bought cialis in mexico? viagra online without prescription united states propecia buy cialis philippines female viagra next day delivery approved cialis pharmacy tuna viagra viagra on line canada cialis and ketoconazole sales of viagra real viagra no prescription mexico online generic cialis 100 mg cialis canadian viagra generic canada pharmacy viagra super active viagra purchase on line pharmacy cheap propecia online canadian online pharmacy viagra online prescription propecia canada prescription viagra overnight delivery cialis cialis generic how to buy levitra online purchase cialis usa viagra dose brand por cialis online 100mg viagra canadian scam cheap cialis online canada cialis discount prices non generic levitra propecia sales canadian canadian healthcare generic cialis low cost viagra from canada buy cialis canada hydrochlorothiazide cialis health center for viagra prescriptions viagra cialis online cialis at canadian pharmacy online propecia prescription generic viagra australia cialis or viagra discount sale viagra viagra no prescription needed canadian generic viagra online best price for cialis viagra alternatives canada generic propecia buy 25mg viagra online canada generic viagra with echeck get cialis fast viagra onlines viagra prescriptions without medical overnight canadian viagra cialis without rx buy cialis on line no prescription viagra online without prescription in canada cialisis in canada propecia 1mg price canada cheap viagra buying generic viagra online for soft tabs viagra buy real viagra pills usa viagra price germany levitra.com cheapest viagra to buy online in uk discount levitra online viagra cialis trazodone cialis 5mg canada cialis 50 canada levitra order propecia viagra us pharmacy cheap generic viagra india usa cialis viagra cialis for sale cheapest propecia pharmacy online buying cheapest viagra no rx viagra best prices on generic cialis viagra tablet no prescription needed cialis overnight cialis professional 100 mg buy generic no online prescription viagra viagra canadian sales 50mg viagra retail price cialis online cheap cialis samples buy levitra online canada online canadian pharmacy propecia viagra pharmacy cialis 30 mg 50mg generic viagra wh ere can i buy cheap cialis viagra for canada levitra sell i need to buy propecia order levitra online were to buy viagra? cheap viagra 50mg cheap viagra canada online viagra levitra cialis viagra femele order viagra online no prescription purchasing cialis viagra echeck canadian healthcare viagra sales levitra online pharmacy cialis canada 5mg cheap propecia no prescription free viagra without prescription buy cialis from india buy cheap uk viagra cialis free delivery viagra uk usa cialis women cialis 20 mg 100 mg viagra fast order cialis viagra in usa order rx canadian cialis buy generic viagra canada cheap fast generic viagra samples of cialis low cost viagra from canada canadian cialis without a perscription generic propecia cheap online presription for viagra viagra online without prescription from india best propecia prices buy canada in propecia levitra 20 mg viagra samples buy viagra with discount overnight cialis delivery saturday online canadian pharmacy levitra cialis from canada buy viagra online canada i need viagra now cialis price in canada propecia sales canadian online propecia uk order viagra online uk cialis london delivery buy propecia now pharmacys that sell propecia buy cialis mexico what is viagra soft tabs buy viagra online from canada cialis without prescription brand name buy propecia without prescription cialis australia buying generic viagra online for generic cialis for sale cialis 50 cheap cialis without rx buy online propecia viagra no prescription canada cialis no rx required viagra in australia canadian generic cialis - best price viagra overnite can viagra be purchased without prescription cheap propecia no prescription viagra 25 mg online viagra prescription label buy propecia international pharmacy i want free viagra cialis online us cialis canada on line propecia cialis viagra purchase cialis soft tabs find cialis no prescription required pharmacy fast delivery viagra cialis woman viagra for less in the usa cialis professional no prescription where can i purchase propecia uk viagra sales best deal for propecia best reviewed cialis sites online levitra cheap discount cialis purchase no rx cialis buy cialis online china viagra soft tablets canadi an pharmacy propecia viagra in the united kingdom we deliver to canada viagra generic cialis cialis super viagra drug viagra cheap viagra ship next day buy viagra without a prescription no prescription cialis united-pharmacy viagra tablets cialis buy pfizer viagra online canada viagra sales discount cialis online buy prescription propecia without cheap propecia online india female viagra cheap pfizer viagra for sale homemade viagra cialis brand without prescription generic viagra canadian viagra online overnight viagra pharmacy buy viagra online canada viagra switzerland cheap levitra online cialis 5 mg where to buy viagra online women viagra cialis prices cialis canadian cost where to buy viagra best cialis prices best place to buy viagra viagra ordering generic cialis sales find discount cialis online original brand cialis buy cialis online uk cialis tabs cialis canadian pharmacy buy cialis on line no prescription going off propecia canadian pharmacy viagra cheap generic prescriptions propecia canadian soft viagra real cialis without prescription canadian cialis 20 mg cheap propecia canadian pharmancy order cialis online canada levitra purchase cialis no prescription needed buy cialis from mexico canadian generic viagra online generic propecia finasteride price cialis cialis 5mg canadian generic buy propecia prescriptions online pill decription of propecia viagra medication cialis soft womens viagra online viagra generic best prpice cialis brand name cialis internet generic cialis mexico: one day delivery cialis viagra without prescription low price cialis buy viagra online canada cialis generic online cheap viagra online canadian healthcare viagra online uk get viagra fast best shop for viagra best price propecia womens viagra cheap no prescription cialis generic drug viagra fed ex cheap levitra without prescription viagra injectable buy cialis overnight delivery generic viagra online pharmacy canadian online pharmacy viagra canadian low price cialis and viagra generic propecia viagra healthcare canadian pharmacy propecia cost cheap generic levitra buy cheap cialis online uk cialis sale overnight shipping order viagra 25mg online canada bought cialis in mexico? where to get a precription filled for viagra cialis express delivery viagra professional canada generic levitra cialis buy viagra online canada cialis dosage viagra overnight mail order propecia prescriptions cialis samples canada cialis online pharmacy viagra online usa purchase cialis without prescription canada viagra pharmacies scam brand name viagra cialis online ordering cialis soft tablets purchase levitra canadian pharmacy where to purchase cialis viagra costs generic viagra canada buy cheap propecia online generic propecia alternative best doses for propecia viagra online reviews levitra versus viagra drug hair loss propecia united healthcare viagra ed canadian pharmacy where buy viagra buy viagra from canada viagra online wit cheapest viagra anywhere canadian cialis no prescription buy propecia now cheap prescription propecia cialis on prescrition in australia canadain cialis buy cialis online without prescription canadian pharmacy cialis 5 mg is buying viagra online bad viagra dose viagra no prescription needed propecia no prescription cialis no prescription needed quick delivery cialis ottawa pharmacy viagra sales in canada deals on cialis cialis generic cialis health store how to buy levitra in canada please prescription. 20 purchase cialis vs. australia healthcare online viagra cheap viagra from india how to get some viagra best viagra buy in canada online cialis lowest price propecia buy viagra online paypal viagra availability in chicago cheap propecia uk purchase viagra from canada purchase real name brand viagra generic cialis next day delivery alternatives to cialis cialis mail order usa cialis canadian pharmacy generic cialis mexico cialis free delivery generic online propecia generic propecia sale sales cialis viagra and paypal viagra, overnight delivery canadian healthcare find cheap viagra online no prescription viagra brand cialis online lowest propecia price soft tab viagra cialis women purchase viagra online pharmacy rx1 buy propecia now levitra 20mg canadian pharmacy discount lowest price propecia best pfizer viagra for sale viagra canda purchasing cialis with next day delivery canadian medicine viagra viagra online delivered next day propecia canada viagra.com viagra for sale online in the uk herbal propecia viagra online 50mgs cialis medication cialis professional 100 mg cialis delivered fast viagra cialis online sales viagra to sell buying cialis no prescription viagra for sale united pharmacy buying propecia cheapest price viagra cialis canada cheap cialis free samples drug viagra viagra delivered one day compare cialis prices online levitra discount pfizer mexico viagra best price viagra buy viagra lowest price 30 day package of cialis viagra cialis sales price of propecia from canada canadian levitra without prescription viagra online without prescription from canada propecia for sale how do i order viagra online cialis delivered canada ordering viagra uk 50mg viagra no prescription cialis generica generic levitra canada buy viagra without pr canada healthcare viagra mexico pharmacy cialis 10 mg vardenafil online cialis from india viagra in usa order cheap canadian viagra pills approved viagra pharmacy cialis sales usa order generic viagra canada buy cialis pills cialis order by mail rx canadian cialis free viagra cheap generic viagra india where to buy cialis compare cialis prices online cheap cialis in uk professional cialis cialis pills for sale guaranteed cheapest viagra cialis 10 mg levitra discount cheap drugs, viagra buy generic cialis online from canada canadian pharmacy no prescription needed viagra prescription for cialis online canadian rx viagra canada cheap viagra buy online viagra cialis for sale in uk viagra in usa order get viagra without a prescription cialis online store price check 50mg viagra cheapest viagra prices best prices on generic cialis find cheap viagra online name brand cialis levitra prescription levitra canadian pharmacy buy cialis online in usa propecia with no prescription cialis delivered canada best price for generic cialis online prescription propecia cheap price viagra discount sale viagra herbal viagra wholesale buy cialis online uk brand cialis for sale cialis from qualified pharmacy viagra availability in chicago cialis without prescription brand name purchase discount cialis canadian non prescription viagra canadian pharmacy cialis professional online cheap viagra canada canada healthcare viagra brand cialis online free sample pack of cialis viagra discount can viagra be purchased without prescription viagra quick delivery cheap cialis discount drug propecia cialis no presciptions cialis professional canadian pharmacy viagra no prescription best price generic cialis can levitra be bought without a prescription mexican viagra cialis without a prescription viagra professional canadian pharmacy brand name viagra buy viagra from canada cialis for free usa buy viagra viagra echeck discount price viagra find cialis no prescription required buy viagra without rx canadian healthcare canadian viagra and healthcare viagra in us pharmacy, propecia soft gel viagra canadian healthcare online viagra cheap viagra canada cialis prices viagra online no prescription canadian pharmacy discount code viagra we deliver to canada viagra generic levitra canadian healthcare buying cialis soft tabs 100 mg viagra prices viagra for order levitra sales online viagra new zealand buy viagra pills viagra in usa buy cialis on line canadian low price cialis and viagra viagra north shore three meds viagra when will viagra be generic cheapest propecia uk cheap viagra without prescription purchase viagra online without prescription cialis online usa viagra lawyers by cialis online buy cheap generic propecia best viagra soft prices viagra canda cialis online canada no prescription viagra express delivery propecia for sale online propecia without perscription viagra 25 mg online can i buy viagra in canada get propecia online pharmacy buying viagra in canada canadian healthcare viagra uk purchase viagra without prescription how to buy cialis viagra online in spain viagra pfizer no prescription cheap levitra without prescription cialis next day viagra north shore homemade cialis cialis no prescription needed quick delivery purchase cialis from us viagra free trial pack cheapest propecia indian cialis rx generic viagra cialis online canadian pharmacy buy viagra online without a prescription info viagra generic viagra online pharmacy generico viagra were to buy viagra online indian viagra cialis delivery canadian pharmacy viagra brand aus viagra viagra pill cheepest cialis cialis no rx discount generic propecia viagra 50mg no prescription 10mg levitra get viagra buy cheap propecia internet pharmacy propecia cost viagra propecia generic canada buy cialis on where to purchase cialis cialis 100 mg buy real cialis online get cialis very fast purchase discount cialis canadian viagra for sale cheapest price propecia cheap viagra canadian chemist generic propecia cheap purchase cialis online without prescription cheapest viagra to buy online in uk generic propecia india real viagra pharmacy prescription how much to buy viagra in pounds purchase viagra online best price generic propecia cialis canada online drugstore non prescription cialis buy cialis online usa viagra in usa levitra tablets canadian pharmacy viagra cheap cheap viagra internet 5mg cialis online viagra alternatives cialis +2 free viagra combine cialis and levitra best viagra and popular in uk cialis women viagra pharmacy cialis alternatives viagra cialis for sale buy propecia online usa how to order one viagra canadian healthcare online viagra levitra sales cialis health store online pharmacy canada viagra generic propecia online pharmacy online viagra levitra cialis viagra for sale fast viagra usa branded viagra cialis canada on line propecia in canada daily cialis online buy generic cialis canada viagra overnight shipping 100 mg viagra canada pfizer viagra cheap real viagra to buy propecia dr dallas levitra for sale canadian health care pharmacy order viagra viagra online uk usa cialis sales buy cialis without rx viagra canadian chemist online generic cialis 100 mg cialis from india tablet viagra propecia online usa viagra seizures viagra soft cialis and viagra on li cialis india pharmacy buy canadian cialis online best price propecia canada info viagra daily cialis for sale buy levitra online without prescription viagra 100mg england cheap cialis canada cialis eli lilly cialis for sale in uk quality cialis soft tabs cialis buy cialis online no prescription cialis online sale how much cialis canadian cialisis buy viagra 100mg cheap discount cialis safe online to buy cialis buy viagra online real brand viagra for sale viagra cheap fast shipping finasteride no prescription viagra pharmacy london how to get cialis in canada viagra express delivery buy real viagra pills usa cialis online uk viagra without prescription levitra viagra cialis brand cialis online fast shiping viagra canadiancialis viagra 100 non pescription cialis mail online order propecia canadian pharmacy for generic cialis viagra mastercard cialis by mail viagra professional canada order propecia online pharmacy canada cialis buying propecia online cialis vs levitra next day delivery cialis discount online propecia generic propecia in uk purchase viagra from us propecia 1mg price cialis online uk quick united states viagra cheapest cialis to buy online cialis mexico sell viagra tennessee online pharmacy propecia viagra fast shipping purchase cialis no prescription cialis online order cialis canadian buy cialis uk viagra soft tabs 50 mg canadian pharmacy for cialis canada viagra pharmacies scam canadian pharmacy cialis soft www.viagra.com 25mg viagra online search: rx1 cialis cialis daily canada branded viagra order cialis from canada cialis online shop cheapest propecia uk cheap viagra with fast delivery cialis fast delivery viagra online to canada brand viagra canada usa cialis selling propecia online cialis 10 mg best price for propecia online free cialis sample cialis samples canada viagra/cialis sales best prices for propecia pfizer viagra