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

3,938

Published on

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

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,938
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

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

×