SlideShare a Scribd company logo
1 of 37
Download to read offline
U P G R A D E T O P L O N E 5
P H I L I P B A U E R P L O N E C O N F E R E N C E 2 0 1 5
Philip Bauer
Munich
starzel.de
pbauer (github / irc)
StarzelDe (twitter)
PA R T 1 : G O O G L E F O R „ M I G R AT I O N S ,
U P G R A D E S A N D R E L A U N C H E S "
„Every non-trivial upgrade
should be approached as a relaunch.“
„The primary challenge is not development but
communication and project management.“
„Bring time. And space.“
„Expect everything to break!“
„Don't experiment, document.“
„Write your code as if your own kids will inherit the
code one day.“
„Write upgrade-steps.“
„Divide and conquer.“
„Don't try more than two new things at once.“
„Use the Help.“
U P G R A D I N G F R O M P L O N E 4 T O 5
Why?
Cui bono?
An easy sell?
L I V E D E M O
I T C A N ’ T B E T H AT E A S Y
A old site with content, configuration and add-ons
www.starzel.de
I T C A N ’ T B E T H AT E A S Y
I T C A N ’ T B E T H AT E A S Y
LinguaPlone is hard to get rid of
Theming is tricky
Some add-ons work nicely in Plone 5
I S S U E S
KeyError: 'Interface
`plone.app.iterate.interfaces.IIterateSettings`
defines a field `checkout_workflow_policy`, 

for which there is no record.'
I S S U E S
ComponentLookupError: (<InterfaceClass
plone.resource.interfaces.IResourceDirectory>,
'persistent')
I S S U E S
List of content to migrate from AT to DX is empty
L I N G U A P L O N E – O H M Y !
LinguaPlone ➟ plone.app.multilingual (2.x) in 4.3.x
Documentation: https://github.com/plone/
plone.app.multilingual/issues/181
wildcard.fixpersistentutilities to the rescue!
Can someone please sprint on this?
T H E U P G R A D E - G U I D E
http://docs.plone.org/manage/upgrading/
version_specific_migration/p4x_to_p5x_upgrade.html
Needs love at sprint
Your design will break unless it is a full diazo theme
T H E D E S I G N
Just joking ;-)
T H E D E S I G N
Your design will always break
T H E D E S I G N
Disable your custom theme before migrating!
T H E D E S I G N
C O N T E N T
S E T T I N G S
<record name="plone.displayed_types">
<value purge="false">
<element>talk</element>
</value>
</record>
C O D E
A R C H E T Y P E S D E X T E R I T Y
@@pac_installer
@@atct_migrator
@@migrate_from_atct
A R C H E T Y P E S D E X T E R I T Y
@@custom_migration
A R C H E T Y P E S D E X T E R I T Y
from plone.app.contenttypes.migration
import field_migrators
A R C H E T Y P E S D E X T E R I T Y
A R C H E T Y P E S D E X T E R I T Y
ISSUES:
memory
commits
U P G R A D I N G A D D - O N S F R O M 4 T O 5
That’s your job.
Thanks

More Related Content

What's hot

Ccse Net Zero Energy
Ccse Net Zero EnergyCcse Net Zero Energy
Ccse Net Zero Energyccseerc
 
Colors- the beauty of a Landscape
Colors- the beauty of a LandscapeColors- the beauty of a Landscape
Colors- the beauty of a LandscapeOnal Kothari
 
Asian Architecture Presentation Slides
Asian Architecture Presentation SlidesAsian Architecture Presentation Slides
Asian Architecture Presentation Slideshuiyuteoh
 
Office Space (Game Development Workplaces GDC2015) - Demetri Detsaridis
Office Space (Game Development Workplaces GDC2015) - Demetri DetsaridisOffice Space (Game Development Workplaces GDC2015) - Demetri Detsaridis
Office Space (Game Development Workplaces GDC2015) - Demetri DetsaridisDemetri Detsaridis
 
Passive heating and cooling
Passive heating and coolingPassive heating and cooling
Passive heating and coolingKhushiBibolia
 
Low cost residential building using locally available materials
Low cost residential building using locally available materialsLow cost residential building using locally available materials
Low cost residential building using locally available materialsPuspendu Ray
 
