[Web-SIG] Porcupine Web Application Server 0.6 released

Tassos Koutsovassilis t.koutsovassilis at gmail.com
Sun Jul 19 18:18:17 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 user predefined condition is true.
The Porcupine API is partially aligned with PEP 8. The majority of the 
API calls are no longer camelCase 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 
(http://pablotron.org/?cid=1557), 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 
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 Web-SIG mailing list