The Mallmus Blog

Business Tag

Frameworks

Welcome back to The Blog, in this entry I'm going to announce that this blog will only be used for business related topics, no more personal stuff here - I'll be blogging about personal topics at www.adamwintle.com.

Moving on, the topic of this entry is frameworks and what are they...

What's a Framework?!

Good question - coming from more of a design background than programming, I've always had difficulty grasping the concept of frameworks. After many lengthy discussions with colleagues and friends about the definition of an online framework it has been agreed upon (or disagreed upon) - for a non-logical thinker this is what I believe to be the best description of a framework...

To quote Wikipedia a framework is "the skeleton of an application that can be customized by an application developer", which doesn't really make much sense in a website environment - to quote the dictionary a framework is "an essential supporting structure of a building or object"; these two definitions indicate that an online framework is going to be the underlying foundations for your site, that's a start.

For the web there are a number of services and products which are categorised or marketed as a framework, and as I was saying I know more about design than code, so correct me if I'm wrong here, here's a few of my favourites:

Ruby on Rails: www.rubyonrails.org

This is the Ruby programming language coded upon the Rails programming method; which together is labelled a framework - any programming language can be coded upon Rails, so you could get PHP on Rails if you wanted.

CakePHP: www.cakephp.org

This is another framework which uses the PHP language, they offer a package which lets programmers code more robust sites - another service which has labelled themselves as a framework.

Django: www.djangoproject.com

Here's another framework using the Python language, this one lets the programmer rapidly develop their site and produce cleaner code - sounds great!

So far to my understanding these services take an already existing programming language, state that its very cumbersome and complex, and offer something which bolts-on to make it simple and easier to use, so my search is over?

JavaScript Frameworks

I'm better at JavaScript that those hard-core programming languages I've mentioned above, and I've found a number of JavaScript services and products marketed at a framework - JQuery, script.aculo.us, MooTools and Prototype are my favourite ones.

Each of these lets the developer produce a website quicker using JavaScript - ah but wait! both JQuery and script.aculo.us refer to themselves as a framework and a JavaScript Library, now that's more descriptive! - A library for JavaScript, a collection of particular ways to code the language, sounds like something I'd like to use, so maybe this is a better way to think of a framework.

Content Management Systems

Now to throw something else into the mix, not all, but some Content Management Systems (CMS) also refer to themselves as a Content Management Framework (CMF) - here's a list of what Wikipedia calls a CMF - how does this type of framework fit into my definition?

Usually a CMS helps the website owner or developer organise and manage their pages and articles, in some shape or form you can usually login and change titles, headings and the body text of a page - this doesn't really sound like the programming-enhancers we've been looking at above - so how can this website file manager become a framework too?

A good example of a CMS/CMF is MODx - which actually calls itself a PHP framework too - the best way to describe MODx is more like a foundation and an underlying basis for you to start building your site onto, kind of like the dictionary definition, but not how I imagine the hard-core languages. So MODx wouldn't just be a glorified file manager, instead a development aid, something which really helps out a designer, a shortcut for the programming.

Mallmus Loves MODx

Lots of CMSes let you integrate your own PHP, JavaScript and hard-core code into their systems, allowing you to build up a collection of the best methods to build a site - this compilation, is really what a framework is to me - the individual elements have been joined together for you so they all work in unison, this is a group of tools you use together, like using the Ruby programming language with the Rails method (only two tools here), where as a CMF has a broad selection of tools on offer, allowing the designer or developer to speed up their work (like lots of the mentioned frameworks have promoted their products to do!)

Feel free to completely correct me if you think I'm wrong, this is just my own take on what a framework is.

Posted by Adam Wintle on August 13, 2008.