A presentation on green roofs and green walls
A presentation on green roofs and green wallsA presentation on green roofs and green walls
A presentation on green roofs and green wallsRajat Nainwal
 
Building services (Passive Cooling Techniques) for Architectural students
Building services (Passive Cooling Techniques) for Architectural studentsBuilding services (Passive Cooling Techniques) for Architectural students
Building services (Passive Cooling Techniques) for Architectural studentsChad Minott
 
City of College Station New Police Headquarters
City of College Station New Police HeadquartersCity of College Station New Police Headquarters
City of College Station New Police HeadquartersCity of College Station
 
solar passive system for buildings
solar passive system  for buildingssolar passive system  for buildings
solar passive system for buildingsGarima Sharma
 
Interior Design (Ceiling)
Interior Design (Ceiling)Interior Design (Ceiling)
Interior Design (Ceiling)Mehul Hotwani
 
MS West Interior Design Concepts
MS West Interior Design ConceptsMS West Interior Design Concepts
MS West Interior Design ConceptsJim Brown
 
Project Himurja Office Building, Shimla
Project Himurja Office Building, ShimlaProject Himurja Office Building, Shimla
Project Himurja Office Building, Shimlaarvindkrishan
 

What's hot (20)

Ccse Net Zero Energy
Ccse Net Zero EnergyCcse Net Zero Energy
Ccse Net Zero Energy
 
Passive cooling
Passive coolingPassive cooling
Passive cooling
 
Vernacular arch and its adaptation in modern construction.
Vernacular arch and its adaptation in modern construction.Vernacular arch and its adaptation in modern construction.
Vernacular arch and its adaptation in modern construction.
 
Colors- the beauty of a Landscape
Colors- the beauty of a LandscapeColors- the beauty of a Landscape
Colors- the beauty of a Landscape
 
History of interior design
History of interior designHistory of interior design
History of interior design
 
Asian Architecture Presentation Slides
Asian Architecture Presentation SlidesAsian Architecture Presentation Slides
Asian Architecture Presentation Slides
 
Office Space (Game Development Workplaces GDC2015) - Demetri Detsaridis
Office Space (Game Development Workplaces GDC2015) - Demetri DetsaridisOffice Space (Game Development Workplaces GDC2015) - Demetri Detsaridis
Office Space (Game Development Workplaces GDC2015) - Demetri Detsaridis
 
Passive cooling-techniques
Passive cooling-techniquesPassive cooling-techniques
Passive cooling-techniques
 
Passive heating and cooling
Passive heating and coolingPassive heating and cooling
Passive heating and cooling
 
Low cost residential building using locally available materials
Low cost residential building using locally available materialsLow cost residential building using locally available materials
Low cost residential building using locally available materials
 
A presentation on green roofs and green walls
A presentation on green roofs and green wallsA presentation on green roofs and green walls
A presentation on green roofs and green walls
 
Acrylic Roofing
Acrylic  Roofing Acrylic  Roofing
Acrylic Roofing
 
Building services (Passive Cooling Techniques) for Architectural students
Building services (Passive Cooling Techniques) for Architectural studentsBuilding services (Passive Cooling Techniques) for Architectural students
Building services (Passive Cooling Techniques) for Architectural students
 
Rubber flooring
Rubber flooringRubber flooring
Rubber flooring
 
City of College Station New Police Headquarters
City of College Station New Police HeadquartersCity of College Station New Police Headquarters
City of College Station New Police Headquarters
 
Sustainable Design of a Commercial Building
Sustainable Design of a Commercial BuildingSustainable Design of a Commercial Building
Sustainable Design of a Commercial Building
 
solar passive system for buildings
solar passive system  for buildingssolar passive system  for buildings
solar passive system for buildings
 
Interior Design (Ceiling)
Interior Design (Ceiling)Interior Design (Ceiling)
Interior Design (Ceiling)
 
MS West Interior Design Concepts
MS West Interior Design ConceptsMS West Interior Design Concepts
MS West Interior Design Concepts
 
Project Himurja Office Building, Shimla
Project Himurja Office Building, ShimlaProject Himurja Office Building, Shimla
Project Himurja Office Building, Shimla
 

Similar to Upgrade to Plone 5

Prototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporePrototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporeDhruv Gohil
 
Alexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesAlexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesNaotaka Jay HOTTA
 
PowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for GirlsPowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for GirlsImelda Reyes
 
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
 Won't You Take Me to Chunk-y Town: Component-based theming and the future of... Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...Heather Brooke Drummond
 
State of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon DublinState of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon DublinDries Buytaert
 
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...Holden Karau
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet CodeDavid Danzilio
 
Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...Holden Karau
 
Evolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and ProcessEvolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and Processuxpin
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile WebC4Media
 
PHP Doesn't Suck - Notes
PHP Doesn't Suck - NotesPHP Doesn't Suck - Notes
PHP Doesn't Suck - NotesJohn Hobbs
 
code review, style guides and tools for pythin
code review, style guides and tools for pythincode review, style guides and tools for pythin
code review, style guides and tools for pythinuniversité d'el jadida
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)wesley chun
 
Architecting your IT career
Architecting your IT careerArchitecting your IT career
Architecting your IT careerJohn Mark Troyer
 
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...Holden Karau
 

Similar to Upgrade to Plone 5 (20)

Prototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporePrototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at Singapore
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
Ploneide
PloneidePloneide
Ploneide
 
Python in 15 minutes
Python in 15 minutesPython in 15 minutes
Python in 15 minutes
 
Alexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesAlexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummies
 
PowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for GirlsPowerPoint Presentation about Programming 101 for Girls
PowerPoint Presentation about Programming 101 for Girls
 
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
 Won't You Take Me to Chunk-y Town: Component-based theming and the future of... Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
Won't You Take Me to Chunk-y Town: Component-based theming and the future of...
 
State of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon DublinState of Drupal keynote, DrupalCon Dublin
State of Drupal keynote, DrupalCon Dublin
 
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
Powering Tensorflow with big data using Apache Beam, Flink, and Spark - OSCON...
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
 
Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...Simplifying training deep and serving learning models with big data in python...
Simplifying training deep and serving learning models with big data in python...
 
Evolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and ProcessEvolving your Design System: People, Product, and Process
Evolving your Design System: People, Product, and Process
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
 
PHP Doesn't Suck - Notes
PHP Doesn't Suck - NotesPHP Doesn't Suck - Notes
PHP Doesn't Suck - Notes
 
DevstackPY
DevstackPYDevstackPY
DevstackPY
 
Code Forensics
Code ForensicsCode Forensics
Code Forensics
 
code review, style guides and tools for pythin
code review, style guides and tools for pythincode review, style guides and tools for pythin
code review, style guides and tools for pythin
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)
 
Architecting your IT career
Architecting your IT careerArchitecting your IT career
Architecting your IT career
 
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...Powering tensorflow with big data (apache spark, flink, and beam)   dataworks...
Powering tensorflow with big data (apache spark, flink, and beam) dataworks...
 

More from Philip Bauer

Growing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaisesGrowing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaisesPhilip Bauer
 
Migrations migrations migrations
Migrations migrations migrationsMigrations migrations migrations
Migrations migrations migrationsPhilip Bauer
 
Plone ♥︎ Python 3
Plone ♥︎ Python 3Plone ♥︎ Python 3
Plone ♥︎ Python 3Philip Bauer
 
Mosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always WantedMosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always WantedPhilip Bauer
 
Migrations, Upgrades and Relaunches
Migrations, Upgrades and RelaunchesMigrations, Upgrades and Relaunches
Migrations, Upgrades and RelaunchesPhilip Bauer
 
It's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypesIt's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypesPhilip Bauer
 
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...Philip Bauer
 
Plone-Content-Typen mit Dexterity
Plone-Content-Typen mit DexterityPlone-Content-Typen mit Dexterity
Plone-Content-Typen mit DexterityPhilip Bauer
 

More from Philip Bauer (10)

Growing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaisesGrowing pains - PosKeyErrors and other malaises
Growing pains - PosKeyErrors and other malaises
 
Migrations migrations migrations
Migrations migrations migrationsMigrations migrations migrations
Migrations migrations migrations
 
Plone ♥︎ Python 3
Plone ♥︎ Python 3Plone ♥︎ Python 3
Plone ♥︎ Python 3
 
pdb like a pro
pdb like a propdb like a pro
pdb like a pro
 
Mosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always WantedMosaic - The Layout Solution You Always Wanted
Mosaic - The Layout Solution You Always Wanted
 
Migrations, Upgrades and Relaunches
Migrations, Upgrades and RelaunchesMigrations, Upgrades and Relaunches
Migrations, Upgrades and Relaunches
 
Pimp my Plone
Pimp my PlonePimp my Plone
Pimp my Plone
 
It's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypesIt's the way of the present - Why you should use plone.app.contenttypes
It's the way of the present - Why you should use plone.app.contenttypes
 
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
Alles in Allem. Wie man mit Deliverance existierende Inhalte oder Anwendungen...
 
Plone-Content-Typen mit Dexterity
Plone-Content-Typen mit DexterityPlone-Content-Typen mit Dexterity
Plone-Content-Typen mit Dexterity
 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Upgrade to Plone 5

  • 1. U P G R A D E T O P L O N E 5 P H I L I P B A U E R P L O N E C O N F E R E N C E 2 0 1 5
  • 3. PA R T 1 : G O O G L E F O R „ M I G R AT I O N S , U P G R A D E S A N D R E L A U N C H E S "
  • 4. „Every non-trivial upgrade should be approached as a relaunch.“
  • 5. „The primary challenge is not development but communication and project management.“
  • 6. „Bring time. And space.“
  • 9. „Write your code as if your own kids will inherit the code one day.“
  • 12. „Don't try more than two new things at once.“
  • 14. U P G R A D I N G F R O M P L O N E 4 T O 5 Why? Cui bono? An easy sell?
  • 15. L I V E D E M O
  • 16. I T C A N ’ T B E T H AT E A S Y A old site with content, configuration and add-ons www.starzel.de
  • 17. I T C A N ’ T B E T H AT E A S Y
  • 18. I T C A N ’ T B E T H AT E A S Y LinguaPlone is hard to get rid of Theming is tricky Some add-ons work nicely in Plone 5
  • 19. I S S U E S KeyError: 'Interface `plone.app.iterate.interfaces.IIterateSettings` defines a field `checkout_workflow_policy`, 
 for which there is no record.'
  • 20. I S S U E S ComponentLookupError: (<InterfaceClass plone.resource.interfaces.IResourceDirectory>, 'persistent')
  • 21. I S S U E S List of content to migrate from AT to DX is empty
  • 22. L I N G U A P L O N E – O H M Y ! LinguaPlone ➟ plone.app.multilingual (2.x) in 4.3.x Documentation: https://github.com/plone/ plone.app.multilingual/issues/181 wildcard.fixpersistentutilities to the rescue! Can someone please sprint on this?
  • 23. T H E U P G R A D E - G U I D E http://docs.plone.org/manage/upgrading/ version_specific_migration/p4x_to_p5x_upgrade.html Needs love at sprint
  • 24. Your design will break unless it is a full diazo theme T H E D E S I G N
  • 25. Just joking ;-) T H E D E S I G N
  • 26. Your design will always break T H E D E S I G N
  • 27. Disable your custom theme before migrating! T H E D E S I G N
  • 28. C O N T E N T
  • 29. S E T T I N G S <record name="plone.displayed_types"> <value purge="false"> <element>talk</element> </value> </record>
  • 30. C O D E
  • 31. A R C H E T Y P E S D E X T E R I T Y @@pac_installer @@atct_migrator @@migrate_from_atct
  • 32. A R C H E T Y P E S D E X T E R I T Y @@custom_migration
  • 33. A R C H E T Y P E S D E X T E R I T Y from plone.app.contenttypes.migration import field_migrators
  • 34. A R C H E T Y P E S D E X T E R I T Y
  • 35. A R C H E T Y P E S D E X T E R I T Y ISSUES: memory commits
  • 36. U P G R A D I N G A D D - O N S F R O M 4 T O 5 That’s your job.

