In 1997, I built a Web-based group calendar using in-memory Java objects that were serialized to disk only for safekeeping.
That was my first encounter with servlet technology, and it led me to predict -- correctly, as it turned out -- that Java
would find its greatest success on the server rather than on the client. At the same time, I predicted that object persistence
would become an increasingly popular alternative to relational storage. That was myopic. Relational databases are steadily
absorbing their object-oriented challengers. Object persistence remains the niche technology that it always has been. Still,
there's always been a vibrant software ecosystem living in those niches, and it has always insisted on playing by different
rules.
This week, a new player joined the game. The company is JotSpot, and its mission is to transform the Wiki -- a species of
collaboratively written Web site -- into a platform for software development. Although relational storage will be an option
for JotSpot, the version demonstrated to me uses an open source Java persistence engine known as Prevayler. To understand
why, you have to appreciate the dynamic nature of Wiki technology. In a Wiki, you conjure up a new Web page by simply typing
a phrase -- using mixed capitalization and no spaces. As collections of pages accumulate, people reorganize them. Programmers
who use Wikis call this activity "refactoring." Other folks call it "gardening."
The users of a Wiki think of the process as organic growth. Enterprise IT planners tend to regard it as unstructured chaos.
They're both correct. JotSpot's aim is to harmonize these opposing views by empowering users to create islands of structure
in their seas of unstructured data. The company's founders, Joe Kraus and Graham Spencer (two members of the original Architext/Excite
team), showed me how this works. You write simple Wiki markup to define a form and to display data gathered through that form. When you need to add a new
field later, just tack it on. Under the covers, it's all a collection of objects that render as pages and attributes that
render as fields.
Of course, there's no free lunch. You pay a price for this kind of flexibility. Systems based on alternative object-oriented
styles of data management tend to lack standard query languages, programming interfaces, management tools, and well-defined
techniques of schema evolution. These are real problems. But the solutions that address them don't adapt well to the niches
where small teams live and work.
An example of a system that is well-adapted to those niches is Lotus Notes. Although it has never meshed cleanly with conventional
databases, it has nonetheless enabled programmers -- and quite a few power users -- to create software that deals with idiosyncrasies
of data and social context. Internet pundit Clay Shirky calls this "situated software." It's cheap and easy to build, it targets
a specific group of people, and it achieves a degree of customization that is not otherwise economically feasible.
I asked the JotSpot guys what will happen if Wiki applications become a maintenance challenge, as did many Notes applications
before them. "That's a good problem to have," Kraus said. I agree, up to a point. Messy organic growth is better than no growth,
and object-style data makes good fertilizer. In the long run, though, we shouldn't have to make such difficult trade-offs.
As object, relational, and XML disciplines converge, all I can say is: Hurry!