SlideShare a Scribd company logo
1 of 48
Download to read offline
Why Plone Will Die 
(or turn into a CMS zombie) 
Andreas Jung 
Plone Conference 2014, Bristol
Disclaimer 
• perhaps tendentious 
• perhaps provoking 
• perhaps unbalanced 
• always my personal opinion 
• not representing any official 
Plone position
Integrator
Consultant
Plone coredev
Loudmouth 
Consultant
Why am I giving this talk? 
• growing developer pain 
• growing integrator pain 
• rising and unpredictable project costs 
• developer frustration at every corner
2014 - the year of Plone legacy
2014 - the year of Plone legacy 
• Plone 4.2➝4.3 
• 3rd party code 
• TinyMCE issues 
• schema tabs no 
longer working 
• Javascript 
issues 
• JQueryUI 
incompatibility
2014 - the year of Plone legacy 
• Plone 4.0➝4.2 
• 3rd party garbage code 
• Migration to Plone 4.3 not easily doable 
• Migration costs not predictable
2014 - the year of Plone legacy 
• Plone 4.0➝4.2 
• own project 
• Migration to Plone 4.3 not easily doable 
• Migration costs not predictable 
• Problems with fully qualified links in images and links
2014 - the year of Plone legacy 
• Plone 2.X➝4.3 
• customer grown 
project 
• AT➝Dexterity 
• p.a.event pain 
• p.a.widgets pain 
• z3c.form fun 
• much more pain…
2014 - the year of Plone legacy 
• Plone 4.0➝4.1➝4.2➝4.3 
• own project 
• started in 2010 
• every migration upgrade had more or less severe 
issues and caused significant work and costs
I am not talking about UX with Plone
Let me talk of _my_ 
(backend) developer experience
>>> reasons[„programming“] 
• Dexterity programming experience
Dexterity wanted to be pythonic 
IMySchema (attr1, attr2) MyType 
obj = plone.api.create(„my.type“, container, id) 
obj.attr1 = „foo“ 
obj.attr2 = „bar“
…but it ended like this 
MyType 
IMySchema (attr1) 
IBehavior1 (attr2) 
IBehavior2 (attr3) 
obj = plone.api.create(„my.type“, container, id) 
obj.attr1 = „foo“ 
IBehavior1(obj).attr2 = „bar“ 
IBehavior2(obj).attr3 = „hello world“ 
call_some_subscriber(obj) # plone.app.event 
Q: Is this pythonic?
>>> reasons[„programming“] 
• Insufficient parameter checks 
• Insufficient error handling 
• Stupid error messages
My personal enemy: z3c.form 
• no compatibility checks between schema 
fields and widgets, pdb needed 
• pointless, unhelpful error messages 
saying all and nothing 
• vocabulary issues always require 
to use pdb (NOVALUESET error with lots of 
fields and vocabularies)
…and then this madness 
'/Users/ajung/.buildout/eggs/z3c.form-3.1.1-py2.7.egg', 
'/Users/ajung/.buildout/eggs/plone.z3cform-0.8.0-py2.7.egg', 
'/Users/ajung/.buildout/eggs/plone.autoform-1.6-py2.7.egg', 
'/Users/ajung/.buildout/eggs/plone.app.z3cform-0.7.6-py2.7.egg', 
'/Users/ajung/.buildout/eggs/plone.formwidget.namedfile-1.0.9-py2.7.egg', 
'/Users/ajung/.buildout/eggs/collective.z3cform.datetimewidget-1.2.6-py2.7.egg', 
'/Users/ajung/.buildout/eggs/plone.app.form-2.2.4-py2.7.egg', 
'/Users/ajung/.buildout/eggs/zope.formlib-4.0.6-py2.7.egg', 
'/Users/ajung/.buildout/eggs/five.formlib-1.0.4-py2.7.egg', 
'/Users/ajung/.buildout/eggs/z3c.formwidget.query-0.10-py2.7.egg',
>>> reasons[„programming“] 
• complexity 
• growing complexity 
• wrapper modules…
250 modules (4.3 install) 
Up to 400 modules (custom install) 
Q: Who understands this? (completely)? 
http://www.wired.com/wp-content/uploads/images_blogs/wiredscience/2011/08/iceberg-towing-illustration-dassault-systemes.jpg
>>> reasons[„programming“] 
• Zope Component Architecture 
- A framework is not an API
Zope Component Architecture ZCA 
• ZCA is the foundation of the Plone core 
(not of Zope2 itself) 
• ZCA has good parts and bad parts 
• brain***k features like multi-adapters 
neither lead to better code nor better 
readability 
• ZCA is a reasonable implementation framework 
• ZCA based code can be complex and complicated 
• ZCA often misused as public API in lack 
of an API at all 
• _I_ do not want to see much ZCA stuff on the 
public API level (except schemas, interfaces)
>>> reasons[„programming“] 
• Lack of explicit and documented APIs
Documented APIs are essential 
• APIs define an entry-point to a 
particular functionality 
• APIs encapsulate and hide complexity 
• APIs define a well-defined behavior 
• APIs can validate and enforce constraints 
on incoming and outgoing data 
• plone.api 
• „Facade“ design pattern 
• covers only the most elementary 
functionality of Plone 
• APIs must be humane 
(Kenneth Reitz: https://speakerdeck.com/kennethreitz/python-for-humans)
>>> reasons[„programming“] 
• Migration pain
Migration pain 
• Plone portal_migration usually works but 
• often TinyMCE issues 
• often Javascript issues 
• incompatible add-ons 
• (subtle) behavioral changes 
• Not a single smooth Plone 4.3 migration 
this year 
• Migration costs 
• often no longer predictable 
• higher risks & higher costs with 
every Plone major release
>>> reasons[„programming“] 
• Legacy all around us
The pain of dealing with legacy 
• e.g.Zope 2, CMF 
• new rewritten 
functionality added 
without removing 
all old culprit 
• more radical cuts are 
needed in order to get 
rid of old garbage 
before adding hopefully 
better code
>>> reasons[„others“] 
• Stagnation!? 
• Shrinking community!? 
• Shrinking adaptation!?
Stagnation 
Source: Plone Developer Survey 2014
Stagnation 
Source: Plone Developer Survey 2014
Geographical stagnation? 
Source: Plone Developer Survey 2014
>>> reasons[„others“] 
• Shrinking CMS market? 
• More legacy Plone projects than new 
Plone projects?
Shrinking CMS market? 
Source: Plone Developer Survey 2014
#WhatMakesPloneAnOptionFor_ME_Today 
• Enterprise CMS 
• fine-grained security model 
• outstanding security record over 
the last 12 years 
• flexible workflows 
• ZODB was great but time to move on…
#WhatMakesPloneAnOptionFor_ME_Tomorrow 
• As a developer 
• getting rid of old code cruft 
• getting rid of over-designed and 
over-engineered code cruft 
(e.g. portlets, z3c.form) 
• explicit and consistent APIs 
everywhere 
• explicit type checking 
• much more explicit error messages
#WhatMakesPloneAnOptionFor_ME_Tomorrow 
• As a consultant/integrator for 
„enterprise“ projects: 
• better search-engine (e.g. 
ElasticSearch) 
• better scalable database backend 
• Python 3.x 
• a coherent and 
consistent architecture
How can this be achieved? 
• Define what Plone currently is 
• Define what Plone should be in the 
future 
• Define the scope of Plone 
• Know your market segment 
• Be realistic about the goals that 
can be achieved with the given 
resources
How can this be achieved? 
• Zope 2 development is dead 
• ➝ Forget Zope 2 
• CMF development is more than dead 
• ➝ Forget CMF 
• ZCA…well… 
• Take the good parts and forget the 
rest 
• ZODB 
• It was nice with you but we need and 
we do have better options…no more 
pickle graves please.
How can this be achieved? 
• Throw everything away and start from scratch 
• Pyramid 
• Python 3 
• a new persistence API 
• a new pluggable persistence layer 
• evaluate the database market for the best 
database option with respect to scalability, 
ease-of-use etc. 
• see how existing functionality like Dexterity 
fits into a new architecture 
The time of the monster application servers 
is over! Take the best components on the 
market and build it yourself.
And there’s one more thing… 
• Don’t call it Plone! 
• Develop it under the umbrella of 
the brand Plone 
• But give it a different name 
(similar case with Typo 3 and its 
reincarnation NEOS)
Plone Developer Survey (103 answers) 
• 103 answers 
• most interesting: a lot of 
interesting comments about the 
pros and cons of Plone 
• http://goo.gl/pBK3DM
Questions? 
Source: Monty Python
Why Plone Will Die

More Related Content

What's hot

Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishJani Tarvainen
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Derek Jacoby
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go Eylem Ozekin
 
Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaGeorge Wilson
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Derek Jacoby
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Derek Jacoby
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11Derek Jacoby
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoWeng Wei
 
CPAN Exporter modules for Perl 5
CPAN Exporter modules for Perl 5CPAN Exporter modules for Perl 5
CPAN Exporter modules for Perl 5neilbowers
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesPaul Withers
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1Derek Jacoby
 
WordPress APIs
WordPress APIsWordPress APIs
WordPress APIsmdawaffe
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Paul Jones
 
Untangling - fall2017 - week 10
Untangling - fall2017 - week 10Untangling - fall2017 - week 10
Untangling - fall2017 - week 10Derek Jacoby
 
Untangling spring week9
Untangling spring week9Untangling spring week9
Untangling spring week9Derek Jacoby
 
Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Bachkoutou Toutou
 
Engage 2019 Software documentation is fun if you have the right tools: Introd...
Engage 2019 Software documentation is fun if you have the right tools: Introd...Engage 2019 Software documentation is fun if you have the right tools: Introd...
Engage 2019 Software documentation is fun if you have the right tools: Introd...AndrewMagerman
 

What's hot (20)

Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go
 
Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and Joomla
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to Go
 
CPAN Exporter modules for Perl 5
CPAN Exporter modules for Perl 5CPAN Exporter modules for Perl 5
CPAN Exporter modules for Perl 5
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API Slides
 
Lokalise
LokaliseLokalise
Lokalise
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1
 
Untangling11
Untangling11Untangling11
Untangling11
 
WordPress APIs
WordPress APIsWordPress APIs
WordPress APIs
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)
 
