When Not to Use Plone: and Why You Might Consider Django or Pyramid


Published on

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/31d3dc2be7404f5515cd47050e144cb7

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

When Not to Use Plone: and Why You Might Consider Django or Pyramid

  1. 1. When not to use Plone And why you might consider Django or Pyramid Nate Aune, Jazkarta Plone Conference 2011 San Francisco
  2. 2. 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 Book http://zodbdocs.blogspot.com/• Founded NodeRabbit in 2010
  3. 3. I <3 Plone.
  4. 4. Close your eyes (cue harp music)
  5. 5. Phil Alan Limi Auersperg PaulGodefroid Gogo Everitt Jonah Me Kapil Stefan
  6. 6. login contact ready to share? registerHome Community Invite My Page Forum Events Groups Blogs About Usfeatured Health Activists
  7. 7. Client requirements• email newsletter • polls/surveys• video • ratings• ad server • tagging• user tracking • SEO• single-signon • custom workflow• personal dashboard • taxonomy• support/helpdesk • integration with forum
  8. 8. Risk #1 Functionality proves to be too complex for implementationwithin Plone in a given timeframe due to changing factors that require attention from the development team.
  9. 9. Risk #2 System Architecture fails to achieve desiredperformance metrics, particularly in its ability to handle many concurrent authoring transactions.
  10. 10. 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 isnormal which means there is a potential for any third-party developed application to require additional changes.
  11. 11. Junemonths to delivery! 3 Two 25-Sept.
  12. 12. From Client: Also, it would be great if you can providethe following asap:1) As many examples as possible of large Ploneimplementations with hard numbers attached such as #of users per month, concurrent # of users/second, pagerequests/second, average response time per page.Preferably reference “brand names” sites that mostpeople might know. This is extremely important for theacceptance of non-technical stakeholders as Plone isnot well known (yet).2) Scalability of database “write” operations.Strategies and techniques. This is important because weare going to have lots of content creators/reviewers( thousands or even tens of thousands).
  13. 13. Square peg in a round hole
  14. 14. Additive vs. Subtractive• You are building on • You are taking things top of what’s already away and finding there. yourself fighting the framework.
  15. 15. Content management features aren’t toohard to create in any of the new crops ofPython web frameworks.Writing a form, even auto-generating thatform using some framework, accepting inputfrom users, showing errors, managing users,etc: for any given project, satisfying thesetypes of requirements tends to be prettyeasy without Plone.It’s often much harder to removeunnecessary features from Plone than it is tocreate the necessary ones from scratch. -Chris McDonough
  16. 16. Product or Platform?Do we always ensure that the needs of theproducts users come ahead of the needs ofthe developers that want freedom to changeanything/everything, take it in newdirections, etc.? -Paul Everitt Feb. 2008 http://radio-weblogs.com/0116506/2008/02/05.html
  17. 17. Marketed differentlyIts really, really important to figure out ifyour product is a platform or not, becauseplatforms need to be marketed in a verydifferent way to be successful.Thats because a platform needs to appeal todevelopers first and foremost, not end users. - Joel Spolsky
  18. 18. Alienate developersOne of the biggest themes in softwareindustry failures is a platform vendor thatdidnt understand that they were a platformvendor, so they alienated their keyconstituency: the developers. - Joel Spolsky
  19. 19. 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.
  20. 20. 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 Thangavelu July 2008http://blog.kapilt.com/2008/07/02/introducing-content-mirror/
  21. 21. Plone is a product, and frankly thats agood thing for both the software and itsusers.It’s however a bad thing when you’rebuilding applications, there tends to bemuch more policy with products, thatneeds to be replaced or worked aroundwhen you’re building on them.As a result, products tend to have twoother downsides in applicationdevelopment: developer inefficiencies andcomputational inefficiencies.
  22. 22. The Plone TaxStarting up and serving a page from Plone. Over the course of a year its about a man month of work. -Kapil
  23. 23. PylonsPlone tarball
  24. 24. We could drop in aPylons in a cubby hole of a Plone tarball. -Kapil
  25. 25. Z shaped learning curveA product is typically a much bigger software stack, andPlone has and utilizes many components, from zope2,zope3, cmf, archetypes providing foundations, inaddition to a growing number of plone specificinfrastructure. -Kapil
  26. 26. Archetypes PloneFive/z3 CMF Zope Python
  27. 27. Product vs. Platform• All-in-one product (CMS) • Building a product or customized web• Minimal customization application • Don’t need all the bells & whistles provided by CMS
  28. 28. Go-Botany Database: Entity-Relationship Diagram Name Last updated 23 Jul 2010. Auto primary keys (id) not shown Friendly Name Scientific Name TAXON 1 1 PILE INFO Description Taxonomic Authority DEPICTED DEPICTED BY BY Simple Key Image N N Alt CONTENT IMAGE M Rank Taxon Group Entry 1 GROUPED 1 Creator BY IS OF TYPE 1 M N IS OF TYPE 1 Name 1 DESCRIBES BELONGS IMAGE TAXON DESCRIBES TO TYPE GROUP N 1 M CONTENT 1 Literature Source TYPE 1 EXHIBITS Taxon LISTS M PILE Character Value N M PART OF N Value String N CHARACTER Value Min PILE VALUE GROUP N Value Max 1 PERTAINS TO Value Float EXPLAINED BY 1 1 CHARACTER Short Name Name M Term N EXPLAINED Lay Definition BY GATHERED N INQuestion Text Name 1 GLOSSARY Hint TERM CHARACTER GROUP Visible Image (temp) Glossary Term RELATES for Pile Character
  29. 29. DjangoA web framework named after a jazz musician can’t be all that bad, right?
  30. 30. 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
  31. 31. Recombinant innovationsPeople do not suddenly come up with new ideas.They piece them together from what they alreadyknow. People often fail to come up with a newunderstanding of what’s happening, new ways ofdealing with problems, when they lack the wide-ranging set of ideas from which to piece togetheralternatives.The trick is to develop in-depth knowledge within agiven field but, at the same time, develop thewillingness to take that knowledge apart andcombine it in new ways.-Andrew Hargadon, How Breakthroughs Happen
  32. 32. Bridging distant worldsThis is difficult because, people are reluctantto abandon their old knowledge.Bridging distant worlds provides a way toacquire knowledge without acquiring the tiesthat typically bind such knowledge toparticular worlds. -Andrew Hargadon
  33. 33. 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 didnt need me anymore. Python and Pyramid were too damn easy! My days as a consultant would soon be counted. :-) -Daniel Nourihttp://danielnouri.org/notes/2011/03/16/pyramid-is-too-damn-easy---a-success-story/
  34. 34. How do you choose one framework over another? How long does it takeyour team to learn it and be productive with it?
  35. 35. Plone Django PyramidCMS product Full-stack Light-weightw/ framework framework framework “Batteries Choices made More optionsincluded” but for you (ORM, to choose from w/ overhead templates, etc)
  36. 36. Thank you!Questions? Fire away!
  37. 37. 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/
  38. 38. • How to use Plone as a framework http://stackoverflow.com/questions/854905/how-to-use-plone-as-a-framework• Introducing Content Mirror http://blog.kapilt.com/2008/07/02/introducing-content-mirror/• Pyramid is too damn easy http://danielnouri.org/notes/2011/03/16/pyramid-is-too-damn-easy---a-success-story/• Paul Everitt - Market the Whole product http://www.zeapartners.org/presentations/marketproductwholeproduct.pdf• Product or Platform http://radio-weblogs.com/0116506/2008/02/05.html• How Breakthroughs Happen - book review http://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 Bicking http://blog.ianbicking.org/2008/11/06/where-next-for-plone-development/• Drupal: Product vs. Framework http://london2011.drupal.org/sites/default/files/product-framework-drupal.pdf