What Zope did wrong
   (and what to do instead)




  Lennart Regebro
   EuroPython 2007, Vilnius
Zope is zuper!
First!
Object oriented!
Python!
Open source!
Batteries included!
Secure!
Easy!
And many other exclamation marks!!!
What Zope2 did right
Used Python
ZODB
DTML/ZPT
Batteries included
Easy entry into development
Zope2: The dead-ends
The ZODB pile of scripts
ZClasses
Disk-based products
Never ends




Starts o easy
It's unpythonic!
Products instead of modules
Way to much magick!
Zope is the Application
   (not the library)‫‏‬
Maybe more?
Zope 3: Knight in shining armour!
Zope 3?
Zope 3!
To complicated
configure
  xmlns=quot;http://namespaces.zope.org/zopequot;
  xmlns:browser=quot;http://namespaces.zope.org/browserquot;
  ...
Phew...




Ugh..
.
Zope3: Death by abstraction
It's unpythonic!
XML
(So, not so unpythonic as people think)‫‏‬
In J2EE:

A mail service API

Implementation
neutral

Req: J2EE

Not web-only


 The JavaMail API!
In Zope 3:

A mail service API

Implementation
neutral

Req: components

Not web-only


 zope.app.mail
Zope 3: The long march
Development of Zope 2 slowed down
Documentation no longer updated
A general waiting for Godot
Backwards compatibility
Didn't happen
Forwards compatibility
Not Yet
Never ends




Starts o easy
Phew...




Ugh..
.
2 + 3 = Five
                       Argh!




Ugh..
.
Low entry treshold
         and

all the power of a big
     framework
        without
     dead ends?
GUI schema/form editor
Information Manager        TTW Layer
                                            GUI workflow edito...
Pythonic

    Use existing modules and APIs if possible
−


    The whole application framework is a library
−


Highly mo...
Too much freedom?
Start with a finished application!
How can we accomplish this?
Python
A setup framework
Zope Component Architecture
Zope 3 the libraries
Grok
Information Manager
                         GUI Tools
IT department



                        The CMS/ERP
Site developer...
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Upcoming SlideShare
Loading in...5
×

Lennart Regebro What Zope Did Wrong (And What To Do Instead)

2,745

Published on

An overview about the problems with Zope2 and Zope3 and how to fix them.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,745
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
63
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lennart Regebro What Zope Did Wrong (And What To Do Instead)

  1. 1. What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius
  2. 2. Zope is zuper!
  3. 3. First!
  4. 4. Object oriented!
  5. 5. Python!
  6. 6. Open source!
  7. 7. Batteries included!
  8. 8. Secure!
  9. 9. Easy!
  10. 10. And many other exclamation marks!!!
  11. 11. What Zope2 did right
  12. 12. Used Python
  13. 13. ZODB
  14. 14. DTML/ZPT
  15. 15. Batteries included
  16. 16. Easy entry into development
  17. 17. Zope2: The dead-ends
  18. 18. The ZODB pile of scripts
  19. 19. ZClasses
  20. 20. Disk-based products
  21. 21. Never ends Starts o easy
  22. 22. It's unpythonic!
  23. 23. Products instead of modules
  24. 24. Way to much magick!
  25. 25. Zope is the Application (not the library)‫‏‬
  26. 26. Maybe more?
  27. 27. Zope 3: Knight in shining armour!
  28. 28. Zope 3?
  29. 29. Zope 3!
  30. 30. To complicated
  31. 31. configure xmlns=quot;http://namespaces.zope.org/zopequot; xmlns:browser=quot;http://namespaces.zope.org/browserquot; xmlns:hello=quot;http://namespaces.zope.org/helloquot; content class=quot;.hello.Helloquot; require permission=quot;zope.Publicquot; interface=quot;.interfaces.IHelloquot; set_schema=quot;.interfaces.IHelloquot; / /content browser:defaultView for=quot;.interfaces.IHelloquot; name=quot;edit.htmlquot; / browser:addMenuItem class=quot;.hello.Helloquot; title=quot;Add Helloquot; permission=quot;zope.Publicquot; for=quot;*quot; /
  32. 32. Phew... Ugh.. .
  33. 33. Zope3: Death by abstraction
  34. 34. It's unpythonic!
  35. 35. XML
  36. 36. (So, not so unpythonic as people think)‫‏‬
  37. 37. In J2EE: A mail service API Implementation neutral Req: J2EE Not web-only The JavaMail API!
  38. 38. In Zope 3: A mail service API Implementation neutral Req: components Not web-only zope.app.mail
  39. 39. Zope 3: The long march
  40. 40. Development of Zope 2 slowed down
  41. 41. Documentation no longer updated
  42. 42. A general waiting for Godot
  43. 43. Backwards compatibility
  44. 44. Didn't happen
  45. 45. Forwards compatibility
  46. 46. Not Yet
  47. 47. Never ends Starts o easy
  48. 48. Phew... Ugh.. .
  49. 49. 2 + 3 = Five Argh! Ugh.. .
  50. 50. Low entry treshold and all the power of a big framework without dead ends?
  51. 51. GUI schema/form editor Information Manager TTW Layer GUI workflow editor IT department A CMS, ERP or similar Site Layer Site developer A Web application server Application Layer Application developer Application Layer API Language Component Architecture Core Layer Core developer Loads of components
  52. 52. 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 −
  53. 53. Too much freedom?
  54. 54. Start with a finished application!
  55. 55. How can we accomplish this?
  56. 56. Python
  57. 57. A setup framework
  58. 58. Zope Component Architecture
  59. 59. Zope 3 the libraries
  60. 60. Grok
  61. 61. Information Manager GUI Tools IT department The CMS/ERP Site developer Application developer Grok Component Core developer Architecture
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×