SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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!

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais 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
 

Mais 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...
 

Último

Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
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
 
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Sheetaleventcompany
 
Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...
Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...
Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...
lizamodels9
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
dollysharma2066
 
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
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
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
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
Abortion pills in Kuwait Cytotec pills in Kuwait
 

Último (20)

Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
Falcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investors
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
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
 
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 ...
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
 
Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...
Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...
Call Girls From Raj Nagar Extension Ghaziabad❤️8448577510 ⊹Best Escorts Servi...
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
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
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Marel Q1 2024 Investor Presentation from May 8, 2024
Marel Q1 2024 Investor Presentation from May 8, 2024Marel Q1 2024 Investor Presentation from May 8, 2024
Marel Q1 2024 Investor Presentation from May 8, 2024
 
Falcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business PotentialFalcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business Potential
 
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
 
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 

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”