Given how popular appfuse seems to be, I thought I’d give it a try. Now, I personally have no such need of such a tool, but if it actually does what it says on the tin, then it certainly would be worth knowing as something that might be recommended to people wanting a quick start of some sort.
Oh how naive I was! I laughed, I cried, I fumbled about uselessly trying to make it do things. Appfuse is, without a doubt, one astoundingly confused product.
Where shall we start? Well, if you want to do anything other than stick with every single default, you’re up poocreek sans paddles. Let’s start with the installer. It uses izpack (a fine product), but of course, goes for a net install and shows NO INDICATION of progress as big chunks of data are downloaded. Furthermore, if you manage to click on the right combination of things (just my luck), you end up with an installer that’s hung (not in a good way) at 1%, with absolutely no hint of what you should do at this point. Cry like a girl? Wait like a man? Shake your fist at how futile life can be? Still, I tried quitting and examining what it so kindly deposited in the chosen target directory. There’s a build.xml which is about as functional as Geronimo. If you rip it open and peek within, you’ll find it’s actually a buildfile to build the INSTALLER, and could not possibly be more useless to an end user.
Alright, let’s give up on the installer. It was clearly knocked up as a side effect of a drunken stupor. These things happen.
So I go for some other download (binary, getting things to build from such dodgy characters is a bit too wild even for me). Hm, first hurdle, I MUST have tomcat installed. Not only that, but I must also faff about setting environment variables. How user friendly!
Now, I can accept requiring tomcat to be able to deploy the excrement this fine app defecates, but really, MUST the reload task be declared for the whole build file, such that you can’t even do an ant clean without tomcat installed?
Things steadily go from bad to worse. The sloppiness and slipshod I’ve experienced so far is not an accident, it’s a way of life for this app. I try to generate a project, and I’m prompted for my project’s package….twice. Hint to any aspiring UI experts, don’t ask people to type something in twice, it’s rude and pointless and only says ‘I’m retarded and cannot remember what you just told me.’
The project generation phase also kindly informed me that it has autodetected mysql. This was mildly surprising to me, as I do not have mysql installed anywhere on this machine. Maybe it detected something Out There? Maybe it was some kind of sinister warning about the inevitability of mysql taking over the DB world (har har)? Don’t be fooled by the documentation, getting this pile of festering doggie droppings to work with anything other than mysql is far from being a simple switch somewhere.
Of course, the buildfile is what you’d expect from a web monkey pretending to be a programmer. Half the targets don’t work, nor is it particularly clear what they do. I downloaded the webwork version, and ant -projecthelp suggested a ‘install-webwork’ target. This seemed like a promising starting point. Alas, that target doesn’t even apply for the webwork build, it’s for choosing webwork when you haven’t just downloaded the webwork specific version!
Nevermind that, at least the project skeleton it generates is a good robust starting point that one can confidently move forward with.
Haha, only joking, of course. Every object creates builder objects in hashCode and toString. That’s right, every time hashCode is called, an object is constructed and the java gods sacrifice a baby jesus in your name as a result. It’s comforting almost to see such solid proof of how absolutely evil jakarta commons is, when people are encouraged to do this kind of thing.
Even worse, the project’s directory layout is bound to confuse a seasoned webapp veteran, let alone the target audience for this frankenstein of an application. It’s as if someone got very angry and gathered up a bunch of directories, then violently flung them at a filesystem in order to cause maximum distress and pain to the world at large.
Of course, the project uses xdoclet. Now, xdoclet certainly has its uses. Building web.xml is NOT one of these uses. I don’t know what kind of giant supergenius newbies Raibly is expecting, but even I don’t have the heart to tell them than to edit web.xml, they’ll have to find the appropriate fragment of it (out of 11) and slot in the right thing, then rebuild to get the aggregate descriptor generated.
Of course, the forums and users of this application are the icing on the cake. Poor perplexed lost souls, endlessly befuddled by how and why things are the way they are. Those who do stick with it invariably realise what a completely spastic idea it was to start with such a rotten festering foundation.
Matt Raible once blogged that he’s perplexed by his popularity and the world viewing him as some kind of expert. Little did I know how right he was then. He is, as he proclaimed, a depressingly average web monkey who was catapulted into the limelight through a freak accident of nature. Of the other hand, maybe their little hearts are set on him, their minds filled with possibilities as they wisely ponder ‘If this idiot can do it, so can I!’
PS Yes, I have google ads now. About time I get some money off you losers.