| Donovan Preston ( @ 2003-10-17 05:26:00 |
| Current mood: | |
| Current music: | Silence |
A new era dawns
Amir was kind enough to invite me to LiveJournal, where the employees of Divmod are going to try an experiment with communication. At this point, our main purpose is to use the blogging tools that exist and attempt to discover the essence of the medium.
I have been blogging for a while -- at http://www.ulaluma.com/pyx/ -- but haven't updated it very regularly. When I post there, it's mostly technical details about using Python on the Mac. This blog will be more focused on what we do at Divmod, including the techniques I use in the Quotient web ui, thoughts about where we want to go with our system, and tips for using Twisted, specifically twisted.web and twisted.web.woven.
Right now my main focus in Quotient is the webmail interface. The current release, 0.6.5, is pretty capable as a webmail platform, but our backend is currently still undergoing heavy revision. At the moment, Quotient's persistence layer is being rewritten to use bsddb throughout, using the module storeq. I'm pretty excited about this development (although I am not doing it, it's being done by glyph) because it means we will be able to focus on the higher level tasks of allowing the user to store and organize a large amount of information in ways that make sense to them without worrying as much about performance or stability.
Another big innovation in Quotient that I am excited about is quotient.formless, an evolution of glyph's ideas in twisted.python.formmethod, and quotient.web.webform, an evolution of twisted.web.woven.form. The current implementation is based on the woven architecture as it is in twisted, which while it has proven very capable, has also proven to be fairly difficult to work with. Formless is a way to describe object and method schemas, and webform is a way to automatically render those forms to the web, and gather form post data, validate it, cast it to the types described by the schema, and then either set properties of objects or call methods on objects. Automatically.
One of the most difficult parts of formless/webform is allowing the user to specify an existing Python object reference to pass to a Python method. One of the techniques I am toying with implementing in Quotient is an "Object Shopping Cart", which I call the shelf (in homage to NeXTStep). Users can drag object references to the Shelf to carry them around across multiple page renders. Here is a screenshot of an actual, working implementation of the shelf that is in Quotient CVS, but currently turned off:
http://soundfarmer.com/pictures/screens
Another thing that I am currently working on in my spare time after work but will eventually use in Quotient is nevow, an exploratory rewrite of Woven which takes all the best concepts from Woven and reduces them to an implementation that's around 500 lines. I initially said I could make the entire implementation 500 lines, but if I'm going to support Deferreds and any sort of current Woven backwards compatibility, I'm going to break through that. But I'll write more about nevow later, when I am closer to a usable implementation.