Your SlideShare is downloading. ×
Zope is dead - Long live Zope
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Zope is dead - Long live Zope


Published on

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

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

Published in: Technology

1 Comment
No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Zope is Dead,Long Live Zope! Lennart Regebro Krakow, June 2011
  • 2. “Zope Is Pythons Killer App” Jon Udell – BYTE, February 2000
  • 3. Pop Quiz!
  • 4. Google trends: “Zope”
  • 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: 1998Principia becomes open source and is renamed Zope
  • 10. Year: 2001The warts of Zope starts being a problem A rewrite is started
  • 11. Year: 2004The rewrite is released as Zope 3
  • 12. Year: 2009Zope 3 is renamed BlueBream
  • 13. Year: 2011
  • 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● 1990s: Object-Oriented Databases● Early 2000s: In-memory databases● Mid 2000s: Transparent persistence● Now: Schemaless / NoSQL databases and sharding
  • 20. ZODB● ZODB is an object-oriented,● In-memory transactional,● Transparently persistent,● Schemaless database.● Its hierarchical and logging as well.
  • 21. The facepalms of Zope
  • 22. Through-the-web Development● Code in the database● No version control● Restricted Python for security reasons● You cant 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
  • 25. Monolithic
  • 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
  • 28. Backwards compatibility forever
  • 29. Bad karma● Bad documentation● No ability to hype● Ugly web page
  • 30. Bad learning curve Just gets worseStarts easy
  • 31. Zope 3!
  • 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. Nicer learning curve
  • 34. But...● Not backwards compatible● Death by abstraction: ● Everything is an adapter or a utility● All files called the same: ● configure.zcml,,,, configure.zcml again. ● “A conspiracy on the hard-disk” – Jörgen Modin● Still installed as a monolith● Confusing name
  • 35. FiveZope 3s awesome component architecture But in Zope 2
  • 36. Mmmmmyeah...
  • 37. The King is Dead?
  • 38. State of Zope 2011
  • 39. Plone● Fantastic Content Management System● Loads of users● Great community● Best conferences
  • 40. Buildout!● Deployment tool● For development and production● Extensible with recipes● Even used by prominent Django-people!
  • 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. Cooperation!Pylons ♥ BFG = True
  • 43. Pyramid● Routing or Traversal● Persistance agnostic (can even use ZODB)● Fast and extensible● Best T-shirt of Pycon 2011
  • 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. Hot or Not?✗ ✓
  • 46. Cool Zope Things● Object publishing● ZODB● Zope Component Architecture● Buildout● Repoze● Pyramid● Deliverance / Diazo
  • 47. Questions?