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

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
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
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
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
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
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.
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

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