collective good: create, release & maintain the best add-on products for plone
TRANSCRIPT
Collective GoodCreate, Release & Maintain
The Best Add-on Products for Plone
Jon BaldiviesoONE/Northwest
I work forONE/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 harmUninstall 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 othersWork 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 useUnit 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
Halfway option: code in Collective, but no page in Plone Software 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;
Stewardshiprelease!
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 onshttp://plone.org/documentation/manual/add-on-products-developer-manual
Martin Aspeli’s book
read PloneFormGen code