Untangling - fall2017 - week 10
Untangling - fall2017 - week 10Untangling - fall2017 - week 10
Untangling - fall2017 - week 10
 
Untangling spring week9
Untangling spring week9Untangling spring week9
Untangling spring week9
 
Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011
 
Engage 2019 Software documentation is fun if you have the right tools: Introd...
Engage 2019 Software documentation is fun if you have the right tools: Introd...Engage 2019 Software documentation is fun if you have the right tools: Introd...
Engage 2019 Software documentation is fun if you have the right tools: Introd...
 
Rails on HBase
Rails on HBaseRails on HBase
Rails on HBase
 

Similar to Why Plone Will Die

Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael CollinsDevopsdays
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadSoftware Guru
 
The Core of Microservice Architecture(First Approach)
The Core of Microservice Architecture(First Approach)The Core of Microservice Architecture(First Approach)
The Core of Microservice Architecture(First Approach)enyert
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
CI doesn’t start with Jenkins
CI doesn’t start with JenkinsCI doesn’t start with Jenkins
CI doesn’t start with JenkinsYuriy Rochnyak
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming GoWeng Wei
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
MPI Requirements of the Network Layer
MPI Requirements of the Network LayerMPI Requirements of the Network Layer
MPI Requirements of the Network Layerinside-BigData.com
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slidesSameer Al-Sakran
 
