Twisted, Xapwrap, Epsilon, Vertex, Axiom, Nevow… What do you get if you put them all together? Let me introduce you to Mantissa.
Mantissa combines and builds upon these libraries to create a coherent deployment target for your software.
The focus of this Mantissa release is support for the web: there are themes, conventions for template lookup, support for Nevow LivePage, and a framework into which web interfaces to applications can be dropped. A major feature is the ability to deploy otherwise unrelated applications into the same server, provide access to them using the same user accounts, have them cooperate to display elements of the page which each require, and give the user an organized view onto them.
As the kids like to say, Mantissa is skinnable: the application logic it represents can be displayed in whatever manner HTML allows (and a few beyond that ;) and the display is controlled completely using CSS and XHTML. In addition to dynamic applications, static content is also supported: plugins for axiomatic are provided to allow reorganization of static content on the fly, but of course it can also be laid out automatically by the application-code which initializes a Mantissa instance.
Functionality exposed through URLs is, by default, hardened against cross-site scripting and other attacks: unless URLs are otherwise specified, they will be stable for a particular user, but randomized between different user accounts. Mantissa also provides a highly hookable ticketting and signup-system. By default, users first verify an email address (acquiring a ticket in the process) before gaining access to the system. Ticket issuance can be customized, and new Benefactors can be defined to endow newly created users with application-appropriate abilities. As a demonstration of the LivePage features, a sample Mantissa configuration is included in the 0.1 release which has a single administrator user: the administrator has access to an interactive Python interpreter prompt after logging in.
So there’s some web in it. What else?
Mantissa provides a framework for indexing an searching as well. Applications provide the content, Mantissa arranges the indexing, and the user gets a unified searchable view of all content through a single interface.
And how do you feel about VoIP? Mantissa includes Divmod’s SIP implementation. Ideas for applications involving flexible control of real-time voice channels are left as an exercise for the reader.
Building on Vertex, Mantissa applications can also rely on Q2Q, either to accept connections and provide a service, or for making outgoing connections to other users or domains. Yea: Mantissa applications can trivially communicate with applications (perhaps Mantissa-based, perhaps not) running on other hosts.
Upcoming releases will polish the web support, probably switch over to Athena, or at least add support for it, and start adding generally useful widgets (ie, a pager for large data sets), but also give some attention to non-HTTP areas (email and ssh will probably show up next).
Get the Mantissa 0.1 release, visit the Mantissa project page, or peruse the Mantissa wiki.