SlideShare una empresa de Scribd logo
1 de 53
Zope is Dead,
Long Live Zope!

    Lennart Regebro
    Krakow, June 2011
“Zope Is Python's Killer App”
      Jon Udell – BYTE, February 2000
Pop Quiz!
Google trends: “Zope”
A brief history of Zope
Year: 1996
●   Duke Nukem 3D
●   Altavista
●   Web development is CGI and Perl
●   Maybe php, if you are lucky
●   Spice Girls
●   Presentations had bullet lists
Location: An airplane
●   Jim Fulton creates Bobo
    ●   Object publishing
    ●   Traversal
    ●   Open Source
Year: 1997 (maybe)
●   BoboPOS: A persistent object storage
●   DTML: Innovative HTML templating
●   Principia: A web framework
    ●   Uses Bobo and BoboPOS and DTML
Year: 1998




Principia becomes open source
     and is renamed Zope
Year: 2001




The warts of Zope starts being a problem

          A rewrite is started
Year: 2004




The rewrite is released as Zope 3
Year: 2009




Zope 3 is renamed BlueBream
Year: 2011
Zope?
Zope!
Object Publishing
●   You use the URL it to find an object
●   The object is then asked to render itself
●   No stdout is used
●   No loading of the whole program every
    request
●   Your application is not a collection of
    separate scripts on the disk
Traversal
●   Example path: /calendar/2011/06/17/google
●   / returns a root object
●   You ask the root object for the 'calendar'
    subobject
●   You ask calendar for the '2011' object
●   Etc until you reach the 'google' object
●   Which you ask to render itself
●   No more /calendar.php?item=84735
Many other nice things
●   Fine grained access control
●   User management
●   Internationalization
●   Reusable extension products
●   Zope Page Templates
●   Through-the-web Development
Digression: Database Fashions
●   1990's: Object-Oriented Databases
●   Early 2000's: In-memory databases
●   Mid 2000's: Transparent persistence
●   Now: Schemaless / NoSQL databases and
    sharding
ZODB
●   ZODB is an object-oriented,
●   In-memory transactional,
●   Transparently persistent,
●   Schemaless database.
●   It's hierarchical and logging as well.
The facepalms of Zope
Through-the-web Development
●   Code in the database
●   No version control
●   Restricted Python for security reasons
●   You can't use normal development tools
Development dead-ends
●   The TTW development was not OOP
    ●   You end up with a pile of scripts
●   Solution: ZClasses
    ●   Actually was even worse
    ●   Required re-write
●   Disk-based products
    ●   The right solution
    ●   But: Required rewrite. Again.
The Zope Ghetto
●   Zope had to invent everything
●   Later others reinvented it
●   Zope ended up with its own solution
Monolithic
Magic attributes and methods
●   __bobo_traverse__()
    ●   Special traverse logic
●   __before_publishing_traverse__()
    ●   Also special traverse logic
●   __call__()
    ●   Is what renders the object.
    ●   Unless is has an index_html attribute
        –   Unless there is a default view component
             ●   Unless there is a __browser_default__()
Acquisition
●   Like inheritance but completely different
●   All objects “acquire” the attributes of objects
    above them in the object hierarchy
●   The complete opposite of namespaces
Backwards compatibility forever
Bad karma
●   Bad documentation
●   No ability to hype
●   Ugly web page
Bad learning curve

                         Just gets worse




Starts easy
Zope 3!
Fixed all the problems
●   Not TTW
●   An awesome aspect-inspirect component
    architecture!
●   Everything pluggable
●   Acquisition only when you ask for it
●   Super-mega-enterprisey!
Nicer learning curve
But...
●   Not backwards compatible
●   Death by abstraction:
    ●   Everything is an adapter or a utility
●   All files called the same:
    ●   configure.zcml, interfaces.py, browser.py, adapters.py,
        configure.zcml again.
    ●   “A conspiracy on the hard-disk”
         –   Jörgen Modin
●   Still installed as a monolith
●   Confusing name
Five




Zope 3's awesome component architecture

             But in Zope 2
Mmmmmyeah...
The King is Dead?
State of Zope 2011
Plone
●   Fantastic Content Management System
●   Loads of users
●   Great community
●   Best conferences
Buildout!
●   Deployment tool
●   For development and production
●   Extensible with recipes
●   Even used by prominent Django-people!
Repoze
●   A re-imagining of the Zope publisher
●   A WSGI pipeline of middleware
    ●   Transactions
    ●   Security
    ●   Indexing
