Why use a framework?


Why use a framework?

Posted by Luis Majano
Jun 16, 2010 11:27:30 UTC

Catchy title huh?? Well, I was doing some digging around today and found some fantastic things I would like to share and open for discussion.

Why are frameworks like ColdBox, Model-Glue, Mach-II, etc, important? In all reality, they are extremely important, because if they did not exist we would end up rewriting them in some shape or form.  Software is all about reusability and adapting to change.  Nowadays it is also about adapting faster and faster.  How many developers working on tight deadlines have the time to ponder and think about all the “magical” ways they can make their components be reused in the future? Or how to really build that SES engine better than anything out there.  These are great things to have, but they don’t happen often in reality.  We are tasked and need to get things going fast and deliver our business.  I like this quote:

And let's face it, business requirements change so quickly that by the time someone else comes along to reuse your stuff, it probably needs to be re-written anyway. By Elastic Path

I can honestly say that every project I worked before using a framework started very simple and with simple architecture.  Then as requirements change and grow, more features are needed, and I get cornered into some areas of resolution:

1. I can rewrite what I have in a “get it DONE” fashion just in time for a release.  This could result in buggy or hard to test code.  I still have not really adapted but just expanded.

2. Download that super duper library I found and just squish into my simple architecture.  Again, I am introducing things that are hard to test and could result also in new bugs of introducing a library into my environment.  I have not really adapted myself to change, again, just expanded.

3. I can begin to modularize what I have, apply OO analysis and design and create a pseudo-framework that can accept new components more easily without breaking what I already have and expand it.  Ok, now I start to adapt, but at what costs?

I might like number 3 but I end up creating a framework of my own or home grown frameworks tested in one environment only, by a small subset of applications and only being able to adapt to a small arena of evolution.  This is where proven libraries and frameworks come into play.  There is a wealth of value in these libraries as they are used world-wide, different loads, different requirements and their number one priority is how to adapt to change and make our development more efficient.  Now, I won’t go into how one is better than the other, etc.  Each framework delivers their own feature sets, implementations, etc, but that does not REMOVE the benefits of reusing these libraries.

I am a big proponent of reuse and open source (couldn’t you tell), and I truly believe in avoiding building anything from scratch if I can.  I know there are cases when things that I need do not exist or are not built yet, and then I would consider building them.  If not, reusing libraries such as ColdBox, just empower me to deliver my business needs faster, gives me a great platform to develop on, I can get help around the world, I can extend its functionality to adapt for change, and so much more.

I strongly believe in community reuse and collaboration, why reinvent the wheel so many times for so many projects just because I don’t want to use something that somebody else wrote, or because I think frameworks are just too complex to work with.  This is not a good business decision that could potentially bite you in the future.  Writing open source frameworks and libraries is hard work and it takes immense number of hours on research, testability, adaptability, modularity, reusability, etc.  The work of framework authors is something to be valued upon and certain trust on them has to be developed.  I truly admire my colleagues like Dan Wilson, Mark Mandel, Matt Woodward, Peter Ferrell, Sean Corfield, etc.  I know their devotion to helping our community and at the end of the day make our community business needs better.  Relying on open source professional frameworks is something engrained in so many communities like python, java, ruby, etc.  The benefits really outweigh the cons.

In conclusion, this commentary arises out of certain discussions of late with some developers on why the need of reusable frameworks.  I hope this can give insight into why use a framework or open source library.  Again, I welcome your thoughts and opinions.

 


David Boyer

Great post. I agree with your points about home grown frameworks, which I've been guilty of creating a couple. It's always harder to test them, they aren't as proven as the larger frameworks like ColdBox are and when there's a problem with it you have no choice but to fix it yourself.

I'm definitely in the camp of using a major framework instead for applications now as you have a much larger source of support, more tested and solid code, plus you have the code being improved all the time.

Martin Winters

Would you consider the possibility of finding an editor to re-write your documentation? I know that English isn't your native language, so I apologize. However, the single thing which puts me off ColdBox is the turgid, tangled and often almost incomprehensible documentation. If you could find somebody who can write more clearly, using better English, and without so many spelling and grammatical mistakes, we would have a framework which the CF community could finally embrace as a standard.

Luis Majano

Yes, we have actually, and they have started to proof read and rewrite the documentation. So yes, we are improving as we speak!

Site Updates

Entry Comments

Archives

Entries Search