SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
plone age
mammoths, sabers, cavemen
 can't they just get along?
“HOW TO USE THE
   PLONE?”
          PloneUser153
“Can I use Plone with
 my €5/mo. hosting
     provider?”
              PloneUser318
“Firms are drowning in
 work! What a great
  problem to have!”
                Alan Runyan
“Those who do not study
Zope, are condemned to
      reinvent it.”
                 Phillip Eby
“Zope 3 drives me back to smoking”

“I think Pylons may be the sleeper hit
     out of all of the Python ‘web
             frameworks’.”

                               Jeff Shell
First page that contains stuff that
actually looks like Python (...):

  TurboGears tutorial: around page 4
  Django introduction: around page 5
  The Zope Book: around page 235
                             Fredrik Lundh
“Every time I see this
code I have to relearn
          it.”
                 Jim Fulton
the problems that are
 causing these quotes
No obvious choice for
product development

• TTW?
• Archetypes?
• Zope 3 / Five?
TTW
• doesn’t resemble the Python you learn in
  books, tutorials, classes
• hard to move from TTW to filesystem code
     Z-shaped learning curve
• can’t use established tools (IDE, svn, etc.)
• encourages one sandbox instead of many
• trusted code is hard to security-audit
Archetypes
• probably the best choice right now
• tries to do too much at once, therefore
 • slow
 • hard to extend
 • pickles are bigger than they should be
    (hence Plone’s irrational fear of waking up
    objects)
Zope 3


• ZCML sucks
• very little agility
Zope and Plone don’t
 play well with others

• want to own the application / process
• unnatural for a web framework
• dictates deployment as separate app
• “everything or nothing at all” attitude
Zope and Plone don’t
        share
• we have pretty good technology
• we don’t bother making it available to others
 • huge interdependencies
 • wrong place in the stack
 • missing docs (doctests ≠ documentation!)
• others have reinvented some of our stuff as
  a result
a look over the fence:
what others got right
Lesson learned from
          RoR
• filesystem development can be agile and
  easy, no need for TTW
• conventions can help with agility
• Grok brings this to Zope 3
• Example: TodoList application
                                      (demo)
WSGI

• Web Server Gateway Interface
• PEP 333
• like CGI, but for Python
• describes how web server and web app
  communicate
widely supported
• web servers (list not complete)
 • zope.server, twisted.web2, CherryPy, ...
 • Apache (mod_python or modwsgi)
• web frameworks
 • Pylons, Django, TurboGears, web.py
 • Zope 3 (zope.publisher, zope.app.wsgi)
advantages

• web frameworks don’t own the application /
  process space
• deploy on any Python webserver (incl.
  Apache)
• share common low-level components in
  middlewares
Paste
• set of useful middlewares
 • interactive debugging
 • logging
 • URL rewriting
 • ...
• hook them up using a configuration file
  (PasteDeploy)
ex: debug.ini from
        zopeproject
[server:main]
use = egg:Paste#http
host = 127.0.0.1
port = 8080

[filter-app:main]
use = egg:z3c.evalexception#ajax
next = zope

[app:zope]
use = egg:HelloWorld

                                   (demo)
The “push” model
• templates don’t reach into content space
• they’re fed by controllers (“view class” in
  Zope)
• templates remain very very dumb
• templates easier to customize, exchange,
  extend and test with dummy data
• view logic easier to test separately
ex: push with ZPT
class ViewDocument(BrowserPage):

   def update(self):
       tool = getToolByName(self.context, quot;portal_actionsquot;)
       self.actions = tool.listFilteredActionsFor(self.context)
       self.title = self.context.title
       self.body = self.context.body
       self.here_url = self.request['URL']

   template = ViewPageTemplateFile('document_view.pt')

   def __call__(self):
       self.update()
       return self.template()
ex: push with Genshi
class ViewDocument(BrowserPage):

    def update(self):
        tool = getToolByName(self.context, quot;portal_actionsquot;)
        self.actions = tool.listFilteredActionsFor(self.context)
        self.title = self.context.title
        self.body = self.context.body
        self.here_url = self.request['URL']

   def __call__(self):
       self.update()
       template = template_loader.load('document_view.html')
       stream = template.generate(view=self)
       return stream.render('html', doctype='html')
what we should do
 (if you asked me)
Ditch Zope 2 attitudes

• owning the process / application
• building island solutions with heavy
  interdependencies and little documentation
• wanting to serve the “scripter” with smart
  templates and TTW development
Make choices

• encourage exactly one way of developing
• filesystem
• Zope 3’s component architecture
• support conventions over configuration
• use Grok’s mechanism
Support WSGI
• play well with others
 • enable more flexible deployment
 • share functionality with other platforms