Editor's Notes

  1. With a stable release of Plone 5 customers you should start planning to upgrade existing sites to Plone 5. In this talk I will discuss migrations in general and especially those from Plone 4 to Plone 5. When not to upgrade and on the code-part of migrations. Mainly I will discuss what you can and should do in Upgrade-Steps and which problems await you when migrating from one Plone-Version to another. I will also discuss migrations from Archetypes to Dexterity. This talk is for developers who don't regularly write Upgrade-Steps and want to know why they should be bothered. Also if you do not write upgrade steps without ftw.upgrade you need to see this talk.
  2. who am i
  3. This is a sequel to "Migrations, Upgrades and Relaunches" given 2013 in Brasilia (http://www.youtube.com/watch?v=1Qx0JALp3lQ) 1. Lessons from part 1 ---------------------- The most important lessons from part 1 Held in Brasilia at Ploneconf 2013 and available on video Google for "Migrations, Upgrades and Relaunches"
  4. Every non-trivial upgrade should be approached as a relaunch. Be careful with words: Update, Upgrade, Migration, Redesign, Rewrite, Relaunch Almost everything is a relaunch, at least you want it to be.
  5. The primary challenge is not development but communication and project management What does the client really want?
  6. Bring time. And space you will always forget hat you'll have to migrate multiple times. Double your estimates. Get lot's and lot's of Disk-Space (and a fast SSD) Your DB will double during migrations and you need several copies of it.
  7. Expect everything to break! You will have to - fix old javascript - figure out what custom skin-templates actually did
  8. Don't experiment, document Write every problem and every solution down! Make a Plan Write down how you want to approach it A to Z and change the plan as you go. Keep the plan for future reference.
  9. Write your code as if your own kids will inherit the code one day. Do you want them to hate you?
  10. Write upgrade-steps! I wrote a upgrade-step that migrated a site from P3->P4 and ran for 14 straight hours It consisted of ~30 single steps including: - migration to blobs - migration of comments - removal of old content - running upgrade-steps for about 15 Addons - Intermediary commits You don't want to do that by hand
  11. Divide and conquer Write single upgrade-steps with commits after each one If A works use a copy of the DB at that state to write B and so on Combine to ABCDE when they work
  12. Don't try to add more than two new technologies at once. You will make your customer pay for your inexperience
  13. Use the Help plone.api ftw.upgrade
  14. Why would you want to migrate to Plone 5? First mistake: It’s not about you. It’s about your client. You want to play with the newest shiny toys and bang you head against the resource-registry! But: Why would your customer want to migrate if she/he has a really nice running site based on Plone 4 Customers don't like paying for upgrades that give them no real benefit. They don't want you to have fun using the newest toys The want Design, Usability, Functionality Is Plone 5 an easy sell for a customer with a existing site? Great responsive design ootb -> Meh They probably have a great responsive design Web Editors -> Meh TinyMCE 4 not perfect either Security -> Meh! Is taken for granted. TTW Features -> Meh! Great for prototyping and clients who want to do stuff themselved. Not very important in most our setups. Dexteriy -> Meh! The probably use it already UX and Usability > That increases productivity \o/ Demo of P5 for a client. At the time I showed the new folder_contents it was a done deal. Most relevant for people who work with content. Not always an easy sell! We could discuss the marketing-side of upgrading to Plone 5 It's ok to wait with migrating until 5.0.1 is out. It's not ok to use P4 in new projects unless you have no budget at all to deal with new stuff When not to upgrade: No budget Many incompatible Addons Short site-lifespan No developer-resources I did not migrate any client-project yet.
  15. Show 4.3 demo-site $ cd buildout43 $ ./bin/instance fg http://localhost:8080/Plone/ http://localhost:8080/Plone/ein-oerdner/ein-termin Migrate live to 5.0 $ cd .. $ cd buildout/var $ extract 43.tar.gz $ cd .. $ ./bin/instance fg http://localhost:8080/manage Upgrade and show http://localhost:8080/Plone/ein-oerdner/ein-termin (comment, static portlet, workflow state) http://localhost:8080/Plone/ein-oerdner/a-newsuetem/@@sharing (local roles, image migrated to behavior) Then migrate to DX install pac migrate types show same links Summary: Easy as a pie! Can it really be that easy?
  16. Another example: Starzel migration $ cd ~/workspace/starzel $ ./bin/instance fg $ open http://localhost:8080/starzel $ open http://localhost:8080/starzel/portal_quickinstaller/manage_installProductsForm
  17. These are the add-ons
  18. For this talk I migrated our company-site and this was my experience: - LinguaPlone is hard to get rid of - Theming is tricky - Some addons actually work nicely in Plone 5: - collective.plonetruegallery - collective.disqus - Products.PloneFormGen - collective.js.jqueryui Use checkouts or newest versions Main issues: - Products.LinguaPlone - plone.app.theming was not installed by migration - Theme breaks everything -> Concentrate on content and logic first, design later If everything works as it should in Barceloneta then focus on the theme Not possible for people without developer skills!!!
  19. Reinstall plone.app.iterate (outdated version)
  20. install plone.app.theming (was not installed in old site)
  21. Remove Language-Index! Another issue: thousands of old spam comments skip migration of comments or upgrade-step to remove them (before migrating from 4 to 5)
  22. LinguaPlone > plone.app.multilingual !!! You should migrate from LinguaPLone to Plone.plone.app.multilingual 2.x before migrating from 4 to 5!!! Needs more work Needs more documentation Please sprint on this Wishlist: Working complete uninstall-method for LinguaPlone Documentation Don't expect people who wrote packages to take care of them forever! Someone please adopt/shepherd the maintenance of p.a.m! You still need wildcard.fixpersistentutilities to remove LP *phew*! We already migrated several 4.x-sites from LP to p.a.m but it is always a adventure and never fun.
  23. Read the Upgrade-Guide! Needs some more work! During the sprint: Write down all issues you encounter when upgrading add-ons (google-doc, we'll merge it into the rst after the sprint).
  24. Once the migration is done you can re-enable and fit it.
  25. The Theme will break Sunburst does not work in P5. structure of many elements has changed (html5!) Disable your custom theme before migrating! For www.starzel.de: The Design probably sucked anyways. Create a new one or keep default until we find time for that.
  26. Content Default AT content will work as before. The main thing is that you should actually migrate to Dexterity (next part)
  27. Settings When you modified plone-setting via GS (either with portal_properties or portal_registry) portal_properties is deprecated but works for you custom settings All plone-settings are kept and migrated to portal_registry add custom types to navigation api.portal.get_registry_value("plone.displayed_types")
  28. No code-examples. Would be too many… Before you work on custom code figure out if it is actually needed any more! Example: custom code replaced by LanguageSwitcher in plone.app.multilingual Use plone.api! Some imports changed (CMFDefault is gone). formlib is gone: controlpanels and custom forms should be moved to z3c.form portlets also moved to z3c.form your overrides/patches will likely break
  29. Install plone.app.contenttypes (@@pac_installer) Installs pac but only replaces types without any instances Migrate content with form: @@atct_migrator In code use the view @@migrate_from_atct: migration_view = api.get_view('migrate_from_atct', portal) results = migration_view(content_types=['News Item', 'Image']) Only works for default-types!!! Allows migration of schemaextendend types (contentleadimage -> leadimage-behavior). Is extendable. Has several in-place patches (linkintegrity, notifyModified, UUIDIndex etc...) Might be modified so that it is better reusable for custom types) Partial migrations Choose which types you want migrated. The others stay AT (not recommended but may be necessary if you have heavily customized types)
  30. Custom migration form form: @@custom_migration Show Example? Migrate ATEvent to NewsItem Create Site with ATCT: - Disable "setup_content" - Enable "Archetypes-based default content for Plone" @@pac_installer @@custom_migration Maybe has bugs. Please test and fix instead of writing custom addons
  31. Custom migrations Products.contentmigration is great! use field migrators in plone.app.contenttypes.migration.field_migrators! migrate relations with plone.app.contenttypes.migration.utils.link_items Migrate the branch you are standing on... e.g. all references are stored in an annotation on the portal and restored from there
  32. memory useage PR to add transactions after every X items and after each type is ready for review (thanks Daniel Jowett!) Create tickets please! And fix them as well.
  33. This is the main sprint topic. Does it solve a problem that actually still exists (collective.contentleadimage)? If there are content-types: - AT works in P5 (Example: Products.PloneFormGen) - Maybe migrate them to DX (provide a custom migration using the code-examples above) -> Warning: that means a lot of extra work! Fix resources (css/js) Functionality tied to content-types (e.g. a special field) -> turn into a behavior Some add-ons are not worth migrating since there are similar addons that already work with P5