>> GreenByte.info By Nick Tong (quiksilv) | Supported by: TalkWebSolutions.co.uk

Framework MATRIX - which one to use?

As we all know quite often clients/projects require a verity of approaches to archive the end objective.  So here’s my idea.  What if a user can answer a list of questions and get presented with a chart showing them which frameworks would best fit there project, i.e.

User interface

(note: click on images to make them larger - these are just examples, it may very well change.)

Sound like a good idea?  Here’s where I need your help.  First of all we need a list of questions that we should ask the end user (please post them in comments here or email me).

What we then need to do is build a marking matrix.   Keeping things simple for my little brain I think we should mark each framework against each question (yes/no) and sum the totals at the end. 
As there are vast numbers of frameworks popping up I need users/experts to rate frameworks against these questions i.e.:

Expert Interface

Once I have this information I can create the system to allow the users to answer the questions; we can present them with a screen like this (once answers are complete).   Its then up to them to decide which one they want to use, but this should help.

End result

To summarise how I need your help:

  • Please post any questions that you think I should ask.  (As part of the question process it would be great to give the user some information/guidance regarding the question (in hint format).  If you have time please add a short hint for the question)
  • Once all questions have been entered I will build the marking matrix; it would be great if you could complete this.

Any thoughts and suggestion would be MORE than welcome.

NB: Please excuse me if I’ve not used your frameworks in these examples:


 
Comments
Nick Tong's Gravatar To kick things of here are a few ideas from me:

Do you have and excisting framework in place?
Do you require Dynamic event handling?
Do you require database interaction?
Do you requrie a procedural framework?
Do you require intergrating with 3rd party software?
Do you require a Object-oriented framework?


I have a few more but I thought this could start us of?
# Posted By Nick Tong | 15/04/06 19:21 | Report abusive comment
John Fratton's Gravatar What about some buisness questions like:

Do you have a training schdule to allow for a learning process?
Do you have large development team?

Great idea.
# Posted By John Fratton | 15/04/06 19:26 | Report abusive comment
Greg's Gravatar Do you require multiple locale support?
# Posted By Greg | 15/04/06 21:23 | Report abusive comment
Simon Horwith's Gravatar It's an interesting idea, but I'd imagine most questions aren't so easy to use to rate frameworks on. I'd start by actually analyzing the strengths and weaknesses of each framework and then ask questions based on those findings. It's an interesting idea, though.

One problem is that people and companies tend to use whatever they already know. A tool like this, if it did work, would probably only be very useful to a company that doesn't have expertise in any framework (or has expertise in all of them, which is unlikely) and is looking to settle on one.

Just something I thought I'd throw out there.
# Posted By Simon Horwith | 15/04/06 21:54 | Report abusive comment
Nick Tong's Gravatar Thanks for your comments Simon. I agree with you that we do need to consider the strengths and weaknesses of each framework (FW). IMHO by asking the CF community what questions they ask themselves when choosing a FW gives one a good gauge to selecting a framework. With this knowledge maybe we can get an insight and delve into the progressing world of CF Frameworks.
# Posted By Nick Tong | 15/04/06 22:18 | Report abusive comment
Mark Ireland's Gravatar Do you want multiple apps sharing the same authentication code?

Do you have a retirement date for your software lifecycle?

Do you want databases that are easily migrated?

Do you want apps that are entirely data driven?
# Posted By Mark Ireland | 16/04/06 00:22 | Report abusive comment
Edward T's Gravatar Nick,

Interesting idea, but these questions are all coming from a development/capability standpoint - i.e., "what can the framework do?" But most of the strategic decisions about which framework to adopt would be targeted toward total cost of ownership and risk.

I'm not sure how to make these into yes/no questions, but I would consider (in fact, am considering!!) aspects like:

How long has the framework been around? How many other sites/organizations like mine have adopted it?

What kind of support options are available? Does it have a strong user base?

What is it likely to look like in a year? In five years?

Is it easy to upgrade? Will it be easy to migrate off of later, if it loses momentum or a more suitable framework arrives?

What is the learning curve for new developers to understand it? Is there a significant gap between understanding how to implement it and using it in a sophisticated way?

Maybe this kind of decision is out of the scope of what you intended, and you are just looking for a capability listing. My experience, however, is that these kinds of questions preoccupy CIOs more than simply what the framework can do.
# Posted By Edward T | 16/04/06 03:14 | Report abusive comment
Peter J. Farrell's Gravatar Nick,

Dare I say an interesting idea again? However, I think this task is going to be more difficult than it is currently presented. In the what I can make out in your example images, the problem is that frameworks like Model-Glue, Mach-II and Fusebox are MVC frameworks, while Reactor is an ORM type framework and ColdSpring in an IoC framework. Comparing them is like comparing an orange to a beef steak!

Edward also brings up a good point about support, future development, current acceptance and upgrades/migration etc.

When it comes to our current selection of MVC type frameworks for ColdFusion you really only have three "big" choices at the moment - Model-Glue, Mach-II and Fusebox. Fusebox is the only one that support procedural coding while Model-Glue and Mach-II are of the OO type.
# Posted By Peter J. Farrell | 16/04/06 04:15 | Report abusive comment
Nando's Gravatar "What if a user can answer a list of questions ..." is a big "what if" that depends a lot on the user. Our clients wouldn't have a clue how to answer significant questions that would make a difference as to which framework to use. Their goals and needs are very different from that of a developer's, and these frameworks are designed for a developer's goals and needs, not a user's primary goals and needs.

