SlideShare a Scribd company logo
1 of 44
Download to read offline
Migrating a
legacy product
to Pyramid
Tom Blockley
Who am I?
• Tom
• Developer for Delib
• Plone for 5 years
• Pyramid for 2 years
• Scrum Master for 18 months
• Before that? Java.
Who are Delib?
• The other Plone company in Bristol
• Est. 2001: Consultation solutions for government
• Plone for 8 years
• First to use Dexterity in production sites
• 3 main products, 2 based on Plone
• >150 clients around the world
• >150,000 responses in 2013
• Peak of 42,000 responses in a single week in 2013
• Biggest ever: 47k Users and 110k Responses in 3 months
What is this?
• Migration of an old product to the Pyramid framework
• Tech choices
• Problems
• Agile
• Translation
• Testing
• Theming
The old
• Conceived 2005
• ZMI product with Kubes
• Completely customisable per-client
• >60 clients, large and small
• Ugly. Really Ugly...
The old
The new
• Conceived May 2013
• Chose Pyramid
• Must be:
• Pretty
• Responsive
• Accessible
• Translatable
• Customisable
• Tested
• ... and done by October 2013
Decisions we made
• Build it using agile methodology
• Use:
• Pyramid
• ZODB
• Buildout
• Diazo
• Colander
• Deform
• repoze.workflow
• Pyramid auth
• i18n
How did it go?
• Actually only started in July
• 10 week long sprints
• Fast prototyping to test concepts and UX
• Still a lot to do
• BUT the public side of the app nearly finished
Sprint 1 - Ada Lovelace
• 544 lines of python (95 in tests)
• 48%Test coverage
Sprint 2 - Bertrand Russell
• 1693 lines of python (272 in tests)
• 76%Test coverage
Sprint 3 - Charlie Chaplin
• 2299 lines of python (779 in tests)
• 74%Test coverage
Sprint 4 - Don McCullin
• 2419 lines of python (931 in tests)
• 84%Test coverage
Sprint 5 - Edwin Hubble
• 2683 lines of python (1079 in tests)
• 85%Test coverage
Sprint 6 - Francis Crick
• 2867 lines of python (1266 in tests)
• 86%Test coverage
Sprint 7 - Grace Hopper
• 3020 lines of python (1301 in tests)
• 85%Test coverage
Sprint 8 - Harry Houdini
• 3414 lines of python (1416 in tests)
• 86%Test coverage
Sprint 9 - Indiana Jones
• 3752 lines of python (1494 in tests)
• 86%Test coverage
Sprint 10 - Judi Dench
• 4602 lines of python (2027 in tests)
• 87%Test coverage
Technologies used with and
in Pyramid
Combined Traversal and Dispatch
• Gives you all the good stuff from traversal
• Without defining your URL structure for you
Combined Traversal and Dispatch
+
+
Combined Traversal and Dispatch
+
Auth framework
• Easy to configure
• Can set it up incrementally
• Hooking up with object classes & __acl__ is a piece of cake
Predicates
• Request Parameter predicates
• Route prefixing
• Stacking predicates
• Custom predicates
• Exception views
• default_views
Colander & Deform
• Does the forms and schema so you don’t have to
• Colander Schema is canonical source for layout
Diazo
• Build basically an HTML API
• Keep basic, semantically correct templates
• Apply anyone’s theme to the templates
• Good introduction to XSL
• Don’t pollute your app code with crazy skin compromises
• Designer & Front end developer could go and do their thing
Things we really liked about Pyramid
• Auth & group finder
• Super flexible predicates
• Combining traversal and dispatch
• Documentation
• Everything runs in one process
• Fast tests
• Minimal boiler plate
• pshell
How did we do against our
original goals?
Pretty
• 3 demos in different colour schemes
• Configured with a few lines of LESS
Responsive
• Javascript
• Mobile andTablet layouts
Accessible
• Well, we’ve not done it yet
• BUT
• We have a set of accessible colour schemes ready to go
• We can fix the accessibility of the markup in Diazo
Translatable
• Every single piece of text on the site has corresponding i18n
tag
• No translations yet
• Some of the current theme is too fixed width
Customisable
• Fork it
• Theming for clients is easy
Tested
• Jenkins integration
• No selenium / robot framework yet
• 87% Coverage
Agile
• Fast prototyping
• Populate script
• Make initial implementations as naïve as possible
• We’ve already decided to change the design again
What went wrong?
Pitfalls
• “Protoduction”
• Short term technical debt
• Leaving interns on their own
• Meeting fatigue
• Arbitrary deadlines
Problems
• Incomplete
• Contracted Front End developers
• One tree, many branches
• Rebase is a b*tch
• repoze.workflow
Thanks.

More Related Content

Viewers also liked

Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成Yasuyuki Fujikawa
 
Pyramid + socket.io 人狼を作ってみた
Pyramid + socket.io 人狼を作ってみたPyramid + socket.io 人狼を作ってみた
Pyramid + socket.io 人狼を作ってみたJunya Hayashi
 

Viewers also liked (6)

Sphinx 社内勉強会
Sphinx 社内勉強会Sphinx 社内勉強会
Sphinx 社内勉強会
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成
 
