CubicWeb Retrospective: February - April 2023

Summary of the last few months

  • Removal of all CubicWeb-Web relative logic from CubicWeb
  • Migration of the CubicWeb-Web relative test from CubicWeb
  • Simplification of configuration classes
  • New "simple" html pages: for content negociation purpose, we added simple html pyramid view to display all attributes and relations of entities, just like in RDF. These pages can be added or removed by including them or not in the pyramid configuration file.
  • Configuration options exposed in pyramid configuration file have been made more explicit


What is CubicWeb 4 and what are its goals?

CubicWeb is a python framework and a web server made to build linked open data centric applications. It provides graph oriented data model (YAMS) with permissions and a graph oriented query language (RQL).

In the future we could evolve to a less frameworkish library.

Architecture of CubicWeb - Reflexion about what should be part of public api and what should not

Today, there is no precise definition of what is public and what is not; in order to define when a change is breaking.


The CLI api is easily defined as the list of all the cubicweb-ctl commands. A breaking change would be introduced if: commands are renamed or removed, parameters are removed or the output of the command changes.

Python API

The work needs to be continued, but we think that the following should be public:

  • yams : buildobjs, constraints
  • cubicweb: Binary, _
  • cubicweb.entities : AnyEntity, fetch_config
  • cubicweb.entities.wfobjs : WorkflowEntityType
  • cubicweb.hooks : Hook
  • cubicweb.entities.adapters: EntityAdapter, EntityRDFAdapter


We don’t guarantee that content negociated routes will output the same documents (/<eid>, /<etype>/<eid>). If one of this route is removed it should be considered as a breaking change.

We might want to add /siteinfo and /schema routes (but it could be provided by react apps relying on the json representation of the schema).


Some tools might be doing SQL queries to the postgresql database directly, we understand that but we don’t plan to declare evolutions to the database schema as breaking changes, since RQL is used as an abstraction of it.

CubicWeb 4 tests

Before launching CubicWeb 4, we needed to test it on several application. We did it and found 2 or 3 last things to add/correct. CubicWeb 4 should be out in the next week, stay tuned :)

A lot of work have been done, thank everyone for your participation!