SlideShare a Scribd company logo
Running a Plone product on 
Substance D 
Éric Bréhault - PloneConf 2014
Let's be specific about it 
"running" is not "migrating".
Why would we do that? 
No obvious reason.
Why would I do that? 
I have free time. 
It sounds fun. 
It might be a good experiment for the future of 
Plone.
Good things in Substance D 
All the good things from Pyramid 
PLUS 
stores data in a ZODB, 
provides a management interface (the SDI), 
"Substance D owes much of its spirit to the 
Zope application server" (sic)
Good things in Substance D 
The D initial! 
"So it still lives... The will of 
D."
First attempt to integrate Plone 
$ pcreate -s substanced ./plone 
Make sure to load everything in __init__.py: 
config.load_zcml("plone-d.zcml") 
DEMO!
The real experiment case: Rapido 
Rapido is the next Plomino version. 
It is a complete rewrite.
Plomino 
It is an old Plone product (started in 2006). 
Still based on Archetypes. 
Stores data into CMF objects. 
Uses extensively ZCatalog and PythonScript.
Rapido 
(Originally) it is a Plone 5 product. 
Based on Dexterity.
Rapido structure 
rapido.core 
totally independent on Plone 
provides adapters able to produce the 
expected behaviors 
requires a storage service
Rapido structure 
rapido.souper 
provides a storage service based on Souper 
(Souper does work on Plone AND Pyramid)
Rapido structure 
rapido.plone 
standard Dexterity contents 
adapts them using rapido.core 
(ideally) uses nothing but plone.api
Rapido structure 
rapido.substanced 
standard Dexterity substanced.content 
classes 
adapts them using rapido.core 
uses nothing but plone.api Substance D API
DEMO (the real one)
How does that work 
In core, only use components working in both 
Plone and Substance D.
TTW scripting 
TTW scripting is what Rapido is about. 
(more globally, a rich TTW experience is vital to 
any CMS) 
PythonScript ➜ zope.untrustedpython
Catalog 
Substance D has its own catalog, and Plone too... 
➜ repoze.catalog is just fine.
Content persistence 
souper
Settings persistence 
Sharing schemas between Plone and Substance D 
sounds scary. 
➜ Annotations!! 
Both Plone and Substance D contents can be 
IAttributeAnnotatable.
Forms & widgets 
Deform is not rich enough. 
I did not considered running z3c.form on 
Substance D. 
➜ client-side rendering!! with Angular Schema 
Form
Access control 
Both systems have a granular ACL service. 
Probably possible to support them transparently 
from core, but for now: 
custom security implementation
My experience with Substance D 
PROS: 
Fun!! 
Happy to find all the good ingredients.
My experience with Substance D 
CONS: 
Not 100% ZCA-ready. 
Need to call config.hook_zca(), 
it works fine, 
no problem. 
Just not confortable with the "hook" term here. 
We would probably need a local registry.
Conclusion about Plone future 
ZCA + buildout + ZODB makes our identity, we 
must preserve it. 
We can find clever approaches to avoid a full 
rewrite.
Conclusion about Plone future 
Can we easily migrate to Substance D? No 
Should we migrate to something else? No
Thank you!

More Related Content

PDF
Happy hacking with Plone
PDF
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
PDF
State Of Zope Linuxtag 2008
PPT
Where's the source, Luke? : How to find and debug the code behind Plone
PDF
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
PDF
Simple ETL in python 3.5+ with Bonobo - PyParis 2017
PDF
Modern Perl for the Unfrozen Paleolithic Perl Programmer
PDF
[drupalday2017] - REST in pieces
Happy hacking with Plone
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
State Of Zope Linuxtag 2008
Where's the source, Luke? : How to find and debug the code behind Plone
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Modern Perl for the Unfrozen Paleolithic Perl Programmer
[drupalday2017] - REST in pieces

What's hot (20)