Oscon presentation
Oscon presentationOscon presentation
Oscon presentationgarrettmoon
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye codeKim Moir
 
Progressive Enhancement using WSGI
Progressive Enhancement using WSGIProgressive Enhancement using WSGI
Progressive Enhancement using WSGIMatthew Wilkes
 
The Python in the Apple
The Python in the AppleThe Python in the Apple
The Python in the ApplezeroSteiner
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014datafundamentals
 
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - PanoraysHacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - PanoraysDemi Ben-Ari
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012Jan Jongboom
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
Maintainable Machine Learning Products
Maintainable Machine Learning ProductsMaintainable Machine Learning Products
Maintainable Machine Learning ProductsAndrew Musselman
 

Similar to Why Plone Will Die (20)

Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael Collins
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
The Core of Microservice Architecture(First Approach)
The Core of Microservice Architecture(First Approach)The Core of Microservice Architecture(First Approach)
The Core of Microservice Architecture(First Approach)
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
CI doesn’t start with Jenkins
CI doesn’t start with JenkinsCI doesn’t start with Jenkins
CI doesn’t start with Jenkins
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming Go
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
MPI Requirements of the Network Layer
MPI Requirements of the Network LayerMPI Requirements of the Network Layer
MPI Requirements of the Network Layer
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 
Oscon presentation
Oscon presentationOscon presentation
Oscon presentation
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
Progressive Enhancement using WSGI
Progressive Enhancement using WSGIProgressive Enhancement using WSGI
Progressive Enhancement using WSGI
 