●   Quickly picked up by Pylons/TG crowd
Cooperation!




Pylons ♥ BFG = True
Pyramid
●   Routing or Traversal
●   Persistance agnostic (can even use ZODB)
●   Fast and extensible
●   Best T-shirt of Pycon 2011
Deliverance / Diazo
●   A whole new way to theme sites
●   Rules to map items from content to theme
●   Skin sites in hours
●   Make several apps look the same
Hot or Not?




✗             ✓
Cool Zope Things
●   Object publishing
●   ZODB
●   Zope Component Architecture
●   Buildout
●   Repoze
●   Pyramid
●   Deliverance / Diazo
Questions?




regebro@gmail.com

Más contenido relacionado

La actualidad más candente

Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by GoogleUttam Gandhi
 
Golang from Scala developer’s perspective
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspectiveSveta Bozhko
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)ShubhamMishra485
 
Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0Christopher Ng
 
Coding with golang
Coding with golangCoding with golang
Coding with golangHannahMoss14
 
Golang taipei #45 10th birthday
Golang taipei #45 10th birthdayGolang taipei #45 10th birthday
Golang taipei #45 10th birthdayEvan Lin
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageJohn Potocny
 
Why you should care about Go (Golang)
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)Aaron Schlesinger
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming languageTechnology Parser
 
Go Programming language, golang
Go Programming language, golangGo Programming language, golang
Go Programming language, golangBasil N G
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to GoOliver N
 
welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?sangam biradar
 
Jfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaJfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaAndres Almiray
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Javajazoon13
 
Go language presentation
Go language presentationGo language presentation
Go language presentationparamisoft
 
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageAniruddha Chakrabarti
 
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...Aniruddha Chakrabarti
 
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人Evan Lin
 
Flutter - Pixel by Pixel
Flutter - Pixel by PixelFlutter - Pixel by Pixel
Flutter - Pixel by PixelThomas Gazzoni
 

La actualidad más candente (20)

Go Lang
Go LangGo Lang
Go Lang
 
Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by Google
 
Golang from Scala developer’s perspective
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspective
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)
 
Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0Kotlin react bkk 3.0.0
Kotlin react bkk 3.0.0
 
Coding with golang
Coding with golangCoding with golang
Coding with golang
 
Golang taipei #45 10th birthday
Golang taipei #45 10th birthdayGolang taipei #45 10th birthday
Golang taipei #45 10th birthday
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
 
Why you should care about Go (Golang)
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming language
 
Go Programming language, golang
Go Programming language, golangGo Programming language, golang
Go Programming language, golang
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?
 
Jfokus - Rocket Propelled Java
Jfokus - Rocket Propelled JavaJfokus - Rocket Propelled Java
Jfokus - Rocket Propelled Java
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Java
 
Go language presentation
Go language presentationGo language presentation
Go language presentation
 
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) Language
 
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
 
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
 
Flutter - Pixel by Pixel
Flutter - Pixel by PixelFlutter - Pixel by Pixel
Flutter - Pixel by Pixel
 

Similar a Zope is dead - Long live Zope

Introduction to Idem for Microsoft Azure
Introduction to Idem for Microsoft AzureIntroduction to Idem for Microsoft Azure
Introduction to Idem for Microsoft AzureNicholas Hughes
 
Everything You Were Taught About Java Is Wrong
Everything You Were Taught About Java Is WrongEverything You Were Taught About Java Is Wrong
Everything You Were Taught About Java Is WrongTim Boudreau
 
Launchpad: Lessons Learnt
Launchpad: Lessons LearntLaunchpad: Lessons Learnt
Launchpad: Lessons LearntTim Penhey
 
"ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca...
"ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca..."ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca...
"ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca...Blend Interactive
 
IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015Ryan Alcock
 
AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingSamuel Lampa
 
Prototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporePrototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporeDhruv Gohil
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Jérôme Petazzoni
 
Devopsdays se-2011
Devopsdays se-2011Devopsdays se-2011
Devopsdays se-2011lusis
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftwArne Jørgensen
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadaysloadays
 
Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Alexander Knowles
 
Python in Industry
Python in IndustryPython in Industry
Python in IndustryDharmit Shah
 
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
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...Vincenzo Barone
 
