Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Zope is Dead,Long Live Zope!    Lennart Regebro    Krakow, June 2011
“Zope Is Pythons 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●...
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 framewo...
Year: 1998Principia becomes open source     and is renamed Zope
Year: 2001The warts of Zope starts being a problem          A rewrite is started
Year: 2004The rewrite is released as Zope 3
Year: 2009Zope 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 use...
Traversal●   Example path: /calendar/2011/06/17/google●   / returns a root object●   You ask the root object for the calen...
Many other nice things●   Fine grained access control●   User management●   Internationalization●   Reusable extension pro...
Digression: Database Fashions●   1990s: Object-Oriented Databases●   Early 2000s: In-memory databases●   Mid 2000s: Transp...
ZODB●   ZODB is an object-oriented,●   In-memory transactional,●   Transparently persistent,●   Schemaless database.●   It...
The facepalms of Zope
Through-the-web Development●   Code in the database●   No version control●   Restricted Python for security reasons●   You...
Development dead-ends●   The TTW development was not OOP    ●   You end up with a pile of scripts●   Solution: ZClasses   ...
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__()    ●...
Acquisition●   Like inheritance but completely different●   All objects “acquire” the attributes of objects    above them ...
Backwards compatibility forever
Bad karma●   Bad documentation●   No ability to hype●   Ugly web page
Bad learning curve                         Just gets worseStarts easy
Zope 3!
Fixed all the problems●   Not TTW●   An awesome aspect-inspirect component    architecture!●   Everything pluggable●   Acq...
Nicer learning curve
But...●   Not backwards compatible●   Death by abstraction:    ●   Everything is an adapter or a utility●   All files call...
FiveZope 3s 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...
Repoze●   A re-imagining of the Zope publisher●   A WSGI pipeline of middleware    ●   Transactions    ●   Security    ●  ...
Cooperation!Pylons ♥ BFG = True
Pyramid●   Routing or Traversal●   Persistance agnostic (can even use ZODB)●   Fast and extensible●   Best T-shirt of Pyco...
Deliverance / Diazo●   A whole new way to theme sites●   Rules to map items from content to theme●   Skin sites in hours● ...
Hot or Not?✗             ✓
Cool Zope Things●   Object publishing●   ZODB●   Zope Component Architecture●   Buildout●   Repoze●   Pyramid●   Deliveran...
Questions?regebro@gmail.com
Zope is dead - Long live Zope
Zope is dead - Long live Zope
Zope is dead - Long live Zope
Zope is dead - Long live Zope
Zope is dead - Long live Zope
Zope is dead - Long live Zope
Upcoming SlideShare
Loading in …5
×

Zope is dead - Long live Zope

4,959 views

Published on

The slides from a talk I did at Google Tech in Krakow in 2011

Published in: Technology

Zope is dead - Long live Zope

  1. 1. Zope is Dead,Long Live Zope! Lennart Regebro Krakow, June 2011
  2. 2. “Zope Is Pythons Killer App” Jon Udell – BYTE, February 2000
  3. 3. Pop Quiz!
  4. 4. Google trends: “Zope”
  5. 5. A brief history of Zope
  6. 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. 7. Location: An airplane● Jim Fulton creates Bobo ● Object publishing ● Traversal ● Open Source
  8. 8. Year: 1997 (maybe)● BoboPOS: A persistent object storage● DTML: Innovative HTML templating● Principia: A web framework ● Uses Bobo and BoboPOS and DTML
  9. 9. Year: 1998Principia becomes open source and is renamed Zope
  10. 10. Year: 2001The warts of Zope starts being a problem A rewrite is started
  11. 11. Year: 2004The rewrite is released as Zope 3
  12. 12. Year: 2009Zope 3 is renamed BlueBream
  13. 13. Year: 2011
  14. 14. Zope?
  15. 15. Zope!
  16. 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. 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. 18. Many other nice things● Fine grained access control● User management● Internationalization● Reusable extension products● Zope Page Templates● Through-the-web Development
  19. 19. Digression: Database Fashions● 1990s: Object-Oriented Databases● Early 2000s: In-memory databases● Mid 2000s: Transparent persistence● Now: Schemaless / NoSQL databases and sharding
  20. 20. ZODB● ZODB is an object-oriented,● In-memory transactional,● Transparently persistent,● Schemaless database.● Its hierarchical and logging as well.
  21. 21. The facepalms of Zope
  22. 22. Through-the-web Development● Code in the database● No version control● Restricted Python for security reasons● You cant use normal development tools
  23. 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. 24. The Zope Ghetto● Zope had to invent everything● Later others reinvented it● Zope ended up with its own solution
  25. 25. Monolithic
  26. 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. 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
  28. 28. Backwards compatibility forever
  29. 29. Bad karma● Bad documentation● No ability to hype● Ugly web page
  30. 30. Bad learning curve Just gets worseStarts easy
  31. 31. Zope 3!
  32. 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!
  33. 33. Nicer learning curve
  34. 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. 35. FiveZope 3s awesome component architecture But in Zope 2
  36. 36. Mmmmmyeah...
  37. 37. The King is Dead?
  38. 38. State of Zope 2011
  39. 39. Plone● Fantastic Content Management System● Loads of users● Great community● Best conferences
  40. 40. Buildout!● Deployment tool● For development and production● Extensible with recipes● Even used by prominent Django-people!
  41. 41. Repoze● A re-imagining of the Zope publisher● A WSGI pipeline of middleware ● Transactions ● Security ● Indexing● Quickly picked up by Pylons/TG crowd
  42. 42. Cooperation!Pylons ♥ BFG = True
  43. 43. Pyramid● Routing or Traversal● Persistance agnostic (can even use ZODB)● Fast and extensible● Best T-shirt of Pycon 2011
  44. 44. 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
  45. 45. Hot or Not?✗ ✓
  46. 46. Cool Zope Things● Object publishing● ZODB● Zope Component Architecture● Buildout● Repoze● Pyramid● Deliverance / Diazo
  47. 47. Questions?regebro@gmail.com

×