[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