lennart regebro what zope did wrong (and what to do instead)
Post on 14-Sep-2014
4.296 views
DESCRIPTION
An overview about the problems with Zope2 and Zope3 and how to fix them.TRANSCRIPT
![Page 1: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/1.jpg)
What Zope did wrong (and what to do instead)
Lennart RegebroEuroPython 2007, Vilnius
![Page 2: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/2.jpg)
Zope is zuper!
![Page 3: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/3.jpg)
First!
![Page 4: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/4.jpg)
Object oriented!
![Page 5: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/5.jpg)
Python!
![Page 6: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/6.jpg)
Open source!
![Page 7: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/7.jpg)
Batteries included!
![Page 8: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/8.jpg)
Secure!
![Page 9: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/9.jpg)
Easy!
![Page 10: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/10.jpg)
And many other exclamation marks!!!
![Page 11: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/11.jpg)
What Zope2 did right
![Page 12: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/12.jpg)
Used Python
![Page 13: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/13.jpg)
ZODB
![Page 14: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/14.jpg)
DTML/ZPT
![Page 15: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/15.jpg)
Batteries included
![Page 16: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/16.jpg)
Easy entry into development
![Page 17: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/17.jpg)
Zope2: The dead-ends
![Page 18: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/18.jpg)
The ZODB pile of scripts
![Page 19: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/19.jpg)
ZClasses
![Page 20: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/20.jpg)
Disk-based products
![Page 21: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/21.jpg)
Never ends
Starts off easy
![Page 22: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/22.jpg)
![Page 23: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/23.jpg)
It's unpythonic!
![Page 24: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/24.jpg)
Products instead of modules
![Page 25: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/25.jpg)
Way to much magick!
![Page 26: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/26.jpg)
Zope is the Application (not the library)
![Page 27: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/27.jpg)
Maybe more?
![Page 28: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/28.jpg)
Zope 3: Knight in shining armour!
![Page 29: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/29.jpg)
![Page 30: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/30.jpg)
Zope 3?
![Page 31: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/31.jpg)
Zope 3!
![Page 32: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/32.jpg)
To complicated
![Page 33: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/33.jpg)
<configure xmlns="http://namespaces.zope.org/zope" xmlns:browser="http://namespaces.zope.org/browser" xmlns:hello="http://namespaces.zope.org/hello"> <content class=".hello.Hello"> <require permission="zope.Public" interface=".interfaces.IHello" set_schema=".interfaces.IHello" /> </content> <browser:defaultView for=".interfaces.IHello" name="edit.html" />
<browser:addMenuItem class=".hello.Hello" title="Add Hello" permission="zope.Public" for="*" />
</configure>
![Page 34: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/34.jpg)
Ugh...
Phew...
![Page 35: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/35.jpg)
Zope3: Death by abstraction
![Page 36: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/36.jpg)
![Page 37: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/37.jpg)
It's unpythonic!
![Page 38: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/38.jpg)
XML
![Page 39: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/39.jpg)
(So, not so unpythonic as people think)
![Page 40: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/40.jpg)
� A mail service API
� Implementation neutral
� Req: J2EE
� Not web-only
In J2EE:
The JavaMail API!
![Page 41: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/41.jpg)
� A mail service API
� Implementation neutral
� Req: components
� Not web-only
In Zope 3:
zope.app.mail
![Page 42: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/42.jpg)
Zope 3: The long march
![Page 43: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/43.jpg)
Development of Zope 2 slowed down
![Page 44: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/44.jpg)
Documentation no longer updated
![Page 45: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/45.jpg)
A general waiting for Godot
![Page 46: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/46.jpg)
Backwards compatibility
![Page 47: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/47.jpg)
Didn't happen
![Page 48: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/48.jpg)
Forwards compatibility
![Page 49: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/49.jpg)
Not Yet
![Page 50: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/50.jpg)
Never ends
Starts off easy
![Page 51: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/51.jpg)
Ugh...
Phew...
![Page 52: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/52.jpg)
2 + 3 = Five
Ugh...
Argh!
![Page 53: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/53.jpg)
Low entry tresholdand
all the power of a big framework
without
dead ends?
![Page 54: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/54.jpg)
![Page 55: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/55.jpg)
![Page 56: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/56.jpg)
TTW Layer GUI schema/form editorGUI workflow editor
A CMS, ERP or similarSite Layer
A Web application serverApplication Layer APIApplication Layer
Information ManagerIT department
Site developer
Application developer
Core developerLanguageComponent ArchitectureLoads of components
Core Layer
![Page 57: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/57.jpg)
� Pythonic− Use existing modules and APIs if possible− The whole application framework is a library
� Highly modular− Pick and choose from the modules
− Modify and replace internal components
![Page 58: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/58.jpg)
Too much freedom?
![Page 59: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/59.jpg)
Start with a finished application!
![Page 60: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/60.jpg)
How can we accomplish this?
![Page 61: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/61.jpg)
Python
![Page 62: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/62.jpg)
A setup framework
![Page 63: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/63.jpg)
Zope Component Architecture
![Page 64: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/64.jpg)
Zope 3 the libraries
![Page 65: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/65.jpg)
Grok
![Page 66: Lennart Regebro What Zope Did Wrong (And What To Do Instead)](https://reader035.vdocuments.us/reader035/viewer/2022081518/541597cd8d7f72316c8b4766/html5/thumbnails/66.jpg)
GUI Tools
The CMS/ERP
Grok
Information ManagerIT department
Site developer
Application developer
Core developer ComponentArchitecture