Learn about the exciting new REST Resource API powered by Python's new asyncio library. In this talk you'll learn about some of the amazing things you can do with Guillotina and how you can leverage it to build your next JavaScript web application.
2. Full Stack Engineer Onna - BCN
Connect and search all knowledge
inside an enterprise with ML
Nathan Van Gheem
Plone Software Foundation,
FWT Member,
UITEAM,
SecurityTeam
3. CoFounder/CTO Onna - SF/BCN
Connect and search all knowledge
inside an enterprise with ML
Ramon Navarro Bosch
Plone Software Foundation & FWT Member
5. WEB FRAMEWORKS
• Angular/React : Server rendering frameworks are
dying
• Most sources of data comes from the web/api
• Lots of experience on storing, distributing,
managing resources
6. LOVE
We love Plone but wanted to
be able to use it in high
performant situations with
modern web technologies
7. Long time ago … 18 years … Zope and ZODB was created
object oriented DB and web application server
Then 16 years ago … Plone was created
layer on top of Z stack to provide CMS
Then 7 years ago … Pyramid was created
merge pylons + repoze.bfg (zope fork)
Then 2 years ago … Plone REST API was created
Abstraction layer for creating resources on top of Plone 5
300 python packages
Then 1 years ago … plone.server was created
Rewrite from scratch of minimum Plone backend with py 3.6 and asyncio
11. INSPIRATION
Plone/Zope’s hierarchical data model
Pyramid’s decorator-based configuration
Django’s global application settings
ZCA pluggability
Plone/Zope’s security model
JSON Schema
12. FORKS
parts of zodb data model
plone.behavior
zope.security
zope.schema
zope.component/zope.configuration
zope.dublincore
zope.i18n
zope.lifecycleevent
zope.location
zope.event
13. WHAT IT IS
NOT
replacement for Plone
re-implementation of Plone
plone.restapi compatible API
guillotina_cms
21. SECURITY
Full definition of permissions /
roles / principals with global
and local inheritance of
permissions on the tree.Allow,
Deny, Unset,AllowSingle (no
inheritance)
45. • Only >= Python 3.6
• Designed to host millions of objects
• Memory optimizations
• Apply operations to contained objects in async
• Authentication & authorization extensions
• Reusable UI JS components from Plone
(Widgets/SPA)
55. WIP : DISTRIBUTED HIVE
Execute an operation to all objects in distributed execution
Based on etcd
Dynamic workers that are going to compute a task
No aggregation callback
Batch mass modification of the model
guillotina_hive
(thanks @vangheezy)