Pillars of Python: CubicWeb Web framework
CubicWeb tackles rapid Web app development with modular components and object reuse
CubicWeb is not an easy framework to get to know. It does not fit cleanly into the pattern of the other Python Web frameworks in this roundup. In fact, CubicWeb calls itself not a Web framework, but a semantic Web framework. Application construction in CubicWeb is data-driven, but CubicWeb is not merely a database Web-client construction set. It's more.
CubicWeb is awash in its own nomenclature. And the core CubicWeb term, and concept, is "cube." Roughly speaking, a cube is a minimal Web application -- a software component composed of a data model, the logic needed to manipulate that data, and the view code required to display the data. While a CubicWeb application could be built from a single cube, more often it is built by lashing together multiple cubes. This is easily done thanks to another core principle: reusability. In CubicWeb, cubes are designed to be combined with the same ease that an engineer snaps together electronic components to make a circuit.
CubicWeb's notion of a data source includes more than the RDBMS. Behind most every CubicWeb application is a "repository," a gathering of persistent data sources that can include relational databases, LDAP servers, XML streams, Google App Engine's data store, and others. The repository framework completely insulates the application from the details of the constituent data sources. A persistent data object in a CubicWeb application may consist of pieces drawn from multiple, disparate data sources, and the application is unaware of that fact.