WO Is Me
The consulting shop I work for is small and, by necessity, general purpose. We like to be compliant to our clients' needs instead of shoving our technical ideas down their throats. One result of this approach to development is that I'm called upon to learn new tools (good and bad) all the time.
Sometimes this is all good stuff. For example, last year, as part of a new project, we started using Hibernate and I got to learn some valuable stuff about using a new, cutting-edge, OR mapping tool.
But sometimes this is not so much fun. Right now, I'm teaching myself to use an Apple technology called WebObjects, which is what the WO in my title refers to. (In full disclosure, I've copied the title of this entry from an old article I found here.)
In theory, WebObjects is neat stuff. It's kind of like a case tool for building webapps. I'm not a big fan of case tools, personally, but there is a need to simplify web development, to free developers from repetitive "monkey code" tasks, and to create a paradigm for web development that seamlessly connects your data source to your presentation to your business logic, but without coupling the three. WebObjects provides one solution to this delima.
However, the implementation leaves something to be desired. I've only just started fooling around with this tool and my plan is to post my ongoing reactions and evolving ideas to this blog, in case anyone cares.
My first impression of WebObjects was that I'd never heard of it before I learned that I would need to start working with it to help a client on an existing app. I did some internet research and, although there is info about WebObjects on Apple's site, there's not much in the general world. And what is out there is mostly very old in Internet time--two to three years or older. So right off the bat I have two big concerns: 1) is Apple still suporting WO and do they plan future releases? And 2) is anyone else out there using WO? To combine the two--is WO a ghetto?
(To clarify one point--WO is cross-platform and uses Java. It's not an Apple-specific product. It's just created and sold by Apple.)
A developer at the client demo-ed some WO stuff to me and overall I was impressed with how it allows you to do OR mapping visually, connect an object to a web component, and then create an action for that web component to fairly easily display, create, and update data without doing a lot of obj1.setValue(obj2.getValue()) type code, or even worse, obj.setValue(request.getParamenter("value)) type stuff.
But as I've installed and started working with the thing, I must say that it leaves something to be desired, from what I've seen so far.
Issue 1: The installation required me to install Java 1.3 even though I already had Java 1.4 installed. What is this, Oracle?
Issue 2: The GUI development tools are very ugly and buggy. Again, what is this, Oracle? For one thing, it is possible to close an app's main window when you've got a dialog for that app open. That is just flat out ridiculous! And the gui looks like some very poor java 1.2 era awt junk. It is apps like this that give Java gui apps a bad name. Again, what is this, Oracle?
Issue 3: The OR mapping tool (called EOModeler) is not very easily configurable. Something like this, by definition, needs to work with multiple databases. But in order to get it to communicate with MS SQL Server, I had to a) copy the sql server jdbc driver jars into a special directory, b) modify a class path variable in a config file to point that directory and c) figure out how to do that more or less on my own since there was no help or documentation available that explained this process. Very very very very bad. Also, I had to type in my jdbc connection url by hand. Yeah, I'm used to that from building config files for my apps, but come on, people! There only maybe five or six major database platforms. How about a little wizard for each one so I don't have to figure out your whole oddball system in order to build a little Hello World demo app!
Issue 4: Project Builder--the sort of main clearing house development app in the suite--has a very odd way of creating a new project. You are asked to browse to a directory to create your new project, but no indication is made of what to do next. What it wants you to do is, browse to a parent directory, then enter the name for your project in the file browser dialog. PB will then create a new directory with that name and put your project in there. Thanks for explaining that. What if you want to put your project in an existing directory? Can't do it.
Issue 5: When you create a project, there are lots of different types of things in there. You get a big list of the types: Web Components, Resources, Subprojects, Web Server Resources, and on and on. You've got to work within this paradigm, it seems.
Issue 6: Suppose you create a Web Component, but decide it's junk and want to delete it. Too bad! There's no delete functionality whatsoever, as far as I can see. I tried deleting the directory it created on filesys for the component I wanted to delete. Then I restared PB. But that didn't help. Now the "Web Component" listing just shows the deleted thing in red. When I try to add a new one with the same name it won't let me. Is this a feature?
On the plus side, it did give me a wizard that very quickly built a display page to display all of the records in a table. It seems that it can do the same thing for forms and other components. My point here is not to bitch about how bad WO is (though I seem to be doing that) but to present a diary of my experience. Hopefully Monday, as I continue with my little demo app, I'll have some nice things to say.
WO on Windows
You're right WO is a poor development experience on Windows. The bottom line is that the tools are circa WinNT and have not and will not be revved on Windows (they have, however, been revved on Mac OS X).
If you must develop WebObjects on Windows, sane people use Eclipse + WOLips:
http://www.objectstyle.org/woproject/
This avoids ProjectBuilder, though you still use the ancient WebObjectsBuilder and EOModeler.
WOLips
Thanks, rentzsch, for the tip on using WO with Eclipse. I'll look into that right away and post my experience.
A quick note about WO history in light of some of Dan's comments: WO came to Apple as part of Next, Steve Jobs's baby. Aparantly, WO was a very big deal for Next and not any sort of me-too product. It has great potential, I think, but does not seem to be adequately supported and I wonder if Apple is simply planning to allow it to die a quiet death.
Quiet Death
[quote="robertmacgrogan"]WO came to Apple as part of Next, Steve Jobs's baby. Aparantly, WO was a very big deal for Next and not any sort of me-too product.[/quote]
That puts a different light on it, certainly. Still a shame they don't seem to be keeping up with it, though. This exact phenomenon makes it very hard to be a startup software company these days; people are afraid to adopt your product, fine though it may be, because they're afraid of what will happen to it one, two, three years down the road. Will you go out of business? Will you be bought by a company that becomes a poor steward of the product? Will you buy another company and switch to promoting a product you acquired instead?
Dan


What is this, software?
Excellent post, Rob. I got several laughs out of it. Companies like Oracle and Apple would be better off not getting into this game at all if they don't plan on doing it right--and finishing the job. Stick to what you know.
Oracle makes a great database, but every GUI interface and development tool from Oracle I've ever used has been total garbage (aside from the fact that the paradigm of dealing with the Oracle database is arcane at best and downright stupid at worst. Hell, it took Oracle years just to add support for SQL-92 join syntax like the rest of the world. But that's a whole other topic.) Maybe the Oracle 4GL development and report generation tools have gotten better in recent years, but in my experience they have been the among the most idiotic, rigid, and buggy tools I've ever used. Even the middleware (like ODBC and ADO drivers) I've used have been crappy.
The only Apple product I've had the misfortune of using (other than stuff that runs on the Mac, of course, which is good within the context of the Mac) is Quicktime, which in my experience is error prone, and not configurable; you can't turn it off. I hate that useless system tray icon, which presumably has a program running in the background just waiting for me to run some Quicktime video.
I guess companies like Oracle and Apple make tools like Oracle Forms and WebObjects so that they can make sure they are "in the game" and can achieve "lock-in" with their enterprise customers who might otherwise be inclined to take a best-of-breed, mixed vendor approach. (I hear that Oracle's Java IDE is pretty good, though. However, I've always wondered if that's just hype--but I'm biased by past experience.)
What's most offensive about these kinds of situations is not that someone puts out a buggy, not-so-mature product (that happens all the time), but rather that they never do anything about it. Years will go by and the same crap that sucks will continue to suck, and the same bugs will be there year after year. And the poor unfortunate suckers (like your client) are stuck. Lock-in, indeed.
Dan