Noel J. Bergman wrote:
I thought that having a 2.3 branch and being committed to fix any bug
found on that branch would have been enough.

Yes, that's great.  For that release.  What about the release after that?
When would you like it, what would you expect in it, and how do you propose
that we get there?  Allowing us to manage that sort of change is the purpose
for this discussion.

I don't know and I don't care. I think our codebase should be always almost ready to be released. I'd like to think that if we want to release something at a given time we simply have to branch the current trunk or the trunk from a week before (not months before) and start the betas from there.

This is not my general approach to this problem, or a general best practice. This is my approach to *this* specific scenario: James codebase, today, with the current committers, with the current community.

Hmm i also saw the trunk as developing tree. So i have no problems with
big changes in the trunk if they make sense.

I agree, but again with the caveat that big changes do mean more risk, more
testing, and generally speaking, more time before release if we are serious
about wanting releases to be stable and reliable.

Imho James needs BIG or even GREAT changes. We are late. We are inadequate for our own goals.

So a related question would be how should the release after v2.3 be made?
Copy v2.3 to v2.4, and merge in pieces from trunk as necessary?  For each
release?  Or do we want to try to keep trunk more stable (not unchanging,
just making sure that we have confidence in what is in it), and work on the
more pervasive and/or riskier changes in a branch before merging them back
in?

I would apply major changes to trunk because I think that release branches are made for the stability. So we apply everything that could be in James goals and someone have been willing to code in our trunk. One day someone will wake up saying we need a 2.4 release and we'll do the same we did for 2.3: branch and start the release process.

The solution, as I expect we all agree, is NOT to have a lot of branches, or
at least not long-lived ones.

+1

As I said, this isn't about what you are doing, it is about how how we want
to set ourselves up for managing change.  So that we *can* making releases
in the kind of timeframe that I believe we all want to have them.  Because
this is not a new problem, nor one that is caused by you.  We have run into
this problem before.

In fact I feel part of the solution, not of the problem. Maybe this is not a shared idea, or maybe this has been a misunderstanding.

Danny started making changes in trunk that in the end not even Danny wanted.
Meanwhile, all of the Avalon changes were made in trunk.  And other work was
happening in trunk from other developers.  And for a long time we spent a
lot of effort for a while trying to copy changes between trunk and the v2
branch.  In the end, that cost us a *lot* of time between releases.

I understood this, but this is not happening now and not near to happen. We have a 2.3 branch that will get only bugfixes and we have trunk.
Nothing to merge but bugfixes.

One approach might be that when we want to make a substantial change, we
either discuss it first and get people to agree on making the proposed
change directly in trunk; or we might create a branch, do the work, get a
consensus, and merge the work into trunk.  This approach might be
particilarly effective when the changes are both substantial *and*
relatively isolated, e.g., the recent changes on fetchmail.

As I already said plenty of times I have a big -1 for discussions: this is not a general consideration, but I simply saw that it is not working for James.

I don't think that is good to create a branch for a 2 hours work. If I create a branch for each of this refactorings we will end up with hundreds of temporary branches. I don't think this will help.

how many mailing list message per line of code changed we want to require.

Again, depends upon what changes are being made.  When we replace the
spooler, I would expect discussion.  Fixing a bug in a mailet, less
discussion.  Total architecture of some components, more discussion.

Imho discussion is not working here. Each one has his own ideas, limited time, and limited knowledge of the specific code problem. I understood this many months ago and I tried with the CTR approach: discussion on concrete things has been better but too often people say "we should have discussed this before" and similar thing, with no technical issues, no vetoes and no conclusions for the discussion.

Please open the mailing list archives and look how many thread "last-replies" have been written by me asking something and how many times I left a question unanswered.

The result is that most code changes I did for the 2.3 release have not been discussed. Maybe you liked them, or maybe you had no time to review them after my commits, but I think the result is good.

I've introduces really major and critical changes in the code that is going to be released as 2.3 (see the MimeMessageCopyOnWriteProxy and the refactoring of MimeMessageWrapper). Imho it is the most problematic (but needed) change I did there. We will know if I improved or decreased the quality only when much more people will start testing our 2.3 releases (we know for sure that it fixed a major bug and that it probably improve the performances but even if I added few unittests we can't be sure if people don't test it). I don't understand why 5 months ago I thought I deserved the trust to make that critical changes and now I can't keep working that way.

Imho we have not enough developer power to previously define release dates associated with features and roadmaps.

I think the best we can do is agree on goals (features we want in James) and try to coordinate the community achieving one of more of the goals.

We can also define a time between new medium/major releases. Imho 5-8 months is a good amount and a first goal since the last one have been more than 2 years.

Imho this is the best we can hope to achieve: we have no money to enforce a specific roadmap (features <=> dates)

Stefano


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to