Re: [crossfire] 2.0 release, was Re: Code restructuring

2006-07-19 Thread Yann Chachkoff
Le mercredi 19 juillet 2006 06:50, Mark Wedel a écrit :
   To me, the issue for targetting this for a 2.0 release is timing.

   We can come up with a huge list of things that should be done before a
 2.0 list.  And we could attempt to do them all, but then 2.0 probably won't
 be released for 5 years or the like.

Although I do agree that delaying 2.0 too far away would be a bad thing, I 
also think that releasing a 2.0 that would basically be a 1.9 with some 
fixes would make little sense.

   The discussion for a 2.0 release probably needs to be done.  Several
 questions need to be asked  answered:

 1) What is the target date for a 2.0 release?  It can't be 'when all the
 cool stuff is done', as then it never happens - always something new to
 add, etc - some general date has to targeted.  I had previously mentioned
 shooting for end of this calendar year.

That's a question that can only be answered once goals to reach for 2.0 are 
cleared.

 2) What are the 'must have', 'nice to have', and 'not really important'
 features to target for that release?  The wiki -
 http://wiki.metalforge.net/doku.php/dev_todo:cf2.0 - sort of covers that by
 high/medium/low priorities.  Does code restructuring fall into high
 category? There is a code cleanup which is high, but I had envisioned that
 to be a bit more modest than what is being talked about now.

I'd say that there are basically two types of changes to be done:

(a) Fixes to problems currently encountered in the 1.9.x version of Crossfire. 
Typically, this is the case for Game balance or Fix weather. Those do not 
involve creating new systems, but rather work so that the current stuff does 
its job as expected;

(b) Additions to the existing functionality. Two subtypes here: (1)minor 
changes, that are relatively easy to code, or that are mostly not necessary 
and (2)major changes, that will require some time to complete, or that change 
the game experience in a significant way.

I'd say that everything that is (a) should be done and integrated as a release 
of the 1.x series - there is no reason to change the major version number for 
bugfixes. Similarly, (b.2) would have to go into the 2.x side of things - 
major changes is what one expects to have when the major version number 
itself changes. Finally, for stuff belonging to (b.1), I'd say that it 
depends on the priority we put on it: if it is desperately wanted, then 
integrate into the 1.x series; if that's just a nice idea but not really 
top-priority, then push to 2.x.

 Depending on the timeframe would determine how many can really be done in
 the targeted time.

I think that's a bit backward-thinking: the number of tasks should define the 
timeframe, not the opposite.

   Bugs, both new and current, also need to be similarly prioritized -
 fixing bugs is great to do, but can also be a big time sink.

That's true, but I don't think it is realistic to start working on 2.0 when 
1.x isn't even mostly bug-free.

 3) Who commits to working on these changes?  The wiki above has lots of
 things to do, but very people signed up to do them.  If there are only a
 few people actively working on making code changes, that certainly limits
 number of changes that can be done for a release.


   So all that said, if we think end of the year is a reasonable target
 date, I think that limits us to trying to take on somewhere between 2-4
 decent sized projects.  If we look at the wiki, taking things currently
 marked as high, that would be:

 Character creation - new character creation method

Sounds good for inclusion in 2.0 - new feature that's radically different from 
what we have.

 Game balance - fix various balance issues

Looks like a bugfix to me rather than a new feature - so that's 1.x work, 
IMHO.

 improve client ui

Depends on the level of improvements. If that's just fixing/completing the 
current client, mark that 1.x (that's basically nothing more than minor 
tweaks); if that involves rethinking the client UI, then mark that 2.0.

 code cleanup (but have to be careful this doesn't lead to rewriting huge
 sections of code)

If that's only cleanup without any fundamental change in the way it works, 
then that's definitely an 1.x task.

 change password command

Agree, although it looks like a rather minor point to me compared to others.

   Of which, none of those currently has anyone signed up to do them (I was
 personally planning to look at the character creation sometime soon)

I'm not even sure there is a clear document for each of those tasks describing 
what we are supposed to add/do/design. I mean, everybody understands 
what new character creation method; but there is nothing documenting what 
has been decided about it, what it should/shouldn't contain, etc. That's 
basically a free for all: the first one that assigns itself to the task and 
submit it to the CVS will get its concept becoming the de-facto choice. 

I think that before starting to blindly code, we need to clearly define how 

Re: [crossfire] 2.0 release, was Re: Code restructuring

2006-07-19 Thread Alex Schultz
Mark Wedel wrote:
 1) What is the target date for a 2.0 release?  It can't be 'when all the cool 
 stuff is done', as then it never happens - always something new to add, etc - 
 some general date has to targeted.  I had previously mentioned shooting for 
 end 
 of this calendar year.
   
Well, I think that targeting a general date may not be the best
solution, and a better one would be having a feature-based target.
Essentially based upon the sort of things you talk about below. We just
need to limit the number of must have things to be reasonable and wait
till we have those, and a few nice to have things.
 2) What are the 'must have', 'nice to have', and 'not really important' 
 features 
 to target for that release?  The wiki - 
 http://wiki.metalforge.net/doku.php/dev_todo:cf2.0 - sort of covers that by 
 high/medium/low priorities.  Does code restructuring fall into high category? 
 There is a code cleanup which is high, but I had envisioned that to be a bit 
 more modest than what is being talked about now.

 Depending on the timeframe would determine how many can really be done in the 
 targeted time.
   
