On Fri, Apr 19, 2013 at 10:16:35AM +0000, Murali Reddy wrote:
> 
> Pardon my ignorance of project management, but it appears to me we are
> talking of managing a release after half way through the cycle. May be
> this is orthogonal discussion, but how about taking approach of planning a
> release early in the cycle (at least for future releases)? Having a time
> window between each release where we actually plan for the next release.
> Discussions include - direction of the project, what big features are to
> be included, rough estimate of the effort, risks and timelines would help
> in planning releases better? Perhaps we should use Collab conferences for
> this purpose, where we can plan for the next release (apart from show
> casing the features of previous release). Since Collab is also scheduled
> to happen on a half-yearly timeline it makes this easier to execute
> release management starting from there.

I think you're far from ignorant on the topic, and bring up some good
points.

IMO there are 2 models for projects to follow:

1 - feature-based releases
2 - time-based releases

The feature-based approach is one where features are planned and
executed with a target completion date, and is managed much like a
traditional "project" that we are used to in corporate life.  Tasks,
ordering, dependencies, etc...  The release isn't complete until the
features are done, docs are complete, QA is signed off and the marketing
stuff is ready to go out.  Certainly there are target dates, but the
priority is on the feature list of "must have" changes getting done.
Everything in the planning and execution process focuses on those
features as the overall goal of the team.  Things will be pulled, and
changes to the plan / schedule will be made, all in the service of
getting as close to the planned feature set as possible.

The time-based approach (currently the one that I thought we were trying
to follow) is very different.  It decouples feature development (and any
associated planning around task ordering, testing, etc...) from the
act of releasing code.  In doing this, it *should* allow anyone to start
the mechanics of releasing code at almost any point in time.  For us,
this includes a QA cycle, doc and translation work, marketing, etc...
Those tasks take time to get done, and they represent the cost of the
release itself.

I'm an advocate of continuing to get better at time-based releases.  To
get better, I feel that we need to focus on improving the quality and
completeness of what makes it into master.  This means that a feature
development effort will have more work to get done before it's allowed
to merge into the (hopefully) stable and well regression tested master
branch.  It also means that some of the more traditional project
management tasks are going to be happening as part of feature
development, and not part of the release process.

The time-based model, IMO, should work much better for a volunteer
community like this.  If someone goes on vacation or has $dayjob
responsibilities that take their time away from ACS, that only impacts
their feature(s), not the release itself. This is a generalization,
because certainly there could be 2 features that rely on each other, and
we rely on QA, docs, translators, marketing folks, as well as an RM to
actually perform the release...  but I think you should be able to
follow the point there.

As I've said on other topics, there's a natural inclination to want to
apply solutions to planning / execution / whatnot that work well in a
corporate environment to OSS projects.  I have that inclination as well
sometimes.  However, we need to make specific decisions that get us in a
position where community growth and changes in composition are unrelated
to our release cadence and processes.

A bit long winded, sorry, but I think the difference in philosophies
are important to understand.

Happy to debate any of this though.

-chip

Reply via email to