• make the Zope/Plone beast less mysterious
  to Python people
• repoze.zope2 and repoze.plone do this now
                                    (demo)
Long term: Use key
   Zope 3 frameworks
• ditch Acquisiton in favour of __parent__
• zope.publisher configured so that it behaves
  like ZPublisher w/o the cruft
  • five.publication                   (demo)
• zope.security configured so that it behaves
  like AccessControl
• this is “Plone on Zope 3”
questions?
grazie!

Contenu connexe

Tendances

Frequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last timeFrequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last time
Andreas Jung
 
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffersHow%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
tutorialsruby
 

Tendances (20)

BPMS1
BPMS1BPMS1
BPMS1
 
Plone for python programmers
Plone for python programmersPlone for python programmers
Plone for python programmers
 
Frequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last timeFrequently asked questions answered frequently - but now for the last time
Frequently asked questions answered frequently - but now for the last time
 
Ungooglable
UngooglableUngooglable
Ungooglable
 
Unloading Plone
Unloading PloneUnloading Plone
Unloading Plone
 
hw1a
hw1ahw1a
hw1a
 
WebPagetest - Good, Bad & Ugly
WebPagetest - Good, Bad & UglyWebPagetest - Good, Bad & Ugly
WebPagetest - Good, Bad & Ugly
 
TTW FTW: Plone as the new wordpress
TTW FTW: Plone as the new wordpressTTW FTW: Plone as the new wordpress
TTW FTW: Plone as the new wordpress
 
YouDrup_in_Drupal
YouDrup_in_DrupalYouDrup_in_Drupal
YouDrup_in_Drupal
 
backend
backendbackend
backend
 
Chocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieChocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pie
 
Managing windows with Puppet and Chocolatey
Managing windows with Puppet and ChocolateyManaging windows with Puppet and Chocolatey
Managing windows with Puppet and Chocolatey
 
A web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentationA web perf dashboard up & running in 90 minutes presentation
A web perf dashboard up & running in 90 minutes presentation
 
Deliverance: Plone theming without the learning curve from Plone Symposium Ea...
Deliverance: Plone theming without the learning curve from Plone Symposium Ea...Deliverance: Plone theming without the learning curve from Plone Symposium Ea...
Deliverance: Plone theming without the learning curve from Plone Symposium Ea...
 
Creating a full stack web app with python, npm, webpack and react
Creating a full stack web app with python, npm, webpack and reactCreating a full stack web app with python, npm, webpack and react
Creating a full stack web app with python, npm, webpack and react
 
Docker Demo @ IuK Seminar
Docker Demo @ IuK SeminarDocker Demo @ IuK Seminar
Docker Demo @ IuK Seminar
 
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffersHow%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
 
Puppet Camp Berlin 2014 Closing Keynote: Next steps for doing more awesome th...
Puppet Camp Berlin 2014 Closing Keynote: Next steps for doing more awesome th...Puppet Camp Berlin 2014 Closing Keynote: Next steps for doing more awesome th...
Puppet Camp Berlin 2014 Closing Keynote: Next steps for doing more awesome th...
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalyst
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
 

Similaire à Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant They Just Get Along

Future proofing design work with Web components
Future proofing design work with Web componentsFuture proofing design work with Web components
Future proofing design work with Web components
btopro
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2
ice799
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
Docker, Inc.
 
Troubleshooting Plone
Troubleshooting PloneTroubleshooting Plone
Troubleshooting Plone
Ricado Alves
 

Similaire à Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant They Just Get Along (20)

Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
How to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringHow to get started with Site Reliability Engineering
How to get started with Site Reliability Engineering
 
Future proofing design work with Web components
Future proofing design work with Web componentsFuture proofing design work with Web components
Future proofing design work with Web components
 
Spaghetti gate
Spaghetti gateSpaghetti gate
Spaghetti gate
 
Faster! Faster! Accelerate your business with blazing prototypes
Faster! Faster! Accelerate your business with blazing prototypesFaster! Faster! Accelerate your business with blazing prototypes
Faster! Faster! Accelerate your business with blazing prototypes
 
5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)
 
Operationalizing Clojure Confidently
Operationalizing Clojure ConfidentlyOperationalizing Clojure Confidently
Operationalizing Clojure Confidently
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2
 
Repoze Bfg - presented by Rok Garbas at the Python Barcelona Meetup October 2...
Repoze Bfg - presented by Rok Garbas at the Python Barcelona Meetup October 2...Repoze Bfg - presented by Rok Garbas at the Python Barcelona Meetup October 2...
Repoze Bfg - presented by Rok Garbas at the Python Barcelona Meetup October 2...
 
All of Javascript
All of JavascriptAll of Javascript
All of Javascript
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
 
