Tuesday, February 21, 2006

Equinox to the rescue

I've been trying to restart work on an application that I've shelved for a year. Doing so inevitably meant updating the stack to the latest/greatest versions of each framework; in this case it was Tapestry/Hibernate/Spring. Lucky me as all 3 have come out with major version releases since :(

It never ceases to amaze me that framework developers simply refuse to ease the learning curve of their products for newbies. Don't take that as me being ungrateful for the amount of time they spend on these projects, that's further from the truth. However, trivial stuff such as blank applications (i.e. struts-blank.war) are rarely bundled with a framework, meaning the new user is expected to RTFM and understand the entire framework simply to get to that starting point where they can learn/develop in a more logical manner.

Yes, each framework comes with it's sample applications. The value of a 'blank' application is vastly greater IMO as it's something each user needs for the start of any project. For new users, it's great to start with a blank canvas where all the underlying pieces have been put together for you and you concentrate on learning the framework by adding piece by piece.

I can't imagine the framework authors don't have such a template application lying around where they simply copy and rename it to a new directory in order to start a new project. I simply ask that you bundle that with the dist. Oh that piece of crap you say? No it's not crap, it's really useful, trust me!!!

Late last night, as I pounded my desk in frustation, after experiencing endless hours of modifying XML files, googling, scouring mailing lists...I was about to give up. My situation was so dire that my mind wandered and in a moment of weakness, I wondered aloud "maybe I should take a look at Ruby on Rails". I was so desperate to *just* start developing my application and not have to deal with these startup pains. Before I could even google for 'ror' to take a look at what the excitement is about, I looked up from my desk and glanced at the door to hear someone approaching *grandoise theme music playing here* A glowing aura basks the room as I hear the gallop of what sounds like a horse. I rubbed my weary eyes in disbelief as in strode a white knight on a brilliant white stallion, across the knight's chest was emblazoned a logo...I squint to read it as the light had completely enveloped the room. The logo says "Equinox". "Equinox?" I repeat to myself.

Equinox, http://equinox.dev.java.net is an application that creates a skeleton of an application (views, model, dao's, service layer) for a multitude of frameworks including (goto site to see full list): Struts, WebWork, Tapestry, Spring, Hibernate, iBatis. This application goes way beyond my wish for a 'blank' application as Equinox integrates each framework for you. Amazing tool for anyone starting a new project.

For you *nix people, the order of steps is important.
1. cd $equinox_home
2. ant fixcrlf
3 (optional if you want to use a different MVC framework) cd extras/tapestry
3b ant install
4 cd ../..
5 ant new (Maven will download it's dependecies and then you will be prompted for a project name).