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

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 

Recently uploaded (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 

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