ANN: Porcupine Web Application Server 0.6 is released!

tkouts t.koutsovassilis at
Sun Jul 19 17:38:38 CEST 2009

I'm pleased to announce the new version of Porcupine Web Application
Server, a Python based framework that provides front-end and back-end
technologies for building modern data-centric Web 2.0 applications.

During the past months, I have put a lot of effort for making this
release finally available. It includes a new whole bunch of new
features and improvements, mainly aimed towards scalability.

The server now supports multiple processes by using the
"multiprocessing" module firstly introduced in Python 2.6.
The Porcupine database now supports indexes declared at a server-wide
scope inside the Porcupine configuration file (porcupine.conf).
Currently, the indexes are used for common database usage patterns
such as getting the children of a container, but not yet fully
leveraged by OQL. For the time being, simple queries like

select something from 'container_id' where indexed_attribute=value

will leverage the index structure.
The Etag HTTP header is now fully supported for static files. For
dynamic requests a new pre-processing filter is included that allows
conditional Etags, meaning that an Etag header will be generated only
if a predefined condition is true.
The Porcupine API is partially aligned with Python's PEP 8. The
majority of the API calls are no longer camel case and such calls are
considered deprecated (i.e. the Container's getChildren method is now
get_children). Check the server's log thoroughly for deprecation
warnings and make the appropriate changes.

QuiX, the server's integrated JavaScript toolkit, has reached the
major milestone of supporting all the popular browsers including
Opera, Safari 4 and IE8. The structure of the QuiX API has been re-
factored by introducing JavaScript namespaces (i.e. XButton has become
QuiX.ui.Button, XMLRPCRequest has become QuiX.rpc.XMLRPCRequest). Of
course backwards compatibility is still preserved in order not to
break the existing code.
The redraws have been accelerated by using some sort of internal cache
mechanism that prevents the core from calculating the same widget
parameter twice.
Another great feature combined with the server side Etag support is
the ability to persist data sets on the browser side. For
accomplishing this kind of functionality QuiX includes PersistJS
(, a lightweight persistence library,
that uses the appropriate persistence mechanism for different browsers
including Google Gears, globalStorage, localStorage, openDatabase etc.
Auto-sized widgets are now finally supported. Their size is
automatically adjusted based on their contents. Widgets supporting
this kind of feature include labels, icons, buttons and boxes. Auto
sized boxes require all their children to have fixed sizes or being
auto-sized themselves.
Another important improvement is a universal base Widget
implementation that now allows integration with non-Porcupine web
applications more easily.

Other notable new features and improvements include themes support for
QuiX, new optimized transactions, a lightweight rich text editor, new
cookie based and database session managers (required for multi-
processing setups) and a new Shortcut content class.

Helpful links

What is Porcupine?

Online demo:



More information about the Python-announce-list mailing list