So the basic question for the end user would probably come down to "Which framework can save me (the end user) the most money?" or "Which framework can make me the most money?" or "Which framework can get this application done the fastest so we can get to market sooner?"

And the answer to those questions has more to do with host of other factors than the framework itself.
# Posted By Nando | 16/04/06 14:12 | Report abusive comment
Nick Tong's Gravatar Okay so it's getting very suggestive that we can’t just ask simple Yes/No questions. The reason I was trying to do this was to make the marking Matrix simple/quick for users/experts. If this starts getting complicated and taking up to much time then it simply won’t get done.

I’m not trying to find the Holy Grail here; to be honest if a developer uses a framework already they are likely to stick to what they know. I see it as a nice starting point for beginners or for someone who want to try another framework. The real power for others will come from seeing the marking matrix that people have completed; I plan to make this public. For example you could see how Sean Corfield (thanks for the post) has marked the questions against the matrix.
# Posted By Nick Tong | 16/04/06 17:00 | Report abusive comment
John Farrar's Gravatar Here are questions I think we should add. (Many of these questions were scoffed at by the CF elite... and now several of them are standard to ASP.Net 2.0!) I have been building personal frameworks with these features within months of the release of Fusebox 2. We are building version 4 right now and loving the benefits.

1. Does your framework support multiple methodologies running side by side as installed applications. (Not nec. the popular ones, but allowing for different coding styles within the same framework. Still only one methodology for an individual application.)

2. Do your applications allow beginners to get up an running writting applications with simple stand alone scripts and grow into advanced techniques using the same calls to the pages via the basic URL if he chooses to update the app to another methodology?

3. Do you allow for applications written by others to be integrated in a simular manner to how applications are written for operating systems? (Like buying word processors, databases, etc. but on the web it would be forums, faqs, shops, etc.)

4. Does the framework allow for common user authentication of seperate apps running on the same site?

5. Does the framework allow for common presentation of content so that the look of a site can be updated without having to rewrite the code? (Also allowing developers to focus on the program rather than the presentation?)
# Posted By John Farrar | 17/04/06 12:59 | Report abusive comment
Edward T's Gravatar Nick -

Maybe a ranking or rating would work better than yes/no? For example, you might list out your columns as M-G, M-II, & Fusebox. Then put in each row a "question" or characteristic, and allow users to rank or rate the frameworks for that characteristic. So, to translate your first set of questions into this format, you would have:

Event handling is managed by the framework dynamically
The framework facilitates database interaction (this question needs to be more specific, though)
The framework supports procedural programming
The framework intergrates easily with 3rd party software (also needs to be more specific)
The framework enforces object-oriented design

My questions would fall out as:

The framework has a proven track record of success on multiple, large scale projects.
The framework has wide acceptance and organized user community.
The framework has support options.
Framework upgrades are backward compatible.
etc.

Others' questions (e.g. John's above) would be similarly translated.

To address Peter's observation, you will probably have to introduce some combination forms in the columns (e.g., M-G, M-G + ColdSpring, M-G + ColdSpring + Reactor). That could get pretty complex, but it seems like the only way to get a roughly apples-to-apples comparison. Example apps like the ones that Sean has provided might be the best way to expose the inner workings and development choices that must be made with the different versions.

Rather than a "wizard" approach, I think the most effective decision-making tool is a matrix mini site. To be sure, the matrix is the at-a-glance foundation of the process, but the IT manager making the decision wants to be educated in the process.

Haha!! I should go work for the government - I think I just feature-creeped this mouse into an elephant :-P
# Posted By Edward T | 17/04/06 13:55 | Report abusive comment
Matt Williams's Gravatar It seems the end user could care less about what framework you use. I've never worked with a non-developer that asked to see my code. It seems a matrix or 'feature comparison' would be a good idea though. For the majority of applications, any framework can be made to work Just look at the myriad of sample apps that are ported to multiple framework iterations. (e.g., cfpetmarket).

As far as how to pick one goes. For me, I started with Fusebox because of its longevity and widespread use, but wanted to do OOP. It seemed clunky and I got frustrated. So on to Mach II (why not ModelGlue? probably because it wasn't to a 1.0 release at the time). But now, with minimal reading and some sample app reviews, I understand Model Glue also.

Maybe a feature comparison doesn't even make sense and we should just do a comparison of how each framework handles different things such as where are form and url variables put, how do I define a view, where do I put my dsn, etc.
# Posted By Matt Williams | 17/04/06 14:46 | Report abusive comment
Jim's Gravatar Suprised no one mentioned documentation. I see too many frameworks constantly adding new features but lack good solid documentation.
# Posted By Jim | 18/04/06 14:45 | Report abusive comment
WinBiLL's Gravatar This site is interesting and very informative, nicely interface. Enjoyed browsing through the site.

http://www.51checkic.com/
http://blog.pixnet.net/shuntong/
# Posted By WinBiLL | 19/10/07 08:46 | Report abusive comment
BlogCFC was created by Raymond Camden. This blog is running version 5.5.1.