Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-15 Thread Mark Wedel

  Just a note - I've put a copy of this document, with a few minor changes, on 
the wiki:

http://wiki.metalforge.net/doku.php/crossfire_release_cycle

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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-10 Thread Nicolas Weeger (Laposte)
   I'm not sure about the other systems out there - once can spend a lot of
 time looking over all the documentation, etc.  AS with our last discussion,
 I'm most inclined to stick with CVS since we know what it does and doesn't
 have any real major shortcomings (it works right now).

I'm in no way CVS/SVN expert (I use both, but I never really played with 
branches).

IMO, if SVN isn't too bad for branches, we should switch. SVN has atomic 
transactions, that's a great feature, specially with upcoming talk about 
restructuration and such - makes it much easier to revert commits.

Nicolas

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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-10 Thread Tchize
Also, about restructurations of code, svn unlike cvs does not 'forget' 
the history of a file when it's moved. I use cvs a lot for work and 
dureing refactoring of our code (which happens from time to time) we 
already lost versions of some files because they were deleted / restored 
/ deleted and as result, you have an unconsistent attic (2 files with 
same name at same directory got deleted, you only have access to latest 
on in Attic)

Nicolas Weeger (Laposte) wrote:
   I'm not sure about the other systems out there - once can spend a lot of
 time looking over all the documentation, etc.  AS with our last discussion,
 I'm most inclined to stick with CVS since we know what it does and doesn't
 have any real major shortcomings (it works right now).
 

 I'm in no way CVS/SVN expert (I use both, but I never really played with 
 branches).

 IMO, if SVN isn't too bad for branches, we should switch. SVN has atomic 
 transactions, that's a great feature, specially with upcoming talk about 
 restructuration and such - makes it much easier to revert commits.

 Nicolas

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

   


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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-09 Thread Tchize
svn does branching and tagging, and according to this faq 
(http://subversion.tigris.org/faq.html#merge-using-tags) it does it 
pretty well.

basically svn does this to handle branching and merging
copy trunk -  myBranch
copy myBranch - myBranchMerged
modify myBranch at will
copy the diff between myBranch and myBranchMerged to trunk

CVS on his side does this
tag the main branch
create a branch from given tag (don't forget to give that branch a name 
that must be different than tag)
modify the branch
copy all changes made to branch to main

As a result, same number of operation, and svn is 'supposed' to be 
faster than cvs at this because the operations do not depend on 
repository size but on change size.

I think that because the branch name appear in url, it make it easier 
for user to checkout a given branch or revision from anonymous svn and 
the fact branches appear on http browsing (which  is not the case of 
svn) is also a pro for svn.

Mark Wedel wrote:
   Some of SVN big advantages appears to be able to work offline (keeps copy 
 of 
 data you checked out around so you can do diffs without needing connection, 
 as 
 well as ungets).  Some of the other features may not make as big a difference 
 to 
 us - ability to use different connection methods (that really is up to the 
 hosting agent) and better binary support.

   But the fact it doesn't do branching as well as CVS is probably a major 
 shortcoming, especially since we are looking at needing to use branches a lot 
 more.

   I'm not sure about the other systems out there - once can spend a lot of 
 time 
 looking over all the documentation, etc.  AS with our last discussion, I'm 
 most 
 inclined to stick with CVS since we know what it does and doesn't have any 
 real 
 major shortcomings (it works right now).





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

   


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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-08 Thread Mark Wedel
Nicolas Weeger (Laposte) wrote:
 Hello.
 
 I globally agree, a few points:
 
- Client and server releases will be done at same time, with matching
  version numbers.
  - Exception is micro releases, where it may be only the client or
only the server released.
 
 This supposes client will evolve too. Experience shows client has a 
 development cycle way slower than server. So we may have cases where client 
 doesn't really need to be released.

  True - OTOH, it isn't really harmful to release the client periodically.

  Actually, given this release model, the changes in the server will be greatly 
diminished.  If we look back what was done since 1.0, all of the big features 
would be in the 2.0 target and missing from the 1.x releases.

 
  - Major release is done when feature set is complete.
 
 That I'm not totally sure I agree.
 It's nice to agree on a feature set for next major release. But sometimes no 
 one feels working on some point for some months, whereas code moves in 
 another area, enough to warrant a major release.
 So I'd say we decide on a wanted features list, but we can release a major 
 anyway if enough changes were made.

  Perhaps ammended that the list can be revisited at various times.

  If we are talking years between major releases, I think that is a requirement 
- how can anyone really say what things will be like 18 months from now - 
things 
may change such that some new feature/changes is critically needed.

  Likewise, if there are features on the list that no one is willing to do, it 
may be reasonable to discuss if those features should really be on that list - 
if the list is determined by the developers, there should probably be some 
willingness by the developers to work on those things.

  I guess the main point is that it should be a surprise to anyone when the 
release is done.

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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-08 Thread Alex Schultz
Mark Wedel wrote:
   As far as going to something else, I think it would have to be vastly 
 better - 
 sourceforge provides a nice free environment - it keeps things very simple - 
 it 
 is associated with a group, not a single person.

   Something that is not free or associated with one person can become a 
 problem. 
   Suppose there is some cool site that provides a nice source control package 
 for a relatively nominal amount of money, and I'm willing to pay it.  That 
 works 
 great unless I'm hit by a meteorite, and which time, that could just 
 disappear 
 without anyone really knowing why (same points apply to services hosted on a 
 persons private computer, etc - it sounds reasonable, but if something 
 happened 
 to that computer (house burns down), first priority for that person probably 
 isn't getting that server set up again).
For such reasons I would agree, we shouldn't go for something that is
not free, or associated with one person. My point was more saying that
perhaps it would be worth also evaluating the possibility of using some
other version control system such as bazaar-ng (personally I think
that's a pretty good one, however I don't think it would be a great idea
for cf, largely because it becomes rather slow with source trees as
large as crossfire, but I was just primarily using that as an example).
Personally I currently think that either SVN or CVS are the best options
for crossfire, but I just wanted to make a point that other options are
worth looking at a little too.
In terms of hosting, that is an issue for use of other, the metalforge
server may or may not work (don't know if Leaf would or not), however
that too has a little bit of those associated with one person
potential issues, though it is less significant. One thought, is
distributed version control systems would make associated with one
person issues less significant, thought it wouldn't eliminate those issues.

Alex Schultz

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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-08 Thread Alex Schultz
Lalo Martins wrote:
 snip svn criticisms
   
Ahh yes, those are the sorts of SVN issues I've heard about, though I'm
not experienced with SVN myself.
 I believe the idea is to try some proper revision control system like bzr 
 (there's
 free hosting at launchpad.net; you can host your own using only ssh and
 a webserver), git/cogito (used by the kernel and many freedesktop.org
 packages; I'm sure there must be free hosting somewhere) or darcs (again,
 needs only ssh and http to host).
One little note, bzr I find to be rather nice, however I find it's a bit
annoyingly memory and cpu intensive on source trees as large as cf.
git/cogito looks interesting, the tools seem pretty nice from what
little I've looked at, though it will be a bit of pain under windows
(and we do have a couple windows-using developers) as under windows it
requires cygwin. One other thought, darcs looks like an interesting one
too, however the fact that it's written in hacksel makes it a bit of a
pain to compile if one can't get binaries for one's system.

Personally I'm thinking just sticking with CVS is best though, largely
due to sticking with sf being easiest. I'm now thinking that SVN
wouldn't be too bad, but wouldn't be worth switching from CVS to use
unless one has some significant reason.

Alex Schultz

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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-08 Thread Mark Wedel

  Some of SVN big advantages appears to be able to work offline (keeps copy of 
data you checked out around so you can do diffs without needing connection, as 
well as ungets).  Some of the other features may not make as big a difference 
to 
us - ability to use different connection methods (that really is up to the 
hosting agent) and better binary support.

  But the fact it doesn't do branching as well as CVS is probably a major 
shortcoming, especially since we are looking at needing to use branches a lot 
more.

  I'm not sure about the other systems out there - once can spend a lot of time 
looking over all the documentation, etc.  AS with our last discussion, I'm most 
inclined to stick with CVS since we know what it does and doesn't have any real 
major shortcomings (it works right now).





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


[crossfire] Crossfire Release Cycles/Methodology

2006-08-07 Thread Mark Wedel
Per the recent discussion on code reorganization and what goes in what
release, this document is an attempt to gather the points raised and make it
into a formal document that can be included in the code or put on the wiki.

This document does not attempt to justify or explain why different things are
done for reasons of brevity - if we actually want every developer to read it,
we want to stick to the what the rules are, and not as much how we arrived at
those rules.

If I missed anything, or there is strong disagreement on any of these points, 
speak up.
.

--

- Crossfire versioning is described as major.minor.micro
   - 2.3.4 means major version 2, minor 3, micro 4
   - The main (head) of the CVS branch contains what will be the next major
 release.
   - A branch for the minor releases will be made when a major release is done
 - It is from this stable-major branch that future minor releases are made.
 - If a micro release is necessary, it will be branched from the
   stable-major branch, as stable-major-minor.
   - The RE may choose to make a branch for an upcoming minor release to
 limit changes, as stable-major-minor.
   - Minor releases will be made at periodic intervals (2-4 months apart).
   - Micro releases will only be done if an immediate release is necessary
 due to a critical bug, and waiting for the next minor release is not
 an option.
   - All releases will be symbolically tagged as rel-major-minor-micro
   - There is no practical upper limit to minor or micro versions -
 crossfire 1.16.22 is valid.
   - Client and server releases will be done at same time, with matching
 version numbers.
 - Exception is micro releases, where it may be only the client or
   only the server released.
   - Public servers expected to run the stable branch, not the head branch.
   - stable branch will be made for all arch, maps, client, and server
 components of crossfire.

- What goes in each version of Crossfire:
   - All changes go into the main head branch, what will become the
 the next major release.
   - Smaller features/additions will also be done in the stable branch.
 - Developer discretion on whether to make change to stable branch
   in addition to head branch
   - Bug fixes go in both branches.
 - Developer making bug fix responsible for updating both branches
   - Following changes can only be made in the head (next major) branch:
 - Changes that break compatibility
 - Changes that make signficant changes to the code.
 - Removal of programs (discontinue support for a client as an example)
 - Changing name of executables.
   - Feature set of next major release to be discussed by developers.
 - List of proposed changes sent to mailing list.
 - Developers comment, decide priorities on list of features for next
   major release.
 - For major features, brief design document needs to be written,
   describing the feature, why it is important, and in broad terms,
   how it will be done.
   - All changes to protocol must have a design doc, no matter how small.
   - Design doc must be done before changes are commited - no writing
 design doc after code is written
 - Major release is done when feature set is complete.
 - For 2.0, smaller list of features should be the criteria since this
   change of release strategy is happening later in the 1.x release cycle.

--
Open Issues:

- Should we switch to SVN?  Switching repositories at same time as switching
   what the head branch means would make the most sense.
- Need some way to drive development - need some way to make sure items
   on TODO list for next release get done, and that developers just don't
   work on cool features they want that may not match TODO list.

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


Re: [crossfire] Crossfire Release Cycles/Methodology

2006-08-07 Thread Alex Schultz
Mark Wedel wrote:
 Per the recent discussion on code reorganization and what goes in what
 release, this document is an attempt to gather the points raised and make it
 into a formal document that can be included in the code or put on the wiki.

 snipped the large list
Those rules seem to make alot of sense to me. I can't think of any
disagreement I have with them.
 --
 Open Issues:

 - Should we switch to SVN?  Switching repositories at same time as switching
what the head branch means would make the most sense.
   
I agree that when switching what the head branch means makes the most
sense, however I'm not sure that to SVN would be a great type of move to
me. SVN from what I've seen does address some of CVS's weaknesses,
however I have heard that the way it handles branching for example is
ugly. Could someone with more experience with SVN comment on branching
in SVN? Also, if we are willing/able to move off of sf.net for version
control, it might be worth considering other version control options (I
personally think that if we don't use either SVN or CVS, we should see
if we can set up a read-only CVS or SVN mirror for people to download
off of who don't have the other type of version control software.)
 - Need some way to drive development - need some way to make sure items
on TODO list for next release get done, and that developers just don't
work on cool features they want that may not match TODO list
Well, the best method of dealing with this I've seen, is with how many
projects set things like Blocking 2.0 in their bugzilla system. We
might be able to use either categories or priority with the sf.net
tracker, however that seems hackish to me and wouldn't be the clearest.
That said, I think if we are to continue using the sf.net tracker, it
would be best to use that for TODO goals, however I think it may be
worth considering moving off of sf.net for bug tracking.

Alex Schultz

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