66
What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

What Zope did wrong (and what to do instead)

Lennart RegebroEuroPython 2007, Vilnius

Page 2: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope is zuper!

Page 3: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

First!

Page 4: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Object oriented!

Page 5: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Python!

Page 6: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Open source!

Page 7: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Batteries included!

Page 8: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Secure!

Page 9: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Easy!

Page 10: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

And many other exclamation marks!!!

Page 11: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

What Zope2 did right

Page 12: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Used Python

Page 13: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

ZODB

Page 14: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

DTML/ZPT

Page 15: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Batteries included

Page 16: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Easy entry into development

Page 17: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope2: The dead-ends

Page 18: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

The ZODB pile of scripts

Page 19: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

ZClasses

Page 20: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Disk-based products

Page 21: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Never ends

Starts off easy

Page 22: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius
Page 23: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

It's unpythonic!

Page 24: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Products instead of modules

Page 25: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Way to much magick!

Page 26: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope is the Application (not the library)‏

Page 27: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Maybe more?

Page 28: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope 3: Knight in shining armour!

Page 29: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius
Page 30: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope 3?

Page 31: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope 3!

Page 32: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

To complicated

Page 33: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

<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: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Ugh...

Phew...

Page 35: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope3: Death by abstraction

Page 36: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius
Page 37: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

It's unpythonic!

Page 38: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

XML

Page 39: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

(So, not so unpythonic as people think)‏

Page 40: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

� A mail service API

� Implementation neutral

� Req: J2EE

� Not web-only

In J2EE:

The JavaMail API!

Page 41: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

� A mail service API

� Implementation neutral

� Req: components

� Not web-only

In Zope 3:

zope.app.mail

Page 42: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope 3: The long march

Page 43: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Development of Zope 2 slowed down

Page 44: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Documentation no longer updated

Page 45: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

A general waiting for Godot

Page 46: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Backwards compatibility

Page 47: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Didn't happen

Page 48: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Forwards compatibility

Page 49: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Not Yet

Page 50: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Never ends

Starts off easy

Page 51: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Ugh...

Phew...

Page 52: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

2 + 3 = Five

Ugh...

Argh!

Page 53: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Low entry tresholdand

all the power of a big framework

without

dead ends?

Page 54: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius
Page 55: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius
Page 56: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

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: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

� 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: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Too much freedom?

Page 59: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Start with a finished application!

Page 60: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

How can we accomplish this?

Page 61: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Python

Page 62: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

A setup framework

Page 63: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope Component Architecture

Page 64: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Zope 3 the libraries

Page 65: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

Grok

Page 66: What Zope did wrong - regebro.files.wordpress.com · What Zope did wrong (and what to do instead) Lennart Regebro EuroPython 2007, Vilnius

GUI Tools

The CMS/ERP

Grok

Information ManagerIT department

Site developer

Application developer

Core developer ComponentArchitecture