Hello Mikael,
On 5/3/2010 8:22 AM, mrelbe wrote:
> Hi all, and especially Christian
>
> The RoadMap wiki page, together with all tickets, was updated
> yesterday to convey a new planning strategy. The new approach seems
> easier and clearer to grasp, I think.
>
Thanks - this is still in the making though, as you've noticed.
> To make things somewhat even more clear to all of us, perhaps we
> should define what we mean with "major releases" and "minor releases"
> on the RoadMap wiki page.
Minor releases are maintenance releases happening on a given line of
development (0.11.1, 0.11.2, ...).
Major releases correspond to new lines of development (0.11, 0.12, 0.13,
...).
But I suppose the real question was "what's the differentiation between
a minor and major release", or more precisely, "what makes a ticket go
to either a minor or a major release"?
The answer is two fold: how we did things so far, how do we intend to do
it from now on.
For 0.11, our minor releases were subtitled "Bug fixes and minor
enhancements", and when it was not depending on new code found only in
trunk, a feature or a bug fix was likely first implemented on
0.11-stable, then ported to trunk for 0.12. However, big new features
did go to trunk exclusively (e.g. i18n, timeline user filtering, custom
query rework, wiki editor and syntax improvements, multirepos). So you
had two Trac versions with two speed of development paces, as both
0.11-stable and 0.12dev were improving over time.
The idea behind that was to allow the users to benefit as soon as
possible from the new features, and this worked somehow.
The only downside was that the real big new features took a really long
time before hitting the average users. Granted, we tried our best to
always keep trunk in a good shape, and I think the users who trusted us
to always be on the tip of the trunk were not disappointed.
Nevertheless, it took a bit more than two years before 0.12 could be
more released "to the masses" (0.11-stable was forked end of April 2008).
We would like to shorten this cycle, possibly quite drastically, hence
the new strategy.
After 0.12, we'd like to deliver major releases at a higher pace, so
that the users could benefit from the big new features earlier, instead
of having those big features "waiting" on trunk for a long time, until
all possibly unrelated work in progress has reached a good level. Note
that with the former model, the risk could even be that we never reach a
"good enough" level and that the major release keep being postponed for
ever. We manage to avoid this the last few years, but the risk is
nevertheless present.
As we see it, there are several ways to achieve this goal.
The first is to really focus on the next major version (0.13 here), and
consider the stable branch (0.12.x here) as really stable, i.e. frozen
feature wise and only getting critical fixes, instead of being polished
continuously and incrementally. This is simply because it's a real time
sink to do so and we don't have that many resources to spread around
(otherwise we would still happily maintain 0.10.x, for the many happy
users of that version ...).
The second improvement is to plan ahead more realistically and more
conservatively: instead of the 200+ tickets heavy milestones we had in
the past for the major releases, we'd like to put on a given defined
release (like 0.12.1 and 0.13) only what we feel confident we can
implement for that release, targeting say no more than 80 tickets. To
get an idea, 0.9 had 400 tickets and took 1 year, 0.10 had 300 tickets
and took 1 year, 0.11 had 555 tickets and took 1.5 year, and finally
0.12 had 300 tickets (0.12 + 0.12-multirepos milestones) and took 2
years. So 100 tickets in 6 months looks realistic. Of course, this
highly depends on the nature of the tickets, and 0.12 had many
challenging tasks in it, hence the lower "velocity" compared to the
other releases despite the fact there has been assuredly *more* things
done in 0.12 than in the previous releases.
This more realistic planning is also a change in mind: we don't put in
the next milestone "what would be nice to have", or "what users want
most", but, as honestly as we can, "what we know will be worked on and
done". This means for a large part that we'll move there only tickets
from the pools that are already quite advanced, those not only with a
patch but with active feedback and discussion between contributors.
The last avenue of improvement is to make a better use of feature
branches. While nothing is yet finalized, we're inclined to start using
the DVCS quite more, with Mercurial and git mirrors of our SVN trunk as
a basis. That way, we could create topic branches for tickets and even
repository clones for the more ambitious changes. There could also be
temporary integration branches, where everything gets merged together
(in the spirit of the proposed update "pu" branch in git development).
If this model (or similar) proves to be successful, in the longer term
we could think about a migration. But this is not a near term goal, as
Subversion does the job adequately for us (well, except for feature
branches).
> Currently, a hint is expressed in the
> description of milestone 0.12.1: "enhancements should go directly into
> 0.13"
>
This probably needs clarification (as I said, this whole reorganization
is in the making, so expect a few inconsistencies here and there). *If*
a ticket should go to 0.12.1, this means that it already fills the
criteria for a defined milestone (active patch or commitment from a
developer). If this is the case and in addition it's an *enhancement*
and not a *defect*, then it should rather go to 0.13, because of the
feature freeze for the stable branch discussed earlier. So I should
rephrase this simply into "don't consider adding new features to 0.12.1".
> That's all clear and fine, but I would like that to be explained in
> general on the RoadMap page. I also think the TracTicketTriage also
> need to be updated with some info, or hints.
>
Sure, I picked RoadMap because it's directly reachable from the
WikiStart and I think is the right place for an overview. The details
and discussion belong to TracTicketTriage.
> I know I could just jump in and start editing the wiki pages, but I
> hesitate in doing that since I am not involved in the planning.
>
Once the rules are better defined, we will gladly appreciate help in
triaging, and you're welcome to help us define those rules. The main
idea is to have the milestones and tickets be a support for helping us
making Trac go forward, and not an hindrance, overwhelming us with
wishes that are never going to be fulfilled. Our goal is to shape the
vast amount of ideas and expectations concerning Trac in a coherent
vision that we're going to realize, in the coming years. If this is
getting clearer for us, I suppose this will also become clearer for a
wider audience outside of the core development team.
In order to make this vision more palatable, we decided to go away with
the 1.0 and 2.0 milestones, which had the bad connotation of "never"
anyway in people's mind. Instead, we decided to split valid tickets in
two groups. Those which are part of the vision we want to make happen,
and for which we reasonably expect to be able to involve ourselves (be
it coding it, helping a patch to get finalized) will go on
"next-major-0.1X", and those which don't. The latter will go to the
"unscheduled" milestone, meaning that as nice those enhancements
suggestions were, or as mind-boggling the reported defects are, they
simply didn't have caught our interest (we can't possibly do everything,
and meet every direction, right?).
Now I'm sure that at this point, the big question you have is: "who's
that *we*"? Well, plain simple, the people who are maintaining Trac on a
regular basis and who enjoy making it better day after day, month after
month, release after release. That's currently Remy and me, but there
have been many others in the past, and we're quite open to new
contributors, which means this can be you in the future. The rule is the
usual one in open source teams, show us the code, participate to the
development process, and after a while, if we're confident we can work
well together in a constructive way, you're in.
> I would also feel more confident in actually taking ownership of
> tickets and changing milestones if I understood the strategy, some
> milestones currently express details regarding that as well: 0.12.1
> again states "Move tickets from next-minor-0.12.x to here once you
> know you're going to fix them for the 0.12.1 release".
>
The dust is not settled, things are just being reorganized *now*. The
idea is to have all of the former 1.0 and 2.0 tickets currently in the
"triaging" milestone being dispatched to "unscheduled", one by one.
Parallel to that, we move away from "next-milestone-0.1X" the tickets
which no longer belongs there, putting them in "unscheduled" as well.
Once this first phase is over, we'll move the remaining "triaging"
tickets to "next-milestone-0.1X" (as you can imagine, if we moved
directly a ticket from "triaging" to "next-milestone-0.1X", we would
have to consider it twice). Note that I didn't move the
"next-milestone-0.1X" to "triaging" on the assumption than most tickets
on "next-milestone-0.1X" will probably remain there, though I'm not
really sure about that, quantitatively speaking.
In the end, mid term, you'll see the following :
- the tickets on "next-major-0.1X" are tickets we're interested in and
define the goals we want to reach; highest priority are the short term
goals and lowest priority the long term ones. The severity will be
indicative of the impact of the ticket on the project. For example, the
important but long term goals will have a low priority and high
severity. The priority ranking will give hints, but will not be binding,
we expect things to change depending on the dynamics of the contributions
- once a ticket from "next-major-0.1X" is sufficiently advanced, or
there's really a high motivation to dedicate the time necessary to make
it happen, it goes to the next defined major milestone ("0.13" here)
- the tickets on "unscheduled" simply didn't make it, sorry. We had
some vivid internal discussions whether those should simply be closed as
wontfix, but finally, the idea that someone could turn an "unscheduled"
ticket into one for "next-major-0.1X" by becoming an active member of
the Trac team was found more appealing ;-)
- the newly created tickets could go on "triaging"
Symmetrical to next-major-0.1X and 0.13, we have "next-minor-0.12.x" and
"0.12.1". This should only concern bug fixes and those which don't imply
major changes more fitting to a major release. Note that in these
conditions, we could even manage to have time-based minor releases (say
every 2 months).
As before, we also have a number of ancillary milestones with clearly
defined scopes: "translations", "not applicable", "plugin - mercurial"
and "plugin - spam-filter".
Thank you for reading that far, as that was a rather long mail, which I
hope clarifies all the questions you had.
-- Christian