SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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)
 

Dernier

Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
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
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
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
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
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
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 

Dernier (20)

Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
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
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
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
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
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
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 

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.