Guillotina – Maturity and Revolution

We just finished the first Guillotina sprint at Costa Brava and I’m really happy about the outcome, 15 developers from around the world working on improving and adding the needed layers to make it more developer friendly and documented.

After two years working on improving the framework I’m glad to say that guillotina is really stable and scalable to build applications on top of it, so its time to start building the glue for different use cases. Here are the ones we’ve been working this Sprint:

guillotina_cms + Plone-React

The idea is to build a layer that enables a Plone REST compatible API so we can adapt Plone-React effort to work with Guillotina. The goals that we accomplished:

On the guillotina_cms package:

On the plone-react project:

  • Support nested schemas in the form library to support guillotina behaviors fieldsets.
  • Add websocket support for ‘get’ commands (replace HTTP REST calls with an open read only websocket)
  • Add websocket support for live editing
  • Refactor actions to not be tied to REST
  • Create / remove blocks in editor with return / backspace
  • Store text tile data in json

Guillotina admin interface (a.k.a. The Executioner)

  • Support both basic authentication and JWT (as Guillotina might be installed without JWT support)
  • Added and shipped by default with any Guillotina install (>=4.0.1) at http://locahost:8080/+admin/
  • Implement the Pastanaga component library for Angular 6, based on latest Albert’s specifications. https://plone.github.io/pastanaga-angular/dist/pastanaga-app/ (the Executioner is based on that library)
  • Improve the Plone Angular SDK to support both Plone and Guillotina as backend (+ upgrade to Angular 6)

Guillotina Client

  • Deliver a synchronous guillotina client implementation: https://github.com/guillotinaweb/guillotina_client
  • Usage of basic auth session object
  • Allows to create containers, and content (folders and items) in them.
  • Can list, install and uninstall addons
  • Objects have dynamically generated methods from @swagger data
  • guillotina_dbusers compatible: can create users, login and refresh token

Guillotina Documentation

  • Improved the http:gapi directive: Automatically document endpoints from examples against a test guillotina server so the request/response data will always be up-to-date in the docs, uses sphinxcontrib-httpdomain and its http directives, uses sphinxcontrib-httpexample to display dynamically generated request/response samples.
  • Reorganization of documentation depending on the reader use case
  • Added documentation of missing features
  • Integrated autodoc for some modules

Guillotina website

  • Create a simple initial page of information with main marketing points

Guillotina Improvement Proposals (GIP)


Close to the guillotina subject and in order to improve plone-react on actual plone backend there are amazing accomplishments:

Plone-React acceptance tests

  • Login Test
  • Pastanaga Editor Test

plone.restapi


Thanks to Iskra.cat for sponsoring the event and for all the amazing collegues that attended the sprint!