Collaborative data science and how to build a data science toolchain around n...
Collaborative data science and how to build a data science toolchain around n...Collaborative data science and how to build a data science toolchain around n...
Collaborative data science and how to build a data science toolchain around n...Moon Soo Lee
 

Similar a Zope is dead - Long live Zope (20)

Introduction to Idem for Microsoft Azure
Introduction to Idem for Microsoft AzureIntroduction to Idem for Microsoft Azure
Introduction to Idem for Microsoft Azure
 
Everything You Were Taught About Java Is Wrong
Everything You Were Taught About Java Is WrongEverything You Were Taught About Java Is Wrong
Everything You Were Taught About Java Is Wrong
 
Launchpad: Lessons Learnt
Launchpad: Lessons LearntLaunchpad: Lessons Learnt
Launchpad: Lessons Learnt
 
"ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca...
"ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca..."ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca...
"ORMs – Entity Framework and NHibernate" - Bob Davidson, South Dakota Code Ca...
 
Ploneide
PloneidePloneide
Ploneide
 
IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015
 
Git sourcecontrolpreso
Git sourcecontrolpresoGit sourcecontrolpreso
Git sourcecontrolpreso
 
Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
 
AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based Programming
 
Prototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at SingaporePrototype4Production Presented at FOSSASIA2015 at Singapore
Prototype4Production Presented at FOSSASIA2015 at Singapore
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Devopsdays se-2011
Devopsdays se-2011Devopsdays se-2011
Devopsdays se-2011
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftw
 
Puppet managed loadays
Puppet managed loadaysPuppet managed loadays
Puppet managed loadays
 
Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10
 
Python in Industry
Python in IndustryPython in Industry
Python in Industry
 
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...
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
 
Collaborative data science and how to build a data science toolchain around n...
Collaborative data science and how to build a data science toolchain around n...Collaborative data science and how to build a data science toolchain around n...
Collaborative data science and how to build a data science toolchain around n...
 
Sensible scaling
Sensible scalingSensible scaling
Sensible scaling
 

Más de Lennart Regebro

How not to develop with Plone
How not to develop with PloneHow not to develop with Plone
How not to develop with PloneLennart Regebro
 
Python 3 Compatibility (PyCon 2009)
Python 3 Compatibility (PyCon 2009)Python 3 Compatibility (PyCon 2009)
Python 3 Compatibility (PyCon 2009)Lennart Regebro
 
Transmogrifier: Migrating to Plone with less pain
Transmogrifier: Migrating to Plone with less painTransmogrifier: Migrating to Plone with less pain
Transmogrifier: Migrating to Plone with less painLennart Regebro
 
What Zope Did Wrong (PyCon 2008)
What Zope Did Wrong (PyCon 2008)What Zope Did Wrong (PyCon 2008)
What Zope Did Wrong (PyCon 2008)Lennart Regebro
 

Más de Lennart Regebro (6)

Porting to Python 3
Porting to Python 3Porting to Python 3
Porting to Python 3
 
How not to develop with Plone
How not to develop with PloneHow not to develop with Plone
How not to develop with Plone
 
Porting to Python 3
Porting to Python 3Porting to Python 3
Porting to Python 3
 
Python 3 Compatibility (PyCon 2009)
Python 3 Compatibility (PyCon 2009)Python 3 Compatibility (PyCon 2009)
Python 3 Compatibility (PyCon 2009)
 
Transmogrifier: Migrating to Plone with less pain
Transmogrifier: Migrating to Plone with less painTransmogrifier: Migrating to Plone with less pain
Transmogrifier: Migrating to Plone with less pain
 
What Zope Did Wrong (PyCon 2008)
What Zope Did Wrong (PyCon 2008)What Zope Did Wrong (PyCon 2008)
What Zope Did Wrong (PyCon 2008)
 

Último

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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 Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
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
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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 Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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 ...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 

