when not to use plone: and why you might consider django or pyramid
DESCRIPTION
In the many years that we've been providing Plone consulting services, we've done some projects where Plone was clearly not the best choice of technology for the job, and we paid the price of making the wrong decision. In other projects, we've steered the customer to use one of the Python web application frameworks such as Django or Pyramid, and we and the customer have been pleased with the results.In this talk, Nate Aune explores scenarios when a full-featured CMS such as Plone is the right tool for the job, and when a more lightweight web framework is preferable.A link to audio of the presentation is here: http://2011ploneconference.sched.org/event/31d3dc2be7404f5515cd47050e144cb7TRANSCRIPT
![Page 1: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/1.jpg)
When not to use PloneAnd why you might consider Django or Pyramid
Nate Aune, JazkartaPlone Conference 2011
San Francisco
![Page 2: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/2.jpg)
Who is this guy?
• Plone developer since 2003
• Founded Jazkarta in 2004 (based in Boston)
• Carlos de la Guardia, Sally Kleinfeldt
• Oxfam America, UNICEF, Harvard, Rice, UMN Press, Bioneers, City of Albuquerque
• Sponsoring ZODB Bookhttp://zodbdocs.blogspot.com/
• Founded NodeRabbit in 2010
![Page 3: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/3.jpg)
I <3 Plone.
![Page 4: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/4.jpg)
Close your eyes(cue harp music)
![Page 5: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/5.jpg)
![Page 6: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/6.jpg)
![Page 7: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/7.jpg)
Kapil
Alan LimiMe
Stefan
Paul Everitt
JonahGogoGodefroid
Phil Auersperg
![Page 8: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/8.jpg)
![Page 9: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/9.jpg)
![Page 10: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/10.jpg)
Rachel Patty Greg Rachel DinDin Gabrielle
login contact
ready to share? register
Home Community Invite My Page Forum Events Groups Blogs About Us
featured Health Activists
members
latest activity
![Page 11: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/11.jpg)
Client requirements
• email newsletter
• video
• ad server
• user tracking
• single-signon
• personal dashboard
• support/helpdesk
• polls/surveys
• ratings
• tagging
• SEO
• custom workflow
• taxonomy
• integration with forum
![Page 12: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/12.jpg)
Risk #1Functionality proves to be too complex for implementation
within Plone in a given timeframe due to changing factors that require attention from the development team.
![Page 13: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/13.jpg)
Risk #2System Architecture fails to achieve desired
performance metrics, particularly in its ability to handle many concurrent authoring transactions.
![Page 14: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/14.jpg)
Risk #3The Plone software stack is in a slight state of fluidity at the
moment where the developers are determining the best areas to integrate the Zope 3 component architecture.
Because of this, APIs are changing a little more often than is normal which means there is a potential for any third-party
developed application to require additional changes.
![Page 15: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/15.jpg)
June 25-Sept. 3Two months to delivery!
![Page 16: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/16.jpg)
From Client: Also, it would be great if you can provide the following asap: 1) As many examples as possible of large Plone implementations with hard numbers attached such as # of users per month, concurrent # of users/second, page requests/second, average response time per page.
Preferably reference “brand names” sites that most people might know. This is extremely important for the acceptance of non-technical stakeholders as Plone is not well known (yet).
2) Scalability of database “write” operations. Strategies and techniques. This is important because we are going to have lots of content creators/reviewers ( thousands or even tens of thousands).
![Page 17: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/17.jpg)
Square peg in a round hole
![Page 18: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/18.jpg)
Additive vs. Subtractive
• You are building on top of what’s already there.
• You are taking things away and finding yourself fighting the framework.
![Page 19: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/19.jpg)
Content management features aren’t too hard to create in any of the new crops of Python web frameworks.
Writing a form, even auto-generating that form using some framework, accepting input from users, showing errors, managing users, etc: for any given project, satisfying these types of requirements tends to be pretty easy without Plone.
It’s often much harder to remove unnecessary features from Plone than it is to create the necessary ones from scratch.
-Chris McDonough
![Page 20: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/20.jpg)
![Page 21: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/21.jpg)
Product or Platform?
Do we always ensure that the needs of the product's users come ahead of the needs of the developers that want freedom to change anything/everything, take it in new directions, etc.?
-Paul EverittFeb. 2008
http://radio-weblogs.com/0116506/2008/02/05.html
![Page 22: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/22.jpg)
Marketed differently
It's really, really important to figure out if your product is a platform or not, because platforms need to be marketed in a very different way to be successful.
That's because a platform needs to appeal to developers first and foremost, not end users.
- Joel Spolsky
![Page 23: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/23.jpg)
Alienate developers
One of the biggest themes in software industry failures is a platform vendor that didn't understand that they were a platform vendor, so they alienated their key constituency: the developers.
- Joel Spolsky
![Page 24: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/24.jpg)
![Page 25: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/25.jpg)
Case study: KARL• KARL started as a Plone application with
FrankenPlone changes to its architecture.
• After fighting the framework, a switch was made to use the technologies of Zope combined with well-known packages from Python and WSGI.
• By removing most of the framework, KARL gained much faster performance, reliability, and simplicity.
![Page 26: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/26.jpg)
![Page 27: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/27.jpg)
A large part of the reason why I’ve enjoyed Zope3 so much, is that the impedence mismatch between application development is much less than with Plone.
-Kapil ThangaveluJuly 2008
http://blog.kapilt.com/2008/07/02/introducing-content-mirror/
![Page 28: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/28.jpg)
Plone is a product, and frankly thats a good thing for both the software and its users.
It’s however a bad thing when you’re building applications, there tends to be much more policy with products, that needs to be replaced or worked around when you’re building on them.
As a result, products tend to have two other downsides in application development: developer inefficiencies and computational inefficiencies.
![Page 29: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/29.jpg)
The Plone TaxStarting up and serving a page from Plone.
Over the course of a year its about a man month of work.
-Kapil
![Page 30: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/30.jpg)
Plone tarballPylons
![Page 31: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/31.jpg)
We could drop in a Pylons in a cubby hole
of a Plone tarball.-Kapil
![Page 32: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/32.jpg)
Z shaped learning curveA product is typically a much bigger software stack, and Plone has and utilizes many components, from zope2, zope3, cmf, archetypes providing foundations, in addition to a growing number of plone specific infrastructure.
-Kapil
![Page 33: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/33.jpg)
Python
Zope
CMF
Plone
Archetypes
Five/z3
![Page 34: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/34.jpg)
Product vs. Platform
• All-in-one product (CMS)
• Minimal customization
• Building a product or customized web application
• Don’t need all the bells & whistles provided by CMS
![Page 35: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/35.jpg)
![Page 36: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/36.jpg)
CHARACTER GROUP
CHARACTER
GLOSSARY TERM
CHARACTER VALUE
PILE INFO
PILE
PILE GROUP
IMAGE TYPE
CONTENT TYPE
CONTENT IMAGE
TAXON
TAXON GROUP
Go-Botany Database: Entity-Relationship DiagramLast updated 23 Jul 2010. Auto primary keys (id) not shown
Taxonomic Authority
EXHIBITS
DEPICTED BY
Literature Source
Value String
Value Min
Value Max
Value FloatPERTAINS TOEXPLAINED
BY
Term
Lay Definition
Question Text
Hint
Visible
Image (temp)
EXPLAINED BY
Short Name
Name
GATHERED IN
Name
BELONGS TO
PART OF
Simple Key
DEPICTED BY
Description
Friendly Name
Name
Name
Creator
Rank
Alt
Image
DESCRIBES
DESCRIBES
LISTS
RELATES
IS OF TYPE
IS OF TYPE
M
N
1
N
1
1
N
1
M
N
M
N
1
1
1
1
1
N
M
N
M
N
1
N
1
1
1
1N
MTaxon Group
Entry
Glossary Term for Pile
Character
Taxon Character Value
GROUPED BY
Scientific Name
![Page 37: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/37.jpg)
DjangoA web framework named after a jazz musician
can’t be all that bad, right?
![Page 38: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/38.jpg)
Why Django?• Batteries included (takes care of the hard
stuff - ORM, routing, templates)
• Core system is still lightweight (but not as lightweight as Zope 3 or Pyramid)
• Lots of 3rd party plugins
• Great documentation / developer mindshare
• Faster to learn (important because of NSF)
• Big sites using it: Mozilla, Eventbrite, Disqus
![Page 39: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/39.jpg)
![Page 40: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/40.jpg)
Recombinant innovationsPeople do not suddenly come up with new ideas. They piece them together from what they already know. People often fail to come up with a new understanding of what’s happening, new ways of dealing with problems, when they lack the wide-ranging set of ideas from which to piece together alternatives.
The trick is to develop in-depth knowledge within a given field but, at the same time, develop the willingness to take that knowledge apart and combine it in new ways.
-Andrew Hargadon, How Breakthroughs Happen
![Page 41: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/41.jpg)
Bridging distant worlds
This is difficult because, people are reluctant to abandon their old knowledge.
Bridging distant worlds provides a way to acquire knowledge without acquiring the ties that typically bind such knowledge to particular worlds.
-Andrew Hargadon
![Page 42: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/42.jpg)
After I delivered the first app, things got very silent. I stopped getting calls, no more emails, not even a single postcard! ...
Until I realized: the team didn't need me anymore. Python and Pyramid were too damn easy! My days as a consultant would soon be counted. :-)
-Daniel Nouri
http://danielnouri.org/notes/2011/03/16/pyramid-is-too-damn-easy---a-success-story/
![Page 43: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/43.jpg)
How long does it take your team to learn it and
be productive with it?
How do you choose one framework over another?
![Page 44: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/44.jpg)
Plone Django Pyramid
CMS product w/ framework
Full-stack framework
Light-weight framework
“Batteries included” but w/ overhead
Choices made for you (ORM, templates, etc)
More options to choose from
![Page 45: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/45.jpg)
Thank you!Questions? Fire away!
![Page 46: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/46.jpg)
Photo credits
• http://www.flickr.com/photos/sjixxxy/4870201052/
• http://www.flickr.com/photos/epublicist/3546059144/
• http://www.flickr.com/photos/rosietulips/4093466966/
• http://www.flickr.com/photos/gamp/2803432466/
• http://www.flickr.com/photos/termie/3392894269/
![Page 47: When Not to Use Plone: and Why You Might Consider Django or Pyramid](https://reader035.vdocument.in/reader035/viewer/2022062418/55512e99b4c905325d8b4c5b/html5/thumbnails/47.jpg)
• How to use Plone as a frameworkhttp://stackoverflow.com/questions/854905/how-to-use-plone-as-a-framework
• Introducing Content Mirrorhttp://blog.kapilt.com/2008/07/02/introducing-content-mirror/
• Pyramid is too damn easyhttp://danielnouri.org/notes/2011/03/16/pyramid-is-too-damn-easy---a-success-story/
• Paul Everitt - Market the Whole producthttp://www.zeapartners.org/presentations/marketproductwholeproduct.pdf
• Product or Platformhttp://radio-weblogs.com/0116506/2008/02/05.html
• How Breakthroughs Happen - book reviewhttp://www.vedpuriswar.org/book_review/How%20breakthroughs%20happen.PDF
• What Django should learn from Zope (Mark Ramm)http://www.youtube.com/watch?v=fipFKyW2FA4
• Where next for Plone development by Ian Bickinghttp://blog.ianbicking.org/2008/11/06/where-next-for-plone-development/
• Drupal: Product vs. Frameworkhttp://london2011.drupal.org/sites/default/files/product-framework-drupal.pdf