PPTX
New EEA Plone Add-ons
PDF
Go language presentation
ODP
Django Seminar 08/17/2013
PDF
Frequently asked questions answered frequently - but now for the last time
PDF
Php Dependency Management with Composer ZendCon 2016
PPTX
Modern Perl for the Unfrozen Paleolithic Perl Programmer
PPT
Introduction to Groovy Monkey
PDF
mod_php vs FastCGI vs FPM vs CLI
KEY
CakePHP - The Path to 2.0
PPTX
Zend con 2016 bdd with behat for beginners
PPSX
Webpack & EcmaScript 6 (Webelement #32)
PDF
Writing multi-language documentation using Sphinx
PDF
Building Command Line Tools with Golang
PPT
Drupal site translation and translation testing
PDF
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
PPTX
Php task runners
PDF
How Symfony Changed My Life
PPTX
Web backends development using Python
PDF
Migrating from drupal to plone with transmogrifier
PPTX
Puppetizing Your Organization
New EEA Plone Add-ons
Go language presentation
Django Seminar 08/17/2013
Frequently asked questions answered frequently - but now for the last time
Php Dependency Management with Composer ZendCon 2016
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Introduction to Groovy Monkey
mod_php vs FastCGI vs FPM vs CLI
CakePHP - The Path to 2.0
Zend con 2016 bdd with behat for beginners
Webpack & EcmaScript 6 (Webelement #32)
Writing multi-language documentation using Sphinx
Building Command Line Tools with Golang
Drupal site translation and translation testing
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Php task runners
How Symfony Changed My Life
Web backends development using Python
Migrating from drupal to plone with transmogrifier
Puppetizing Your Organization
Ad

Viewers also liked (18)

PDF
Lightning Talk: Security matters @ploneconf 2014
PDF
Mosaic - flexibele layouts voor Plone
PDF
Why CMS will not die
PDF
Plone Hosting: A Panel Discussion
PDF
Code analysis for a better future
PDF
Content's quality for Plone editors
PDF
Historico das Conferencias Python Brasil
ODP
The state of Plone Intranet
PDF
The Mountaineers: Scaling the Heights with Plone
PDF
PloneConf 2014 CDN terada
PDF
Resource registries plone conf 2014
ODP
TTW FTW: Plone as the new wordpress
PPTX
Plone deployment made easy
PDF
Plone 5 theming unleashed
PDF
Plone Intranet Consortium - united we stand, divided we fall
PDF
Social, Digital & Mobile Around The World (January 2014)
PDF
Recommender Systems (Machine Learning Summer School 2014 @ CMU)
PDF
Digital, Social & Mobile in 2015
Lightning Talk: Security matters @ploneconf 2014
Mosaic - flexibele layouts voor Plone
Why CMS will not die
Plone Hosting: A Panel Discussion
Code analysis for a better future
Content's quality for Plone editors
Historico das Conferencias Python Brasil
The state of Plone Intranet
The Mountaineers: Scaling the Heights with Plone
PloneConf 2014 CDN terada
Resource registries plone conf 2014
TTW FTW: Plone as the new wordpress
Plone deployment made easy
Plone 5 theming unleashed
Plone Intranet Consortium - united we stand, divided we fall
Social, Digital & Mobile Around The World (January 2014)
Recommender Systems (Machine Learning Summer School 2014 @ CMU)
Digital, Social & Mobile in 2015
Ad

Similar to Running a Plone product on Substance D (20)

PPTX
Performance Enhancement Tips
PPT
Euro python2011 High Performance Python
PDF
Возможности интерпретатора Python в NX-OS
PDF
PyCon2022 - Building Python Extensions
PDF
Old Dogs and New Tricks
PDF
What is Python? (Silicon Valley CodeCamp 2014)
PDF
Python for Application Integration and Development
PDF
You don't need plugin, Long live plugins
PDF
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
PDF
Integrating cloud stack with puppet
PDF
A quick overview of why to use and how to set up iPython notebooks for research
PDF
Acceptance testing plone sites and add ons with robot framework and selenium
PDF
PuppetConf 2014 Killer R10K Workflow With Notes
PDF
Open frameworks 101_fitc
PPTX
Odoo profiler
DOCX
C++ project
PDF
Introduction To Python
PDF
Introduction to Programming in Go
PDF
Infrastructure as code might be literally impossible
PDF
Continuous Delivery for Python Developers – PyCon Otto
Performance Enhancement Tips
Euro python2011 High Performance Python
Возможности интерпретатора Python в NX-OS
PyCon2022 - Building Python Extensions
Old Dogs and New Tricks
What is Python? (Silicon Valley CodeCamp 2014)
Python for Application Integration and Development
You don't need plugin, Long live plugins
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
Integrating cloud stack with puppet
A quick overview of why to use and how to set up iPython notebooks for research
Acceptance testing plone sites and add ons with robot framework and selenium
PuppetConf 2014 Killer R10K Workflow With Notes
Open frameworks 101_fitc
Odoo profiler
C++ project
Introduction To Python
Introduction to Programming in Go
Infrastructure as code might be literally impossible
Continuous Delivery for Python Developers – PyCon Otto

More from Makina Corpus (17)

PDF
Développer des applications mobiles avec phonegap
PDF
Publier vos données sur le Web - Forum TIC de l'ATEN 2014
PDF
Créez votre propre fond de plan à partir de données OSM en utilisant TileMill
PDF
Team up Django and Web mapping - DjangoCon Europe 2014
PDF
Petit déjeuner "Les bases de la cartographie sur le Web"
PDF
Petit déjeuner "Développer sur le cloud, ou comment tout construire à partir ...
PDF
CoDe, le programme de développement d'applications mobiles de Makina Corpus
PDF
Petit déjeuner "Alternatives libres à GoogleMaps" du 11 février 2014 - Nantes...
PDF
Petit déjeuner "Les nouveautés de la cartographie en ligne" du 12 décembre
PDF
Alternatives libres à Google Maps
PDF
Atelier "Les nouveautés de la cartographie en ligne"
PDF
Importing Wikipedia in Plone
PDF
Petit Déjeuner : HTML5 et CSS3, les interfaces de demain.
PDF
Geotrek
PDF
Plomino
PDF
Des cartes d'un autre monde - DjangoCong 2012
PDF
Solutions libres alternatives à Google Maps
Développer des applications mobiles avec phonegap
Publier vos données sur le Web - Forum TIC de l'ATEN 2014
Créez votre propre fond de plan à partir de données OSM en utilisant TileMill
Team up Django and Web mapping - DjangoCon Europe 2014
Petit déjeuner "Les bases de la cartographie sur le Web"
Petit déjeuner "Développer sur le cloud, ou comment tout construire à partir ...
CoDe, le programme de développement d'applications mobiles de Makina Corpus
Petit déjeuner "Alternatives libres à GoogleMaps" du 11 février 2014 - Nantes...
Petit déjeuner "Les nouveautés de la cartographie en ligne" du 12 décembre
Alternatives libres à Google Maps
Atelier "Les nouveautés de la cartographie en ligne"
Importing Wikipedia in Plone
Petit Déjeuner : HTML5 et CSS3, les interfaces de demain.
Geotrek
Plomino
Des cartes d'un autre monde - DjangoCong 2012
Solutions libres alternatives à Google Maps

Recently uploaded (20)

PDF
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
PPTX
Slides PPTX: World Game (s): Eco Economic Epochs.pptx
PPT
250152213-Excitation-SystemWERRT (1).ppt
PPTX
Power Point - Lesson 3_2.pptx grad school presentation
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PDF
mera desh ae watn.(a source of motivation and patriotism to the youth of the ...
PDF
Introduction to the IoT system, how the IoT system works
PPTX
Layers_of_the_Earth_Grade7.pptx class by
PPT
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
PPTX
1402_iCSC_-_RESTful_Web_APIs_--_Josef_Hammer.pptx
PPT
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
PDF
Session 1 (Week 1)fghjmgfdsfgthyjkhfdsadfghjkhgfdsa
PDF
The Ikigai Template _ Recalibrate How You Spend Your Time.pdf
PDF
Uptota Investor Deck - Where Africa Meets Blockchain
PDF
📍 LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1 TERPOPULER DI INDONESIA ! 🌟
PDF
Exploring VPS Hosting Trends for SMBs in 2025
PDF
si manuel quezon at mga nagawa sa bansang pilipinas
PDF
simpleintnettestmetiaerl for the simple testint
PPTX
Funds Management Learning Material for Beg
PPTX
artificialintelligenceai1-copy-210604123353.pptx
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
Slides PPTX: World Game (s): Eco Economic Epochs.pptx
250152213-Excitation-SystemWERRT (1).ppt
Power Point - Lesson 3_2.pptx grad school presentation
The New Creative Director: How AI Tools for Social Media Content Creation Are...
mera desh ae watn.(a source of motivation and patriotism to the youth of the ...
Introduction to the IoT system, how the IoT system works
Layers_of_the_Earth_Grade7.pptx class by
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
1402_iCSC_-_RESTful_Web_APIs_--_Josef_Hammer.pptx
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
Session 1 (Week 1)fghjmgfdsfgthyjkhfdsadfghjkhgfdsa
The Ikigai Template _ Recalibrate How You Spend Your Time.pdf
Uptota Investor Deck - Where Africa Meets Blockchain
📍 LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1 TERPOPULER DI INDONESIA ! 🌟
Exploring VPS Hosting Trends for SMBs in 2025
si manuel quezon at mga nagawa sa bansang pilipinas
simpleintnettestmetiaerl for the simple testint
Funds Management Learning Material for Beg
artificialintelligenceai1-copy-210604123353.pptx

Running a Plone product on Substance D

  • 1. Running a Plone product on Substance D Éric Bréhault - PloneConf 2014
  • 2. Let's be specific about it "running" is not "migrating".
  • 3. Why would we do that? No obvious reason.
  • 4. Why would I do that? I have free time. It sounds fun. It might be a good experiment for the future of Plone.
  • 5. Good things in Substance D All the good things from Pyramid PLUS stores data in a ZODB, provides a management interface (the SDI), "Substance D owes much of its spirit to the Zope application server" (sic)
  • 6. Good things in Substance D The D initial! "So it still lives... The will of D."
  • 7. First attempt to integrate Plone $ pcreate -s substanced ./plone Make sure to load everything in __init__.py: config.load_zcml("plone-d.zcml") DEMO!
  • 8. The real experiment case: Rapido Rapido is the next Plomino version. It is a complete rewrite.
  • 9. Plomino It is an old Plone product (started in 2006). Still based on Archetypes. Stores data into CMF objects. Uses extensively ZCatalog and PythonScript.
  • 10. Rapido (Originally) it is a Plone 5 product. Based on Dexterity.
  • 11. Rapido structure rapido.core totally independent on Plone provides adapters able to produce the expected behaviors requires a storage service
  • 12. Rapido structure rapido.souper provides a storage service based on Souper (Souper does work on Plone AND Pyramid)
  • 13. Rapido structure rapido.plone standard Dexterity contents adapts them using rapido.core (ideally) uses nothing but plone.api
  • 14. Rapido structure rapido.substanced standard Dexterity substanced.content classes adapts them using rapido.core uses nothing but plone.api Substance D API
  • 16. How does that work In core, only use components working in both Plone and Substance D.
  • 17. TTW scripting TTW scripting is what Rapido is about. (more globally, a rich TTW experience is vital to any CMS) PythonScript ➜ zope.untrustedpython
  • 18. Catalog Substance D has its own catalog, and Plone too... ➜ repoze.catalog is just fine.
  • 20. Settings persistence Sharing schemas between Plone and Substance D sounds scary. ➜ Annotations!! Both Plone and Substance D contents can be IAttributeAnnotatable.
  • 21. Forms & widgets Deform is not rich enough. I did not considered running z3c.form on Substance D. ➜ client-side rendering!! with Angular Schema Form
  • 22. Access control Both systems have a granular ACL service. Probably possible to support them transparently from core, but for now: custom security implementation
  • 23. My experience with Substance D PROS: Fun!! Happy to find all the good ingredients.
  • 24. My experience with Substance D CONS: Not 100% ZCA-ready. Need to call config.hook_zca(), it works fine, no problem. Just not confortable with the "hook" term here. We would probably need a local registry.
  • 25. Conclusion about Plone future ZCA + buildout + ZODB makes our identity, we must preserve it. We can find clever approaches to avoid a full rewrite.
  • 26. Conclusion about Plone future Can we easily migrate to Substance D? No Should we migrate to something else? No