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
My INSURER PTE LTD - Insurtech Innovation Award 2024
When Not to Use Plone: and Why You Might Consider Django or Pyramid
1. When not to use Plone
And why you might consider Django or Pyramid
Nate Aune, Jazkarta
Plone Conference 2011
San Francisco
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
7. Phil
Alan Limi Auersperg Paul
Godefroid Gogo Everitt
Jonah Me
Kapil Stefan
8.
9.
10. login contact
ready to share? register
Home Community Invite My Page Forum Events Groups Blogs About Us
featured Health Activists
11. 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
12. Risk #1
Functionality proves to be too complex for implementation
within Plone in a given timeframe due to changing factors that
require attention from the development team.
13. Risk #2
System Architecture fails to achieve desired
performance metrics, particularly in its ability to handle
many concurrent authoring transactions.
14. Risk #3
The 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.
16. 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).
18. Additive vs. Subtractive
• You are building on • You are taking things
top of what’s already away and finding
there. yourself fighting the
framework.
19. 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
20.
21. 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 Everitt
Feb. 2008
http://radio-weblogs.com/0116506/2008/02/05.html
22. 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
23. 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
24.
25. 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.
26.
27. 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 2008
http://blog.kapilt.com/2008/07/02/introducing-content-mirror/
28. 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.
29. The Plone Tax
Starting up and serving a page from Plone.
Over the course of a year
its about a man month of work.
-Kapil
31. We could drop in a
Pylons in a cubby hole
of a Plone tarball.
-Kapil
32. Z shaped learning curve
A 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
34. 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
35.
36. 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 IN
Question Text
Name 1
GLOSSARY
Hint
TERM CHARACTER
GROUP
Visible
Image (temp) Glossary Term
RELATES for Pile
Character
38. 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
39.
40. Recombinant innovations
People 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
41. 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
42. 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/
43. How do you choose one framework over another?
How long does it take
your team to learn it and
be productive with it?
44. Plone Django Pyramid
CMS product Full-stack Light-weight
w/ framework framework framework
“Batteries Choices made
More options
included” but for you (ORM,
to choose from
w/ overhead templates, etc)
47. • 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