Guys, 

First off: this is a very good idea.

For what it's worth, I'd like to offer some ideas on this. If you go ahead
and write this document, why not take it a bit further and make things more
explicit: 

> >   Continuing to support older releases

State how long support for older releases will be available. It sounds
reasonable if all 2.1.X releases are supported, but only the last of 2.0.X
and of 1.X. This doesn't of course prevent anyone from giving support on
other releases. ;-)

> >   Maintaining a change log to help with upgrades

As mentioned before: add scripts/XSL/instructions to help with the change.

> >   Strongly avoiding breaking interfaces
> >   Conducting open, public discussion of design and development
> >   Querying userbase to determine impact of potential changes
> >   Responding to the userbase, even reverting changes when necessary
> >   Voting on major additions, changes, deprecations, and removals
> >   Deprecating interfaces instead of immediately dropping support

e.g. state how long deprecated code will be around before it is actually
removed (e.g. X releases later). I suppose this will also avoid several
"vote" threads. 

> >   Only allowing code that has a community to support it

If new things are added (e.g. workflow), they always start as a scratchpad
block with "scratchpad" actually in the package name. Once they reach
maturity to earn their own block they are moved to a regular block outside
the scratchpad. Now I see lots of blocks marked as "scratchpad" in the
build, but hardly any of them are actually in src/blocks/scratchpad.

Is it possible to move deprecated code to a src/**/deprecated without
changing the package names? In this case it is also more clearly which code
is deprecated.

Yes, I know: all this requires more work, but I think it makes the
"contract" more clearly.

Bye, Helma

Reply via email to