Zope is dead - Long live Zope

  • 1. Zope is Dead, Long Live Zope! Lennart Regebro Krakow, June 2011
  • 2. “Zope Is Python's Killer App” Jon Udell – BYTE, February 2000
  • 5. A brief history of Zope
  • 6. Year: 1996 ● Duke Nukem 3D ● Altavista ● Web development is CGI and Perl ● Maybe php, if you are lucky ● Spice Girls ● Presentations had bullet lists
  • 7. Location: An airplane ● Jim Fulton creates Bobo ● Object publishing ● Traversal ● Open Source
  • 8. Year: 1997 (maybe) ● BoboPOS: A persistent object storage ● DTML: Innovative HTML templating ● Principia: A web framework ● Uses Bobo and BoboPOS and DTML
  • 9. Year: 1998 Principia becomes open source and is renamed Zope
  • 10. Year: 2001 The warts of Zope starts being a problem A rewrite is started
  • 11. Year: 2004 The rewrite is released as Zope 3
  • 12. Year: 2009 Zope 3 is renamed BlueBream
  • 14. Zope?
  • 15. Zope!
  • 16. Object Publishing ● You use the URL it to find an object ● The object is then asked to render itself ● No stdout is used ● No loading of the whole program every request ● Your application is not a collection of separate scripts on the disk
  • 17. Traversal ● Example path: /calendar/2011/06/17/google ● / returns a root object ● You ask the root object for the 'calendar' subobject ● You ask calendar for the '2011' object ● Etc until you reach the 'google' object ● Which you ask to render itself ● No more /calendar.php?item=84735
  • 18. Many other nice things ● Fine grained access control ● User management ● Internationalization ● Reusable extension products ● Zope Page Templates ● Through-the-web Development
  • 19. Digression: Database Fashions ● 1990's: Object-Oriented Databases ● Early 2000's: In-memory databases ● Mid 2000's: Transparent persistence ● Now: Schemaless / NoSQL databases and sharding
  • 20. ZODB ● ZODB is an object-oriented, ● In-memory transactional, ● Transparently persistent, ● Schemaless database. ● It's hierarchical and logging as well.
  • 22. Through-the-web Development ● Code in the database ● No version control ● Restricted Python for security reasons ● You can't use normal development tools
  • 23. Development dead-ends ● The TTW development was not OOP ● You end up with a pile of scripts ● Solution: ZClasses ● Actually was even worse ● Required re-write ● Disk-based products ● The right solution ● But: Required rewrite. Again.
  • 24. The Zope Ghetto ● Zope had to invent everything ● Later others reinvented it ● Zope ended up with its own solution
  • 26. Magic attributes and methods ● __bobo_traverse__() ● Special traverse logic ● __before_publishing_traverse__() ● Also special traverse logic ● __call__() ● Is what renders the object. ● Unless is has an index_html attribute – Unless there is a default view component ● Unless there is a __browser_default__()
  • 27. Acquisition ● Like inheritance but completely different ● All objects “acquire” the attributes of objects above them in the object hierarchy ● The complete opposite of namespaces
  • 29. Bad karma ● Bad documentation ● No ability to hype ● Ugly web page
  • 30. Bad learning curve Just gets worse Starts easy
  • 32. Fixed all the problems ● Not TTW ● An awesome aspect-inspirect component architecture! ● Everything pluggable ● Acquisition only when you ask for it ● Super-mega-enterprisey!
  • 34. But... ● Not backwards compatible ● Death by abstraction: ● Everything is an adapter or a utility ● All files called the same: ● configure.zcml, interfaces.py, browser.py, adapters.py, configure.zcml again. ● “A conspiracy on the hard-disk” – Jörgen Modin ● Still installed as a monolith ● Confusing name
  • 35. Five Zope 3's awesome component architecture But in Zope 2
  • 37. The King is Dead?
  • 39. Plone ● Fantastic Content Management System ● Loads of users ● Great community ● Best conferences
  • 40.
  • 41. Buildout! ● Deployment tool ● For development and production ● Extensible with recipes ● Even used by prominent Django-people!
  • 42. Repoze ● A re-imagining of the Zope publisher ● A WSGI pipeline of middleware ● Transactions ● Security ● Indexing ● Quickly picked up by Pylons/TG crowd
  • 43.
  • 45. Pyramid ● Routing or Traversal ● Persistance agnostic (can even use ZODB) ● Fast and extensible ● Best T-shirt of Pycon 2011
  • 46.
  • 47. Deliverance / Diazo ● A whole new way to theme sites ● Rules to map items from content to theme ● Skin sites in hours ● Make several apps look the same
  • 48.
  • 49.
  • 51. Cool Zope Things ● Object publishing ● ZODB ● Zope Component Architecture ● Buildout ● Repoze ● Pyramid ● Deliverance / Diazo
  • 52.