More Productivitiy with Spring Roo
More Productivitiy with Spring RooMore Productivitiy with Spring Roo
More Productivitiy with Spring Roo
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
Semantic web, python, construction industry
Semantic web, python, construction industrySemantic web, python, construction industry
Semantic web, python, construction industry
 
Troubleshooting Plone
Troubleshooting PloneTroubleshooting Plone
Troubleshooting Plone
 
Multiprocessing with python
Multiprocessing with pythonMultiprocessing with python
Multiprocessing with python
 
Design and Evolution of cyber-dojo
Design and Evolution of cyber-dojoDesign and Evolution of cyber-dojo
Design and Evolution of cyber-dojo
 
Infrastructure as code might be literally impossible
Infrastructure as code might be literally impossibleInfrastructure as code might be literally impossible
Infrastructure as code might be literally impossible
 

Plus de Vincenzo Barone

Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Vincenzo Barone
 
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Vincenzo Barone
 

Plus de Vincenzo Barone (20)

Sally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development PatternsSally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development Patterns
 
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 way
 
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)
 
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
Wichert Akkerman   Plone Deployment Practices   The Plone.Org SetupWichert Akkerman   Plone Deployment Practices   The Plone.Org Setup
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
 
Philipp Von Weitershausen Untested Code Is Broken Code
Philipp Von Weitershausen   Untested Code Is Broken CodePhilipp Von Weitershausen   Untested Code Is Broken Code
Philipp Von Weitershausen Untested Code Is Broken Code
 
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
 
Rocky Burt Subtyping Unleashed
Rocky Burt   Subtyping UnleashedRocky Burt   Subtyping Unleashed
Rocky Burt Subtyping Unleashed
 
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
 
Wageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyWageindicator Foundation: a Case Study
Wageindicator Foundation: a Case Study
 
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentTom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
 
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
 
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
 
Wichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureWichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org Infrastructure
 
Denis Mishunov Making Plone Theme 10 Most Wanted Tips
Denis Mishunov   Making Plone Theme   10 Most Wanted Tips Denis Mishunov   Making Plone Theme   10 Most Wanted Tips
Denis Mishunov Making Plone Theme 10 Most Wanted Tips
 
Duncan Booth Kupu, Past Present And Future
Duncan Booth   Kupu, Past Present And FutureDuncan Booth   Kupu, Past Present And Future
Duncan Booth Kupu, Past Present And Future
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your Will
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Jared Whitlock   Open Source In The Enterprise    Plone @ NovellJared Whitlock   Open Source In The Enterprise    Plone @ Novell
Jared Whitlock Open Source In The Enterprise Plone @ Novell
 
Paul Everitt Community And Foundation Plones Past, Present, Future
Paul Everitt   Community And Foundation   Plones Past, Present, Future Paul Everitt   Community And Foundation   Plones Past, Present, Future
Paul Everitt Community And Foundation Plones Past, Present, Future
 
Thomas Moroz Open Source And The Open Society Using Plone To Build Commun...
Thomas Moroz   Open Source And The Open Society   Using Plone To Build Commun...Thomas Moroz   Open Source And The Open Society   Using Plone To Build Commun...
Thomas Moroz Open Source And The Open Society Using Plone To Build Commun...
 

Dernier

Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
dlhescort
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
amitlee9823
 
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
amitlee9823
 
Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876
Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876
Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876
dlhescort
 
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai KuwaitThe Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
daisycvs
 
Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...
Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...
Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...
lizamodels9
 
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Anamikakaur10
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
allensay1
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
dollysharma2066
 

Dernier (20)

Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
 
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
 
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
 
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort ServiceMalegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
Malegaon Call Girls Service ☎ ️82500–77686 ☎️ Enjoy 24/7 Escort Service
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptx
 
Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876
Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876
Call Girls in Delhi, Escort Service Available 24x7 in Delhi 959961-/-3876
 
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai KuwaitThe Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
 
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60% in 6 Months
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60%  in 6 MonthsSEO Case Study: How I Increased SEO Traffic & Ranking by 50-60%  in 6 Months
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60% in 6 Months
 
Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...
Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...
Russian Call Girls In Rajiv Chowk Gurgaon ❤️8448577510 ⊹Best Escorts Service ...
 
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfDr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
Cheap Rate Call Girls In Noida Sector 62 Metro 959961乂3876
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
 
