IOWA 0.20
Copyright 2002, 2003, 2004 Kirk Haines
Copyright 2001, 2002 Avi Bryant

See the VERSIONS document for information about new features.

This release marks the first in nearly two years, and contains the
sum of over two years of periodic development on Iowa
while actively using it for many different live production applications.
Avi Bryant no longer works on Iowa, having taken the ideas that he
developed here over to Smalltalk and his Seaside project.  I owe him
a debt of gratitude for having developed a solid base of code which I
have had the pleasure of working with and working on for quite a while
now.

If you wish to see the direction that he has taken with Seaside, take a
look here:  http://www.beta4.com/seaside2

I'm currently delving into many of the ideas present in Seaside in order
to get a better grasp on exactly where I want to take Iowa's capabilities.

Another offshoot of Iowa is Borges.  Iowa 0.15 had a very early Borges
implementation packaged with it.  I have removed this in the current versions
so that there is no confusion, as the current Borges has gone a very long
way since then.  Take a look at it at: http://segment7.net/ruby-code/borges

The Iowa codebase still certainly has issues.  It has bugs and inefficiencies,
and there are definite shortcomings, though these are being addressed.
All in all, though, what is in this release is code that I use every single day. It
works, and it works pretty well.  It is currently being used to power functionality
at many different levels across at least sixteen different production web sites,
with some applications running for nearly two years now.

Some examples of the ways that Iowa is being used include:

- The engine powering simple dynamic web pages populated via
  database queries to show tables of current stock prices, historical
  values, dividend return rates, etc....  It is worth noting that while
  a lot of what Iowa offers is overkill for this sort of thing, the absolute
  ease with which I can develop pages with this sort of dynamic
  content in Iowa for me offers a tremendous advantage over simple
  stateless CGI programs or a solution such as PHP.

- Simple web applications such as guestbooks, report generators,
  and basic entry/response forms.

- Complex web applications such as one which allows real estate
  appraisers to dispatch, receive, track, coordinate, and file
  appraisals with customer views into the status of their appraisal.

- The content delivery engine underlying a large website with a public
  section and a subscription only section.  Much of the content at a given
  URL has two versions.  One version is the public version, and the other
  is only for a subscriber who has logged into the site.  The system has to
  transparently deliver the right content while passing requests for certain
  items such as images and undifferentiated static pages on to the webserver
  for it to handle.

See http://enigo.com/projects/iowa for a tutorial, documentation, and
examples with live demos (the content there is under heavy current
development, and is subject to rapid change).