The Python in the Apple
The Python in the AppleThe Python in the Apple
The Python in the Apple
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
 
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - PanoraysHacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Maintainable Machine Learning Products
Maintainable Machine Learning ProductsMaintainable Machine Learning Products
Maintainable Machine Learning Products
 

More from Andreas Jung

State of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdfState of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdfAndreas Jung
 
Typesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurTypesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurAndreas Jung
 
Onkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenOnkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenAndreas Jung
 
PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020Andreas Jung
 
PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020Andreas Jung
 
Plone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumPlone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumAndreas Jung
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaAndreas Jung
 
Plone migrations using plone.restapi
Plone migrations using plone.restapiPlone migrations using plone.restapi
Plone migrations using plone.restapiAndreas Jung
 
Plone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST APIPlone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST APIAndreas Jung
 
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Andreas Jung
 
Generierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSSGenerierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSSAndreas Jung
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsAndreas Jung
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsAndreas Jung
 
The Plone and The Blockchain
The Plone and The BlockchainThe Plone and The Blockchain
The Plone and The BlockchainAndreas Jung
 
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsContent Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsAndreas Jung
 
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.Andreas Jung
 
Why we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseAndreas Jung
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comAndreas Jung
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 BucharestAndreas Jung
 

More from Andreas Jung (20)

State of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdfState of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdf
 
Typesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurTypesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 Namur
 
Onkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenOnkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 Dresden
 
PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020
 
PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020
 
Plone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumPlone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, Belgium
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
 
Plone migrations using plone.restapi
Plone migrations using plone.restapiPlone migrations using plone.restapi
Plone migrations using plone.restapi
 
Plone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST APIPlone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST API
 
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
 
Generierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSSGenerierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSS
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCs
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCs
 
The Plone and The Blockchain
The Plone and The BlockchainThe Plone and The Blockchain
The Plone and The Blockchain
 
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsContent Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
 
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
 
Why we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL Database
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
 
PyFilesystem
PyFilesystemPyFilesystem
PyFilesystem
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 Bucharest
 

Recently uploaded

AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Call Girls in Nagpur High Profile
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
SEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization SpecialistSEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization SpecialistKHM Anwar
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.soniya singh
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...tanu pandey
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...aditipandeya
 
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
horny (9316020077 ) Goa  Call Girls Service by VIP Call Girls in Goahorny (9316020077 ) Goa  Call Girls Service by VIP Call Girls in Goa
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goasexy call girls service in goa
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Standkumarajju5765
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 

Recently uploaded (20)

Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 
SEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization SpecialistSEO Growth Program-Digital optimization Specialist
SEO Growth Program-Digital optimization Specialist
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
 
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
horny (9316020077 ) Goa  Call Girls Service by VIP Call Girls in Goahorny (9316020077 ) Goa  Call Girls Service by VIP Call Girls in Goa
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 

