[crossfire] 2.0 release, was Re: Code restructuring
Mark Wedel
mwedel at sonic.net
Thu Jul 20 00:29:52 CDT 2006
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.
More information about the crossfire
mailing list