Collective Good: Create, Release & Maintain the Best Add-on Products for Plone - Presentation Transcript
Collective Good
Create, Release & Maintain
The Best Add-on Products for Plone
Jon Baldivieso
ONE/Northwest
I work for
ONE/Northwest
a non-profit environmental organization that helps other
groups engage people around the environment.
5-person web team; we’ve been doing Plone sites for 4+ years
now.
host 45-some Plone 2.0 sites; 35-some Plone 2.1 sites; 45-
some Plone 2.5 sites; 35-some Plone 3.x sites
we’ve been upgrading old sites with plenty of old 3rd party
addons: some pain there
Should I really do this?
Does this scratch an itch?
Really worth a new project?
Worth a new product, or collab on existing?
Am I willing to maintain this?
First, do no harm
Uninstall needs to uninstall
no cruft leftover
great use for unit (functional) tests
Install only affects ONE site
browser layers in 3.0 sites
Install really shouldn’t nuke your site
needs to be reversible
Play well with others
Work with existing Plone paradigms, naming conventions,
CSS classes
In Plone 3, use viewlets instead of custom templates, when
possible
Also in P3, not adding new content types is preferred if at all
possible
subtypes
archetypes.schemaextender
Plan for widespread use
Unit tests
i18n
eggify
compatibility
support 2 most recent major Plone versions if possible
i.e. now: 2.5.x, 3.x
see PloneFormGen or Scrawl for examples
Plan for customization
Separate logic and presentation
Use browser views
Am I ready for
parenthood?
Releasing code to plone.org/products is
the point of commitment
Half way option: code in Collective, but
no page in Plone Soft ware Center
Best practices for
release
good name
Limi’s “namespace is not the product”
good documentation
PSC page; HISTORY.txt; README.txt; release manager
contact info
comments in code: inc in GS profiles, CSS
good storage
code stored in collective, released to plone.org and PyPI;
Stewardship
release!
release early, release often
alpha/beta/final release cycle
never delete releases from PSC OR tags from svn
maintenance branch for critical bugfixes rather than dropping support for a Plone version entirely
document this well
clean up after yourself. obvious, but no:
.svn cruft (use svn export); set.trace(), for gods sake
find a replacement if you can’t make the time to maintain
migrate : bring your users along with migrations. you can hook into Install.py’s methods to detect
reinstalls
Learn more
plone.org docs on third-party add ons
http://plone.org/documentation/manual/add-on-products-developer-manual
Martin Aspeli’s book
read PloneFormGen code
0 comments
Post a comment