Why Plone Will Die

  • 1. Why Plone Will Die (or turn into a CMS zombie) Andreas Jung Plone Conference 2014, Bristol
  • 2. Disclaimer • perhaps tendentious • perhaps provoking • perhaps unbalanced • always my personal opinion • not representing any official Plone position
  • 7.
  • 8. Why am I giving this talk? • growing developer pain • growing integrator pain • rising and unpredictable project costs • developer frustration at every corner
  • 9. 2014 - the year of Plone legacy
  • 10. 2014 - the year of Plone legacy • Plone 4.2➝4.3 • 3rd party code • TinyMCE issues • schema tabs no longer working • Javascript issues • JQueryUI incompatibility
  • 11. 2014 - the year of Plone legacy • Plone 4.0➝4.2 • 3rd party garbage code • Migration to Plone 4.3 not easily doable • Migration costs not predictable
  • 12. 2014 - the year of Plone legacy • Plone 4.0➝4.2 • own project • Migration to Plone 4.3 not easily doable • Migration costs not predictable • Problems with fully qualified links in images and links
  • 13. 2014 - the year of Plone legacy • Plone 2.X➝4.3 • customer grown project • AT➝Dexterity • p.a.event pain • p.a.widgets pain • z3c.form fun • much more pain…
  • 14. 2014 - the year of Plone legacy • Plone 4.0➝4.1➝4.2➝4.3 • own project • started in 2010 • every migration upgrade had more or less severe issues and caused significant work and costs
  • 15. I am not talking about UX with Plone
  • 16. Let me talk of _my_ (backend) developer experience
  • 17. >>> reasons[„programming“] • Dexterity programming experience
  • 18. Dexterity wanted to be pythonic IMySchema (attr1, attr2) MyType obj = plone.api.create(„my.type“, container, id) obj.attr1 = „foo“ obj.attr2 = „bar“
  • 19. …but it ended like this MyType IMySchema (attr1) IBehavior1 (attr2) IBehavior2 (attr3) obj = plone.api.create(„my.type“, container, id) obj.attr1 = „foo“ IBehavior1(obj).attr2 = „bar“ IBehavior2(obj).attr3 = „hello world“ call_some_subscriber(obj) # plone.app.event Q: Is this pythonic?
  • 20. >>> reasons[„programming“] • Insufficient parameter checks • Insufficient error handling • Stupid error messages
  • 21. My personal enemy: z3c.form • no compatibility checks between schema fields and widgets, pdb needed • pointless, unhelpful error messages saying all and nothing • vocabulary issues always require to use pdb (NOVALUESET error with lots of fields and vocabularies)
  • 22. …and then this madness '/Users/ajung/.buildout/eggs/z3c.form-3.1.1-py2.7.egg', '/Users/ajung/.buildout/eggs/plone.z3cform-0.8.0-py2.7.egg', '/Users/ajung/.buildout/eggs/plone.autoform-1.6-py2.7.egg', '/Users/ajung/.buildout/eggs/plone.app.z3cform-0.7.6-py2.7.egg', '/Users/ajung/.buildout/eggs/plone.formwidget.namedfile-1.0.9-py2.7.egg', '/Users/ajung/.buildout/eggs/collective.z3cform.datetimewidget-1.2.6-py2.7.egg', '/Users/ajung/.buildout/eggs/plone.app.form-2.2.4-py2.7.egg', '/Users/ajung/.buildout/eggs/zope.formlib-4.0.6-py2.7.egg', '/Users/ajung/.buildout/eggs/five.formlib-1.0.4-py2.7.egg', '/Users/ajung/.buildout/eggs/z3c.formwidget.query-0.10-py2.7.egg',
  • 23. >>> reasons[„programming“] • complexity • growing complexity • wrapper modules…
  • 24. 250 modules (4.3 install) Up to 400 modules (custom install) Q: Who understands this? (completely)? http://www.wired.com/wp-content/uploads/images_blogs/wiredscience/2011/08/iceberg-towing-illustration-dassault-systemes.jpg
  • 25. >>> reasons[„programming“] • Zope Component Architecture - A framework is not an API
  • 26. Zope Component Architecture ZCA • ZCA is the foundation of the Plone core (not of Zope2 itself) • ZCA has good parts and bad parts • brain***k features like multi-adapters neither lead to better code nor better readability • ZCA is a reasonable implementation framework • ZCA based code can be complex and complicated • ZCA often misused as public API in lack of an API at all • _I_ do not want to see much ZCA stuff on the public API level (except schemas, interfaces)
  • 27. >>> reasons[„programming“] • Lack of explicit and documented APIs
  • 28. Documented APIs are essential • APIs define an entry-point to a particular functionality • APIs encapsulate and hide complexity • APIs define a well-defined behavior • APIs can validate and enforce constraints on incoming and outgoing data • plone.api • „Facade“ design pattern • covers only the most elementary functionality of Plone • APIs must be humane (Kenneth Reitz: https://speakerdeck.com/kennethreitz/python-for-humans)
  • 30. Migration pain • Plone portal_migration usually works but • often TinyMCE issues • often Javascript issues • incompatible add-ons • (subtle) behavioral changes • Not a single smooth Plone 4.3 migration this year • Migration costs • often no longer predictable • higher risks & higher costs with every Plone major release
  • 31. >>> reasons[„programming“] • Legacy all around us
  • 32. The pain of dealing with legacy • e.g.Zope 2, CMF • new rewritten functionality added without removing all old culprit • more radical cuts are needed in order to get rid of old garbage before adding hopefully better code
  • 33. >>> reasons[„others“] • Stagnation!? • Shrinking community!? • Shrinking adaptation!?
  • 34. Stagnation Source: Plone Developer Survey 2014
  • 35. Stagnation Source: Plone Developer Survey 2014
  • 36. Geographical stagnation? Source: Plone Developer Survey 2014
  • 37. >>> reasons[„others“] • Shrinking CMS market? • More legacy Plone projects than new Plone projects?
  • 38. Shrinking CMS market? Source: Plone Developer Survey 2014
  • 39. #WhatMakesPloneAnOptionFor_ME_Today • Enterprise CMS • fine-grained security model • outstanding security record over the last 12 years • flexible workflows • ZODB was great but time to move on…
  • 40. #WhatMakesPloneAnOptionFor_ME_Tomorrow • As a developer • getting rid of old code cruft • getting rid of over-designed and over-engineered code cruft (e.g. portlets, z3c.form) • explicit and consistent APIs everywhere • explicit type checking • much more explicit error messages
  • 41. #WhatMakesPloneAnOptionFor_ME_Tomorrow • As a consultant/integrator for „enterprise“ projects: • better search-engine (e.g. ElasticSearch) • better scalable database backend • Python 3.x • a coherent and consistent architecture
  • 42. How can this be achieved? • Define what Plone currently is • Define what Plone should be in the future • Define the scope of Plone • Know your market segment • Be realistic about the goals that can be achieved with the given resources
  • 43. How can this be achieved? • Zope 2 development is dead • ➝ Forget Zope 2 • CMF development is more than dead • ➝ Forget CMF • ZCA…well… • Take the good parts and forget the rest • ZODB • It was nice with you but we need and we do have better options…no more pickle graves please.
  • 44. How can this be achieved? • Throw everything away and start from scratch • Pyramid • Python 3 • a new persistence API • a new pluggable persistence layer • evaluate the database market for the best database option with respect to scalability, ease-of-use etc. • see how existing functionality like Dexterity fits into a new architecture The time of the monster application servers is over! Take the best components on the market and build it yourself.
  • 45. And there’s one more thing… • Don’t call it Plone! • Develop it under the umbrella of the brand Plone • But give it a different name (similar case with Typo 3 and its reincarnation NEOS)
  • 46. Plone Developer Survey (103 answers) • 103 answers • most interesting: a lot of interesting comments about the pros and cons of Plone • http://goo.gl/pBK3DM