I think the real question is, how 'big' do we want 2.0 to be? How much
justifies a major version number? The answer to that, affects what
features we should target to have in 2.0, and that dictates the
timeframe. At the same time though, the timeframe does affect the other
parts, it isn't just a one way chain, as we have to also make sure the
features are reasonable to complete within a reasonable timeframe.
What it really is, is not a question of how much can be done in a
timeframe, or how 'big' we want it. It is a matter of weighing how 'big'
we want it, against what timeframe is reasonable. Balances are always
so much harder to weigh than simple one way relationships ;)

Another issue though, is due to the way that crossfire has released in
the past, releases with minor version number increments are a mixture of
bugfixes, minor features, and major features. One question is, what will
make the difference between 1.9 and 2.0 so different from 1.7 and 1.8?
Really, I don't see how anything that has happened or is planned for
2.0, will really make the change so much bigger than the difference
between 1.7 and 1.8. For an even better example, the difference between
the releases where the skills system changed a bunch, is probably much
more worthy of a major version change, than what is currently planned
for 2.0 IMHO. Personally, the only way I can see things changing enough
in a single release to in my opinion warrant a 2.0, is if we start
keeping a stable branch in CVS and have that used for minor releases,
or if something either in code and/or gameplay undergoes a major (in a
loose sense) restructure.

Alex Schultz

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] 2.0 release, was Re: Code restructuring

2006-07-19 Thread Mark Wedel
Alex Schultz wrote:
 Mark Wedel wrote:
 1) What is the target date for a 2.0 release?  It can't be 'when all the 
 cool 
 stuff is done', as then it never happens - always something new to add, etc 
 - 
 some general date has to targeted.  I had previously mentioned shooting for 
 end 
 of this calendar year.
   
 Well, I think that targeting a general date may not be the best
 solution, and a better one would be having a feature-based target.
 Essentially based upon the sort of things you talk about below. We just
 need to limit the number of must have things to be reasonable and wait
 till we have those, and a few nice to have things.

  Have to be careful and limit the feature so that you don't keep adding more 
things to be done, to the point where nothing ever gets done.  Whatever is 
targeted for 2.0, there will be things that should be done for 3.0, 4.0, etc. 
The next version can't hope to cover everything that should be done.



 Another issue though, is due to the way that crossfire has released in
 the past, releases with minor version number increments are a mixture of
 bugfixes, minor features, and major features. One question is, what will
 make the difference between 1.9 and 2.0 so different from 1.7 and 1.8?
 Really, I don't see how anything that has happened or is planned for
 2.0, will really make the change so much bigger than the difference
 between 1.7 and 1.8. For an even better example, the difference between
 the releases where the skills system changed a bunch, is probably much
 more worthy of a major version change, than what is currently planned
 for 2.0 IMHO. Personally, the only way I can see things changing enough
 in a single release to in my opinion warrant a 2.0, is if we start
 keeping a stable branch in CVS and have that used for minor releases,
 or if something either in code and/or gameplay undergoes a major (in a
 loose sense) restructure.

  One thought is to define major.minor.micro releases like this:

major release: Changes that break compatiblity (need to start with a clean 
server as player files are not compatible, server/client compatibility may be 
an 
issue, and/or programs removed (x11 client goes away for example).

minor release: feature enhancements and bug fixes.
micro release: only bug fixes.

  In terms of CVS, that could work out like:

head branch:  Contains major release - all changes (unless not applicable due 
to 
other changes) go in the head.

stable branch:  This is where minor/micro releases come from.  When a new major 
release is done, a new stable (stable-2-0-0, stable-3-0-0) is done.  I really 
only see one stable branch per major release - the determination of micro/minor 
is a call of the RE at time of release based on what changes.  I think in this 
model, releases done on a fairly regular schedule (quarterly?  Every 6 months) 
since the number of changes probably won't be that big.

  The question is then who is responsible for updating the stable branch.  IS 
the developer who commits the change responsible?  Do we have some people 
responsible for maintaining the stable branch and they make the call on what 
changes to pull out of the main?  And you get that thorny issue - what level of 
enhancements from the main branch get put into the stable branch.  While some 
may be obviously incompatible, there could be other ones which are pretty 
significant changes.

  Under this model, I don't think you want to go too long between making major 
releases - simply because as more time passes, the code from major and stable 
will drift farther and farther apart, making it harder and harder to take any 
fixes from the main branch to the stable branch - this then basically amounts 
to 
having two different programs to maintain (and/or the stable branch stops 
getting change as if I fix a bug in the head branch and can't easily see in the 
code where that belongs in the stable branch, I may not be inclined to get the 
stable branch, compile, spend the time to debug, etc to try and fix that 
problem).

  IMO, this CVS/release model actually is pretty good.  The problem is how to 
handle the head/main CVS branch.  It would seem that official releases are 
never 
made from it until the target for what constitutes the release is made.

  That may work if there are people running these CVS servers and clients.  But 
the danger there is it can be hard to run a CVS server when a commit at any 
time 
could result in the entire server being reset - I think you almost need to set 
up various snapshots where you can say 'the code will be stable enough for at 
least some number of months' so people can feel somewhat comfortable playing on 
the server, etc.

  I think then also some form of filtering or a separate metaserver is needed 
so 
players do play on the appropriate server.


___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire