Date post: | 12-May-2015 |
Category: |
Technology |
Upload: | jazkarta-inc |
View: | 6,195 times |
Download: | 2 times |
When not to use PloneAnd why you might consider Django or Pyramid
Nate Aune, JazkartaPlone Conference 2011
San Francisco
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
I <3 Plone.
Close your eyes(cue harp music)
Kapil
Alan LimiMe
Stefan
Paul Everitt
JonahGogoGodefroid
Phil Auersperg
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
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
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.
Risk #2System Architecture fails to achieve desired
performance metrics, particularly in its ability to handle many concurrent authoring transactions.
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.
June 25-Sept. 3Two months to delivery!
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).
Square peg in a round hole
Additive vs. Subtractive
• You are building on top of what’s already there.
• You are taking things away and finding yourself fighting the framework.
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
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
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
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
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.
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/
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.
The Plone TaxStarting up and serving a page from Plone.
Over the course of a year its about a man month of work.
-Kapil
Plone tarballPylons
We could drop in a Pylons in a cubby hole
of a Plone tarball.-Kapil
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
Python
Zope
CMF
Plone
Archetypes
Five/z3
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
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
DjangoA web framework named after a jazz musician
can’t be all that bad, right?
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
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
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
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/
How long does it take your team to learn it and
be productive with it?
How do you choose one framework over another?
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
Thank you!Questions? Fire away!
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/
• 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