Following a discussion on the #pyramid IRC channel yesterday, I have
decided to move pyramid_simpleform from formencode to colander for the
following reasons:

1. Formencode is no longer being actively maintained. While mature, it
is lacking in documentation and (straightforward) i18n support, and is
quite difficult to learn.

2. Colander is already used by the deform form library. Deform has
quite different aims from simpleform, and is intended for more “admin”
style forms rather than consumer-facing “retail” forms where low-level
control over workflow and rendering is needed. Using colander means
that an application can use both deform and simpleform where either
makes sense and reuse the same schemas.

3. The form tooling around Pyramid is badly fragmented right now. Form
handling (validation, rendering, etc) is arguably the one of the most
important benefits of a framework, and the situation now of half a
dozen different (often half-baked or poorly documented) solutions is
offputting to newcomers.

4. If colander becomes the defacto “standard” Pyramid validation
engine we can get more people using it which will add impetus to its
development (this in no way forces people who prefer other solutions
but should provide an easier path for newcomers).

5. Colander is arguably better designed and better documented, and
uses more modern Python patterns such as decorators.

There are a few caveats:

1. People are already using pyramid_simpleform with FormEncode, either
out of choice or in order to maintain backward compatibility when
migrating Pylons projects.

2. Colander is somewhat lacking in common validators right now. While
writing custom validators is easy, it really does need more out of the
box solutions for common requirements such as URLs, file uploads,
credit cards etc. Some of these may already be available in deform, in
which case there is a good argument to move them over to colander.

In view of the advantages and disadvantages, I’ve decided to add
colander support to pyramid_simpleform, in the following manner:

1. The current FormEncode-based version will be supported but
eventually deprecated. This will be available directly under the
pyramid_simpleform package as now:

from pyramid_simpleform import Form

2. The colander-based version will be available under a “form” module:

from pyramid_simpleform.form import Form

3. The default FormRenderer will, as far as is practically possible,
be compatible with both Form classes.

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-devel" group.
To post to this group, send email to pylons-devel@googlegroups.com.
To unsubscribe from this group, send email to 
pylons-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/pylons-devel?hl=en.

Reply via email to