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.
(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.:
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.
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:








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?
Do you have a training schdule to allow for a learning process?
Do you have large development team?
Great idea.
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.
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?
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.
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.
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.
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.
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?)
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
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.
http://www.51checkic.com/
http://blog.pixnet.net/shuntong/