[crossfire] Client Snapshot Builds
Mark Wedel
mwedel at sonic.net
Mon Dec 1 01:30:57 CST 2008
Quick notes (I've probably missed some - if I've missed anything important,
follow up).
The list of supported platform is largely based on user input. I've not had a
mac, so that is based on someone providing patches (if necessary) and saying it
works. On going testing of those platforms does not happen by me, and maybe not
at all. At one point, I think the list was a lot longer, but then we started
asking 'just when is the last time someone tried to compile on irix?'.
For what its worth, I've moved for redhat linux to solaris (x86/amd64) so
cover that base.
The official release cycle is slow for a variety of reasons - off the top of
my head:
- Broken release system - the tools/components are there, but changes have been
made (addition/removal of file being most common) such that release/packaging
fails. Not hard to fix, but takes time.
- For official releases, desire to have stable components (no big check in the
day before). But folks also like to have a chance to fix bug and make other
changes before the release, which sort of goes against stability (fixing bugs
should make things more stable, but not always the case)
- Scheduling becomes a problem - between the packaging, uploading, and updating
the page on sourceforge, it would be a couple hour process. It may be the case
that I have the time right now, but to let everyone have a chance to put in the
patches, change, etc it means a couple weeks time, when I may not have time.
- The only real part of the official release was the source tar balls. Binaries
may come later or not at all (I only did x86_64 rpms - never did anything more)
On those notes, things to make releases happen more often:
- Folks other than me doing releases.
- Use standard release train model (release happens at this time - if change
isn't done, need to wait for next train/release).
- More frequent releases such that missing a train isn't as big an issue.
- Do more frequent in between snapshots - if this uses same logic/scripts as
official releases, it means that problems related to missing files get found sooner.
A lot of that is easier said than done. I've also said that I'll try to do
releases more often, but finding time to do so is often hard. And even on
second point of release train model, I suspect that dates would be vague or in a
range (something along the lines of 'Release schedule will be January, May and
September'). That gives entire month to find the necessary time for a release,
and not a specific day.
One last note - with various free VM solutions out there, it now does make it
easier to releases for multiple OS's or doing 32 bit releases on 64 bit linux (I
know of the problem Lauwenmark speaks related to trying to do a 32 bit release
on 64 bit linux - solution would be to have a 32 version installed in a VM)
Now in terms of the 2.x branch:
For the client, given that lots of good stuff has gone into the 2.x branch and
nothing really removed that breaks compatibility, I'd be tempted to take what is
currently 2.x and make it the main trunk (I'd need to think about it more and
see what changes have been done). To prevent confusion, a long time back it was
decided that the client would mirror server version - that normally worked
pretty good when we were just doing incremental 1.x release, but doesn't work as
good for 2.x.
The reason for tying the versions together is it made support easier - just
tell users to make sure their client was at least same version as server and
things would work. But also since that time, the protocol has stabilized a
great deal.
Now the idea of the 2.x client (and thus server) was that at time of release
of 2.0, the client would fully support the 2.0 protocol and nothing more (all
code related to deprecated commands would be removed. All setup or other option
related to protocol control would also be removed, such that at startup, the two
would already be speaking the same language. Some setup commands related more
to control/preferences would still be in place). Such a client almost certainly
would not run on a 1.x server, and a 1.x client would not work with a 2.x server.
But that hasn't happened yet, and the current trunk client certainly does work
on the 1.x servers, so maybe it does make sense to take what is in trunk and
call it 1.x - it would get more folks using the features that are there. It may
just make sense to just work on trunk until such time when it really does become
incompatible with 1.x clients.
For the server, this is a trickier question - the trunk server clearly is not
ready for official release - sure it will run, but work on balance and other
areas need to be done. One has to ask what do we get by releasing it more
widely - I think we'd certainly get a fair number of bugs or questions related
to known issues. I'd be more tempted to do snapshot releases after certain
major things are done but before the next one is started. And those release
would still have to be marked as alpha/experimental. But maybe it doesn't even
make sense then - if folks really want to play with it, having them know how to
compile and get it from SVN may be a first level sanity check. The number of
folks that download the server as is isn't that huge, and for pre-release test
versions, I think it'd be even lower.
More information about the crossfire
mailing list