Whitefield CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
Whitefield CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLWhitefield CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
Whitefield CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
Falcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in indiaFalcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in india
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 

Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant They Just Get Along

  • 1. plone age mammoths, sabers, cavemen can't they just get along?
  • 2. “HOW TO USE THE PLONE?” PloneUser153
  • 3. “Can I use Plone with my €5/mo. hosting provider?” PloneUser318
  • 4. “Firms are drowning in work! What a great problem to have!” Alan Runyan
  • 5. “Those who do not study Zope, are condemned to reinvent it.” Phillip Eby
  • 6. “Zope 3 drives me back to smoking” “I think Pylons may be the sleeper hit out of all of the Python ‘web frameworks’.” Jeff Shell
  • 7. First page that contains stuff that actually looks like Python (...): TurboGears tutorial: around page 4 Django introduction: around page 5 The Zope Book: around page 235 Fredrik Lundh
  • 8. “Every time I see this code I have to relearn it.” Jim Fulton
  • 9. the problems that are causing these quotes
  • 10. No obvious choice for product development • TTW? • Archetypes? • Zope 3 / Five?
  • 11. TTW • doesn’t resemble the Python you learn in books, tutorials, classes • hard to move from TTW to filesystem code Z-shaped learning curve • can’t use established tools (IDE, svn, etc.) • encourages one sandbox instead of many • trusted code is hard to security-audit
  • 12. Archetypes • probably the best choice right now • tries to do too much at once, therefore • slow • hard to extend • pickles are bigger than they should be (hence Plone’s irrational fear of waking up objects)
  • 13. Zope 3 • ZCML sucks • very little agility
  • 14. Zope and Plone don’t play well with others • want to own the application / process • unnatural for a web framework • dictates deployment as separate app • “everything or nothing at all” attitude
  • 15. Zope and Plone don’t share • we have pretty good technology • we don’t bother making it available to others • huge interdependencies • wrong place in the stack • missing docs (doctests ≠ documentation!) • others have reinvented some of our stuff as a result
  • 16. a look over the fence: what others got right
  • 17. Lesson learned from RoR • filesystem development can be agile and easy, no need for TTW • conventions can help with agility • Grok brings this to Zope 3 • Example: TodoList application (demo)
  • 18. WSGI • Web Server Gateway Interface • PEP 333 • like CGI, but for Python • describes how web server and web app communicate
  • 19. widely supported • web servers (list not complete) • zope.server, twisted.web2, CherryPy, ... • Apache (mod_python or modwsgi) • web frameworks • Pylons, Django, TurboGears, web.py • Zope 3 (zope.publisher, zope.app.wsgi)
  • 20. advantages • web frameworks don’t own the application / process space • deploy on any Python webserver (incl. Apache) • share common low-level components in middlewares
  • 21. Paste • set of useful middlewares • interactive debugging • logging • URL rewriting • ... • hook them up using a configuration file (PasteDeploy)
  • 22. ex: debug.ini from zopeproject [server:main] use = egg:Paste#http host = 127.0.0.1 port = 8080 [filter-app:main] use = egg:z3c.evalexception#ajax next = zope [app:zope] use = egg:HelloWorld (demo)
  • 23. The “push” model • templates don’t reach into content space • they’re fed by controllers (“view class” in Zope) • templates remain very very dumb • templates easier to customize, exchange, extend and test with dummy data • view logic easier to test separately
  • 24. ex: push with ZPT class ViewDocument(BrowserPage): def update(self): tool = getToolByName(self.context, quot;portal_actionsquot;) self.actions = tool.listFilteredActionsFor(self.context) self.title = self.context.title self.body = self.context.body self.here_url = self.request['URL'] template = ViewPageTemplateFile('document_view.pt') def __call__(self): self.update() return self.template()
  • 25. ex: push with Genshi class ViewDocument(BrowserPage): def update(self): tool = getToolByName(self.context, quot;portal_actionsquot;) self.actions = tool.listFilteredActionsFor(self.context) self.title = self.context.title self.body = self.context.body self.here_url = self.request['URL'] def __call__(self): self.update() template = template_loader.load('document_view.html') stream = template.generate(view=self) return stream.render('html', doctype='html')
  • 26. what we should do (if you asked me)
  • 27. Ditch Zope 2 attitudes • owning the process / application • building island solutions with heavy interdependencies and little documentation • wanting to serve the “scripter” with smart templates and TTW development
  • 28. Make choices • encourage exactly one way of developing • filesystem • Zope 3’s component architecture • support conventions over configuration • use Grok’s mechanism
  • 29. Support WSGI • play well with others • enable more flexible deployment • share functionality with other platforms • make the Zope/Plone beast less mysterious to Python people • repoze.zope2 and repoze.plone do this now (demo)
  • 30. Long term: Use key Zope 3 frameworks • ditch Acquisiton in favour of __parent__ • zope.publisher configured so that it behaves like ZPublisher w/o the cruft • five.publication (demo) • zope.security configured so that it behaves like AccessControl • this is “Plone on Zope 3”