On Intentions And History
=========================

:author: Ian Bicking

I'm the author of FunFormKit_, a form generation and validation
package for Webware_.  I considered FunFormKit (FFK) to be a very
powerful and complete package, with features that few other form
validation packages for Python had (as to other languages, I haven't
researched enough to know).  It supported repeating and compound
fields (which most packages do not), and had a very expressive
validation system.

However, this is not FFK.  In fact, it is a deprecation of FFK and
does not provide backward compatibility.  Why?

Probably the biggest problem was that FFK didn't support compound
and repeating fields.  Adding them made everything *much* more
difficult -- it was a sort of clever hack (maybe not even clever), and
the result was very hard for anyone else to understand.  Ultimately
hard for me to understand.

Ontop of this was a structure that had too much coupling.  Testing was
difficult.  I only came to like unit testing after FFK had gone
through several revisions.  FFK was not made with testability in mind.
It can be hard to add later.

Also, I wanted to use pieces of FFK without the entire framework.
Validation without the form generation was the biggest one.  Alternate
kinds of forms also interested me -- making it easier to do highly
granual templating, or non-HTML/HTTP forms.  Alternate data sources,
like SQL or XMLRPC, also seemed important.  All of these were not easy
within the interfaces that FFK used.

So... FormEncode!  FormEncode takes a lot of ideas from FFK, and a lot
of the code is just modified FFK code.  All of it is reviewed and
actively inserted into FormEncode, I'm not transferring anything
wholesale.  

.. _FunFormKit: http://funformkit.sf.net
.. _Webware: http://webware.sf.net
