IMHO from onShore Development is a toolkit that provides facilities for building highly interactive Web applications. Some of the features that are in a useful state at this point are: session management, componentized document construction, template-based HTML rendering, and Java/JavaScript integration. It is a loose functional equivalent of Apple's WebObjects framework.
IMHO is Apache-only. It uses either mod_lisp or a homegrown mod_webapp
to
establish a connection between Apache and the Lisp server. The included
mod_webapp
package is derived from the one in the Apache project.
When it was active, you could find it at http://alpha.onshored.com/lisp-software/. Eugene Zaikonnikov posted a message to the Lispweb mailing list providing installation and usage tips.
I'd really hate for imho to go lost. In the hopes that someone may eventually find it usefull, or just interesting, I've grabbed from debian what I believe are the latest release of imho (and its supporting library odcl) and put them up on ucw's ftp directory. -- Marco Baringer
I'm not sure I've ever seen a summary of IMHO's features, so here's my stab at one:
- Built in session management. Sessions are set-like objects used to keep track of one current instance of any lisp class. These "session instances" are used to maintain the current snapshot of a user's interaction with the application.
- HTML element class hierarchy. Each HTML tag (and therefore each HTML document) is represented by a CLOS class descended from imho:html-element.
- Webmethods. Imho keeps track of a bunch of programmer-specified generic functions called webmethods; a browser request causes imho to lookup the appropriate webmethod, target element and arguments and select and invoke the proper webmethod based on parsing the method name and typed arguments out of the submitted URL.
- Element tree structure. An element is an n-ary tree of child elements and a parent element. This allows cleanly abstracted widgets to be created with minimal code, since, say, a submit button placed at the bottom of a tree of elements can simply ascend the parent tree looking for a target object to call its method on.
- Template-based presentation layer (HTML plus a single tag with a single parameter). Designers can code mostly-HTML page templates and refer to live, session-particular lisp objects by name.
- Plenty of other stuff but just that much is pretty cool, huh?
Damn, lisp rocks!
—Lyn Headley
Is IMHO the Lisp analog of Python's Zope, then?
Kinda, yeah. Only Zope tries to solve many problems (it comes with its own object-database) IMHO doesn't even address (a good thing, if you ask me). They have quite different approaches and from my experience with the two of them, I would prefer IMHO over Zope because of the way IMHO is interegrated with CL. It feels quite natural to work with it. Erik Enge