collective good: create, release & maintain the best add-on products for plone

11

Click here to load reader

Upload: jbaldivieso

Post on 12-May-2015

1.366 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

Collective GoodCreate, Release & Maintain

The Best Add-on Products for Plone

Jon BaldiviesoONE/Northwest

Page 2: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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

Page 3: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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?

Page 4: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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

Page 5: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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

Page 6: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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

Page 7: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

Plan for customization

Separate logic and presentation

Use browser views

Page 8: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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

Page 9: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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;

Page 10: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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

Page 11: Collective Good: Create, Release & Maintain the Best Add-on Products for Plone

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