Pyramid Framework
Pyramid FrameworkPyramid Framework
Pyramid Framework
 
Sci rev
Sci revSci rev
Sci rev
 
Pyramid + socket.io 人狼を作ってみた
Pyramid + socket.io 人狼を作ってみたPyramid + socket.io 人狼を作ってみた
Pyramid + socket.io 人狼を作ってみた
 
Ecological pyramids
Ecological pyramidsEcological pyramids
Ecological pyramids
 

Recently uploaded

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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
 
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
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
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
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Migrating a legacy product to Pyramid

  • 1. Migrating a legacy product to Pyramid Tom Blockley
  • 2. Who am I? • Tom • Developer for Delib • Plone for 5 years • Pyramid for 2 years • Scrum Master for 18 months • Before that? Java.
  • 3. Who are Delib? • The other Plone company in Bristol • Est. 2001: Consultation solutions for government • Plone for 8 years • First to use Dexterity in production sites • 3 main products, 2 based on Plone • >150 clients around the world • >150,000 responses in 2013 • Peak of 42,000 responses in a single week in 2013 • Biggest ever: 47k Users and 110k Responses in 3 months
  • 4. What is this? • Migration of an old product to the Pyramid framework • Tech choices • Problems • Agile • Translation • Testing • Theming
  • 5. The old • Conceived 2005 • ZMI product with Kubes • Completely customisable per-client • >60 clients, large and small • Ugly. Really Ugly...
  • 7. The new • Conceived May 2013 • Chose Pyramid • Must be: • Pretty • Responsive • Accessible • Translatable • Customisable • Tested • ... and done by October 2013
  • 8. Decisions we made • Build it using agile methodology • Use: • Pyramid • ZODB • Buildout • Diazo • Colander • Deform • repoze.workflow • Pyramid auth • i18n
  • 9. How did it go? • Actually only started in July • 10 week long sprints • Fast prototyping to test concepts and UX • Still a lot to do • BUT the public side of the app nearly finished
  • 10. Sprint 1 - Ada Lovelace • 544 lines of python (95 in tests) • 48%Test coverage
  • 11. Sprint 2 - Bertrand Russell • 1693 lines of python (272 in tests) • 76%Test coverage
  • 12. Sprint 3 - Charlie Chaplin • 2299 lines of python (779 in tests) • 74%Test coverage
  • 13. Sprint 4 - Don McCullin • 2419 lines of python (931 in tests) • 84%Test coverage
  • 14. Sprint 5 - Edwin Hubble • 2683 lines of python (1079 in tests) • 85%Test coverage
  • 15. Sprint 6 - Francis Crick • 2867 lines of python (1266 in tests) • 86%Test coverage
  • 16. Sprint 7 - Grace Hopper • 3020 lines of python (1301 in tests) • 85%Test coverage
  • 17. Sprint 8 - Harry Houdini • 3414 lines of python (1416 in tests) • 86%Test coverage
  • 18. Sprint 9 - Indiana Jones • 3752 lines of python (1494 in tests) • 86%Test coverage
  • 19. Sprint 10 - Judi Dench • 4602 lines of python (2027 in tests) • 87%Test coverage
  • 20. Technologies used with and in Pyramid
  • 21. Combined Traversal and Dispatch • Gives you all the good stuff from traversal • Without defining your URL structure for you
  • 22. Combined Traversal and Dispatch + +
  • 24. Auth framework • Easy to configure • Can set it up incrementally • Hooking up with object classes & __acl__ is a piece of cake
  • 25. Predicates • Request Parameter predicates • Route prefixing • Stacking predicates • Custom predicates • Exception views • default_views
  • 26.
  • 27. Colander & Deform • Does the forms and schema so you don’t have to • Colander Schema is canonical source for layout
  • 28. Diazo • Build basically an HTML API • Keep basic, semantically correct templates • Apply anyone’s theme to the templates • Good introduction to XSL • Don’t pollute your app code with crazy skin compromises • Designer & Front end developer could go and do their thing
  • 29. Things we really liked about Pyramid • Auth & group finder • Super flexible predicates • Combining traversal and dispatch • Documentation • Everything runs in one process • Fast tests • Minimal boiler plate • pshell
  • 30. How did we do against our original goals?
  • 31. Pretty • 3 demos in different colour schemes • Configured with a few lines of LESS
  • 32.
  • 33.
  • 34.
  • 36. Accessible • Well, we’ve not done it yet • BUT • We have a set of accessible colour schemes ready to go • We can fix the accessibility of the markup in Diazo
  • 37. Translatable • Every single piece of text on the site has corresponding i18n tag • No translations yet • Some of the current theme is too fixed width
  • 38. Customisable • Fork it • Theming for clients is easy
  • 39. Tested • Jenkins integration • No selenium / robot framework yet • 87% Coverage
  • 40. Agile • Fast prototyping • Populate script • Make initial implementations as naïve as possible • We’ve already decided to change the design again
  • 42. Pitfalls • “Protoduction” • Short term technical debt • Leaving interns on their own • Meeting fatigue • Arbitrary deadlines
  • 43. Problems • Incomplete • Contracted Front End developers • One tree, many branches • Rebase is a b*tch • repoze.workflow