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

2006-07-23 Thread Mark Wedel
Alex Schultz wrote:
>>   The question is what goes into the stable branch.  By its nature, 
>> everything 
>> has to go into the head branch (presuming the change is still applicable).  
>> But 
>> the scope of changes for the minor releases in the stable branch probably 
>> shouldn't be too big.
>>   
> Personally, I think things to go into the stable branch, are of course
> things we want in minor releases, and in my opinion, that should be
> bugfixes, and features that are not large/extensive. Of course, then the
> difficulty is in defining how large or extensive makes it worth putting
> in for the next major release, and that I believe needs to be decided in
> a case-by-case basis.

  And trying to define what large of extensive may need some clarification.

  Some of it may just really boil down to what the developer doing the fix in 
the head wants to do, unless we put requirements that features within some 
scope 
must also be in the stable release.

  For example, I go off and add some new feature to the head branch, but 
because 
I'm lazy, don't put it in the stable branch.  Thus that feature is only in the 
head.

  someone else could port over that change to the stable release if they really 
want it.

  However, as I think about, you probably want these features in the stable 
branch just so they get more use (and thus may find the bugs that can then be 
fixed in the head branch).

  But even that can be error prone - I make some minor enhancement which seems 
like it would be fine for the stable release, but it actually makes use of some 
new feature not found in the stable release, so that feature then also has to 
get ported over, etc.  This probably isn't an issue, but when we are talking 
about doing major things to the head release, may not be as uncommon (looking 
back at the 1.x releases, think about things like the skill/spell redo and 
key/value lists - there are many minor changes that have been made since that 
code was committed that requires it).


> Personally I would rather dislike that setup, though I don't believe
> that is what he is trying to say. What I think he is trying to say is
> more like:
> 
> 2.0 release.
> branch for 2.1 is made based on 2.0
> 2.1 is release, branch for 2.2 made based on 2.1
> 2.2 is release, branch for 2.3 made based on 2.2
> 
> That said, I don't see how that would end up much different from just a
> branch for each major release, unless we plan on providing bugfix
> releases for older releases, which I personally don't see a need to do.

  Even if we are providing bug fixes, I think it would still be better to 
branch 
the stable release for those micro releases then branch the stable for each 
minor.

  The other problem with the above scheme is you start getting crazy version 
numbers in files, as each time you do a branch, if you commit/change a file, 
you 
get a couple more decimals placed.  So under that scheme, by the time you get 
to 
2.9, you could have files with versions like '1.9.2.5.2.7.1.12.2.23.1.6.2'.

  I think it is much better, and much more common practice for branches to be 
based on the smaller pieces, and the main branch/head to be where most of the 
changes are being made.

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


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

2006-07-23 Thread Alex Schultz
Mark Wedel wrote:
> Alex Schultz wrote:
>   
>> Andrew Fuchs wrote:
>> 
>>> Finally, i just want to note that our next release could be 1.10.0
>>> instead of 2.0 if we need more time for cf2.0.
>>>   
>> And that is something I strongly believe should be the case. I
>> personally do not believe that we are ready for 2.0 for a while (I'm
>> thinking about 6 months or so if not a little more), and I believe in
>> the meantime that we should do at least one release such as 1.10.0.
>> However I believe the point of another release between 2.0 and now to
>> gain more time, is fairly moot unless people can work on 2.0 in cvs
>> starting fairly soon, hence, I believe that the best solution would be
>> to create create a new cvs branch for working on 1.10.0, and then work
>> on 2.0 things in the main branch. In terms of debate between making a
>> branch for each major version, or each minor version, I personally don't
>> have much preference on, but I feel that a branch of some sort is
>> needed. Also, I believe the type of code restructure I mentioned a
>> little earlier on the mailing list, should be something to target for
>> 2.0, though I personally wait about a month to start work on it to allow
>> people to get used to usage of the branches and possibly to apply
>> pending patches that have been lying around for a while already.
>> 
>
>   Yes - a stable-1-x branch is needed.
>
>   One question not directly addressed on all of this are the different cvs 
> trees.
>
> server: pretty clear on major/stable branching
>
> client: probably same thing (should the model be followed with client release 
> matching server release number?
>   
Personally, I think the major and minor version numbers should match,
but the micro should be independent, so long as we are releasing the
server and client at the same time still, and personally I think we
should continue doing that unless someone has a reason that separate
releases would be worthwhile.
> arch: Does this model make sense?  I suppose in some sense because as changes 
> are made, that may enable or change behaviour of archetypes.  What about new 
> archetypes that are release independent?
>
> maps: Basically same question applies are for arch.  However, maps could be 
> more 
> a problem because patching/fixing maps could become very tedious.
Well, one issue is that changes in the server that might break the arch
format (i.e. separation of multi-meaning attributes), which could cause
problems unless we also create arch branches. The same also goes for
maps, despite the difficulties in patching/fixing maps.
The alternative though to separate branches, would be providing a
conversion utility for maps and arches, as map/arch breakage is often
easily convertible, with the server. Then apply that to cvs only when
the major release making that breakage, is released.
I'm not sure which of the options of branches, and conversion utilities,
I prefer, however I believe that one of the two would be needed.

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-23 Thread Alex Schultz
Mark Wedel wrote:
>   Right - I don't think anyone right now is arguably against having the head 
> be 
> bleeding edge and aimed for the next major release and another (or multiple) 
> stable branches.
>   
Agreed.
>   The question is what goes into the stable branch.  By its nature, 
> everything 
> has to go into the head branch (presuming the change is still applicable).  
> But 
> the scope of changes for the minor releases in the stable branch probably 
> shouldn't be too big.
>   
Personally, I think things to go into the stable branch, are of course
things we want in minor releases, and in my opinion, that should be
bugfixes, and features that are not large/extensive. Of course, then the
difficulty is in defining how large or extensive makes it worth putting
in for the next major release, and that I believe needs to be decided in
a case-by-case basis.

>   I think also it may be best if all the major features go through design 
> discussions even if there isn't anyone that is necessarily going to work on 
> them.
>
>   I know that for me personally, there are times when I am unexpectedly ready 
> to 
> do some coding.  However, if it is going to take 2 weeks to get input from a 
> design document I write tonight, then 2 weeks from I may not have the time or 
> inclination.  So there needs to be something that people can just pick up 
> when 
> ready.
>   
Many discussions on the mailing list are already ones where there isn't
necessarily anyone going to work on them :P

> 2.0 release.
> branch for 2.1 is made based on 2.0
> 2.1 is released, branch for 2.2 made based on current head code
> 2.2 is released, branch for 2.3 made based on current head code
>
>   If that is the model, then that really isn't any different than what we do 
> right now, which means by the time 3.0 is really released, it won't look that 
> much different than the last previous minor release, since the code for that 
> previous minor released was based on code pretty close to the 3.0 release 
> code.
>   
Personally I would rather dislike that setup, though I don't believe
that is what he is trying to say. What I think he is trying to say is
more like:

2.0 release.
branch for 2.1 is made based on 2.0
2.1 is release, branch for 2.2 made based on 2.1
2.2 is release, branch for 2.3 made based on 2.2

That said, I don't see how that would end up much different from just a
branch for each major release, unless we plan on providing bugfix
releases for older releases, which I personally don't see a need to do.

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-22 Thread Mark Wedel
Alex Schultz wrote:
> Andrew Fuchs wrote:
>> Finally, i just want to note that our next release could be 1.10.0
>> instead of 2.0 if we need more time for cf2.0.
> And that is something I strongly believe should be the case. I
> personally do not believe that we are ready for 2.0 for a while (I'm
> thinking about 6 months or so if not a little more), and I believe in
> the meantime that we should do at least one release such as 1.10.0.
> However I believe the point of another release between 2.0 and now to
> gain more time, is fairly moot unless people can work on 2.0 in cvs
> starting fairly soon, hence, I believe that the best solution would be
> to create create a new cvs branch for working on 1.10.0, and then work
> on 2.0 things in the main branch. In terms of debate between making a
> branch for each major version, or each minor version, I personally don't
> have much preference on, but I feel that a branch of some sort is
> needed. Also, I believe the type of code restructure I mentioned a
> little earlier on the mailing list, should be something to target for
> 2.0, though I personally wait about a month to start work on it to allow
> people to get used to usage of the branches and possibly to apply
> pending patches that have been lying around for a while already.

  Yes - a stable-1-x branch is needed.

  One question not directly addressed on all of this are the different cvs 
trees.

server: pretty clear on major/stable branching

client: probably same thing (should the model be followed with client release 
matching server release number?

arch: Does this model make sense?  I suppose in some sense because as changes 
are made, that may enable or change behaviour of archetypes.  What about new 
archetypes that are release independent?

maps: Basically same question applies are for arch.  However, maps could be 
more 
a problem because patching/fixing maps could become very tedious.


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


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

2006-07-22 Thread Mark Wedel
Yann Chachkoff wrote:
> Le vendredi 21 juillet 2006 07:37, Mark Wedel a écrit :

> Now, you could say that "there is no way to be sure that the server works 
> before trying it"; I'd answer to this that (1) we developers are supposed to 
> do at least some rough beta testing and (2) nothing prevents us to set a 
> single beta-testing server clearly flagged as such to get player's feedback 
> and spot what could have been missed during development.

  I don't think any developers writes code with known bugs (at least I hope 
not).

  while some bugs are pretty obvious if good testing was done, some are less 
obvious (occur on specific map due to specific setting of flags on objects, 
etc), but can still be very severe.

  So I think it is fairly likely that with major changes being made, there will 
be some number of bugs.  A beta server fixes this, presuming you can get enough 
players on the beta to test it.  That's a big unknown at this point.



>>   At the same time, the number of changes in the stable branch will
>> probably be a lot less, so perhaps not as much an issue for servers to keep
>> up to date on that.
>>
> Not really - there could be several minor releases, each made with a 
> relatively short lifecycle (in the order of two-three months, maybe) that 
> could potentially include a lot of new stuff; the point is that during each 
> major, no huge, breaking change could occur, so the evolution would be rather 
> smooth for the server maintainers. They'd also benefit from having releases 
> that would be more solid than they're now - we currently make no bugfixes 
> outisde of the CVS itself, forcing them to use the potentially unstable CVS 
> content to get the fixes.

  Right - I don't think anyone right now is arguably against having the head be 
bleeding edge and aimed for the next major release and another (or multiple) 
stable branches.

  The question is what goes into the stable branch.  By its nature, everything 
has to go into the head branch (presuming the change is still applicable).  But 
the scope of changes for the minor releases in the stable branch probably 
shouldn't be too big.


> Well, that's part of teamworking. Coding is just the last part of the 
> process - the design phase, which includes the various discussions, seems at 
> least as important to me, if not more.

  There have certainly been cases where things were put in without any such 
discussion, and I would have liked to have seen some.

  And the question also becomes what level of changes require design documents? 
  Just the major feature?  Any feature beyond some scope (which would need to 
be 
defined?)  The danger can become that code is submitted/committed that should 
perhaps have a design document but there wasn't one.  Suppose a patch is 
submitted without a design document?  Do we just say 'no design document, do 
commit?'  That may be the right thing to say, but also probably isn't going to 
make developers very happy.

  I do think design discussions should be done.  But in doing so, I think some 
rules need to be formulated for when a document is or is not needed (and we 
have 
to be careful about code submissions - we don't necessarily want to reject them 
out of hand, but at the same time, we don't want to accept code that doesn't 
meet standards).

  I think also it may be best if all the major features go through design 
discussions even if there isn't anyone that is necessarily going to work on 
them.

  I know that for me personally, there are times when I am unexpectedly ready 
to 
do some coding.  However, if it is going to take 2 weeks to get input from a 
design document I write tonight, then 2 weeks from I may not have the time or 
inclination.  So there needs to be something that people can just pick up when 
ready.

  I usually try to get around this by putting things out for discussion even 
when I know I don't have time right now to work on them, on the basis that when 
I do have time, all discussion is done.  Problem then is it can be a very long 
time before I ever get to it, and if enough time passes, original discussion 
may 
not be relevant.



>>   The only reason I can see of doing that is if there are going to be micro
>> releases as well as minor releases (2.1.1 released after 2.2.0).  
>>
> There would be. Suppose that we release a 'stable' 2.1.0 version, put into 
> its 
> own CVS branch. Now, somebody finds a couple bugs that we correct. We'd then 
> update the released package, numbering it 2.1.1, so that people understand 
> this is a fix of 2.1 rather than a version with new features.
> Note that CVS-wise, I do not suggest sub-branching 2.1 into 2.1.0, 2.1.1, 
> etc; 
> that's unnecessary overkill.

  But then how do you cover the case like this:
2.1.0 released.
someone puts back some signficant change to stable branch.
critical bug is discovered, fix is made, but a 2.1.1 release is needed a week 
after 2.1.0

  One can release 2.1.1 from the stable branch (just like I

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

2006-07-22 Thread Nicolas Weeger (Laposte)
> I am also doubtful that changing game mechanisms is the top issue for a
> stronger community - rather, that's making the game attractive and fun, by
> proposing events in and around them. Many MMORPGs feature special events
> around their games (contests, one-time special quests, etc). I think that
> should be investigated for Crossfire.

We did that on Metalforge a few times, a few DMs.

Drawbacks:
* it takes time to plan
* it takes time to actually eg put items, create stuff, and so on
* it takes time to run, because people will connect to the game and want to 
play
* it takes many people to handle everything
* also note time zone issue, too

But i'd be ready (and eager!) to help do some events from time to time.

Just my 0.2€ :)

Nicolas

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


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

2006-07-22 Thread Alex Schultz
Andrew Fuchs wrote:
> Finally, i just want to note that our next release could be 1.10.0
> instead of 2.0 if we need more time for cf2.0.
And that is something I strongly believe should be the case. I
personally do not believe that we are ready for 2.0 for a while (I'm
thinking about 6 months or so if not a little more), and I believe in
the meantime that we should do at least one release such as 1.10.0.
However I believe the point of another release between 2.0 and now to
gain more time, is fairly moot unless people can work on 2.0 in cvs
starting fairly soon, hence, I believe that the best solution would be
to create create a new cvs branch for working on 1.10.0, and then work
on 2.0 things in the main branch. In terms of debate between making a
branch for each major version, or each minor version, I personally don't
have much preference on, but I feel that a branch of some sort is
needed. Also, I believe the type of code restructure I mentioned a
little earlier on the mailing list, should be something to target for
2.0, though I personally wait about a month to start work on it to allow
people to get used to usage of the branches and possibly to apply
pending patches that have been lying around for a while already.

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-22 Thread Alex Schultz
Mark Wedel wrote:
>   Well, a major code restructure can't go into a minor release.  Under the 
> proposed model, the only thing that comes from the main branch is major 
> releases 
> - when a major release is done, then a new stable branch is set up where the 
> minor releases come from.
>
>   Going back to the original issue is code drifting apart - if a major 
> restructure is done in the main branch, it makes fixing any bugs in both the 
> main and stable branch more difficult.
>
>   It could just be we live with that difficulty.  Or if a major restructure 
> is 
> done shortly after a major release, still have to wait for the 6 months or 
> whatever.  I don't really want to try to say 'major code restructures happen 
> near the end of the cycle' - I think if someone has the code ready and it is 
> on 
> the list of things to do, it should be committed.
>   
Agreed, I was just nitpicking about what would be the ideal
circumstances, and if someone does have code ready right after a major
release, it should indeed still be committed. Personally I think this
difficulty would be perfectly fine to live with, provided that those who
do the restructuring make sure they keep detailed logs of what
functionality of the code moved where in the changelog (i.e. along the
lines of "Moved weapon behavior from apply_ob() in item.c to
type_weapon_apply() in types/weapons.c"), to make it easier to people to
deal with.

>
>   However, as per gros's comment, there needs to be sufficient changes 
> between 
> the releases to warrant a major release.  We probably don't want to do a new 
> major release if there are not any signficant changes - I suppose this may be 
> a 
> matter of opinion, but if we go in this model, I think that sort of needs to 
> be 
> the case, as otherwise we get into confusion at what each branch/release 
> means.
>
>   There can still certainly be major releases which don't break compatiblity 
> in 
> any way but still hold other significant changes (new features, or changing 
> of 
> existing features/expanding them).
Agreed, I was just pointing out that even with major releases, we should
think before breaking things, and if there is a reasonable way to get
things done, without breaking, or without making the code messy, etc.
then it should be considered.

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-22 Thread Yann Chachkoff
Le vendredi 21 juillet 2006 20:15, Andrew Fuchs a écrit :
> What I'm inferring, and my op pinions:
>
> Summary:
>
> While 2.0 should be a significant release, the majority opinion is
> that it should not take years.  This makes it difficult to implement
> what everyone wants, etc.
>
True.

> I think 2.0 should be the point at which most issues that we have
> known about, but haven't fixed, should be fixed.  
I'd get furthermore by saying that the last 1.x should be the point where most 
issues should be solved. And then, we can start making massive changes 
leading to the 2.0 version.

> Additionally, the 
> game should be made easier to use (more graphical interfaces on the
> client side instead of typing in commands constantly),
>
Yep - some proposals for the ergonomy of the client would be more than 
welcome.

> Gaining developers:
> 
Agree on all this, although gathering more devs is probably not the most 
important point ATM.

>
> Strengthening the community:
>
> On the community side, we need to encourage player interaction, both
> in and out of the game.  One way to boost in game interaction would be
> bolstering the player economy.
>
I think that, before entering into such details, we should ask ourselves what 
is fun in the game and what isn't. And more important, as players what they 
find fun, and what they don't.
I am also doubtful that changing game mechanisms is the top issue for a 
stronger community - rather, that's making the game attractive and fun, by 
proposing events in and around them. Many MMORPGs feature special events 
around their games (contests, one-time special quests, etc). I think that 
should be investigated for Crossfire.

> However, that will probably not be done in time for cf2.0.  
>
Indeed. But that's probably a good time to start thinking about that part, and 
try to produce a list of what should be done.

> For the community out of game, make it easier to find resources like the 
> forums, and the wiki.  Additionally, make 
> it easier to join irc channels, possibly by putting a java applet
> somewhere.  
>
Good idea. Probably make the Forum and Wiki more visible on the front page 
would also help.

> Another thing that could be done to aid the community, 
> both in-game and outside of the game, would be to setup a method to
> connect to servers, just for the purpose of chatting with people who
> are playing (oldsocketmode uses food iirc).  
>
Agree.

> Another topic of communication between players, would be the inter-server 
> chat discussed a while ago. 
>
Yep, although that's a little more complex issue to solve. Maybe bridges with 
the IRC could solve the issue.

> My opinion on release numbers:
>
> Once we have more developers and enough are willing to volunteer, it
> may be a good idea to appoint some people to maintain the stable
> branches.
>
Maybe. Note that I don't think we should maintain several stable branches 
concurrently - only the last release made. I doubt we'd really need specific 
maintainers in such a scheme.

> Micro releases: bug fixes, and addition of small features
> Minor releases: Features involving significant changes
> Major releases: Huge changes in game play, major overhauls, milestones
> in development
>
I mostly agree with this. Just for the record, I think micro releases probably 
wont require any CVS branching. I'd put "small features" as "minor release" 
ones, though - else, we're taking the risk of a slide where most changes 
become considered as "micro release" ones to make them happen faster.

> Finally, i just want to note that our next release could be 1.10.0
> instead of 2.0 if we need more time for cf2.0.
>
Quite probably. I think we should first fix all the remaining problems, 
release that as 1.10, and then work on that strong code basis to get a 2.0.

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


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

2006-07-22 Thread Mark Wedel
Andrew Fuchs wrote:

> On the community side, we need to encourage player interaction, both
> in and out of the game.  One way to boost in game interaction would be
> bolstering the player economy.  However, that will probably not be
> done in time for cf2.0.  For the community out of game, make it easier
> to find resources like the forums, and the wiki.

  Some of this could be done by including notes/links to that in the client 
itself (perhaps in the about tab).  I think most servers may report that info 
in 
the motd, but a lot of other info is also displayed at login time, so may not 
be 
obvious to everyone (one of those things that when you get shown a bunch of 
info 
at one time, becomes more common to just ignore it.)

  There is also nothing preventing server admins from changing the motd so that 
it doesn't contain that information.


>  Additionally, make
> it easier to join irc channels, possibly by putting a java applet
> somewhere. 

  Not 100% sure about that - presumably most everyone playing will have some 
irc 
client available - we should probably make it more obvious (again) on pointing 
out that the irc channel exists.

  I personally don't think we want to write/maintain our own irc interface. 
There might be libraries to make it pretty easy, in which case doing it may not 
be that hard.  But in that case, it should be a pretty specific interface (only 
connect to the crossfire channel, etc - don't get things too complicated by 
implementing a complete irc client).  If a person is serious about using irc, 
they should be able (or probably already have) a fully featured irc client.


> Another thing that could be done to aid the community,
> both in-game and outside of the game, would be to setup a method to
> connect to servers, just for the purpose of chatting with people who
> are playing (oldsocketmode uses food iirc).

  IMO, oldsocketmode should just go away - part of the code cleanup.

  But a simple change for this would be if your on a savebed and not regaining 
sp/grace/hp, you don't use food.  I don't think that would hurt balance and 
people could be logged in and never eat a bite but still take in conversations, 
etc.  If you want to go out and trade items, whatever, then you would use some 
food.



>  Another topic of
> communication between players, would be the inter-server chat
> discussed a while ago.

  I think that falls into a major project - not as simple as one might thing - 
this needs to be properly thought out in many ways.

> 
>

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


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

2006-07-22 Thread Yann Chachkoff
Le vendredi 21 juillet 2006 07:37, Mark Wedel a écrit :
> Yann Chachkoff wrote:
>   The biggest danger is that given there are only a handful of servers, if
> the first release of 2.0 (or whatever major version) has serious problems,
> it might be hard convincing people to try 2.1, etc
>
Well, at least for the code side of things, it seems to me that a software 
that shows "serious problems" should not get released.

Now, you could say that "there is no way to be sure that the server works 
before trying it"; I'd answer to this that (1) we developers are supposed to 
do at least some rough beta testing and (2) nothing prevents us to set a 
single beta-testing server clearly flagged as such to get player's feedback 
and spot what could have been missed during development.

I'd also like to underline that other games suffered serious problems at 
times, but it wasn't hard to convince people to try the next step, provided 
that they initially found the game promising/fun/interesting enough. If we 
are not sure of this, then we may have a content problem that needs to be put 
on the table.

>   And if the changes break compatibility, that makes it even less likely
> for servers to switch over.
>
As long as an old version will only get bugfixes, servers will switch over 
anyway, to have access to the new cool and shiny features. But again, the 
interest of the new stuff should be strong enough and, if we believe it may 
not, then we have a problem regarding the content of the game and our 
relationship towards the player side of the community: it would basically 
mean that we work without understanding what players need/want/await for.

>   I suppose it depends on how often we plan to do major releases.  If only
> every couple years, this can lead to other problems:
> 1) To players/users, the project may appear dead (nothing new in the past
> 12 months) 
>
Sorry if I sound rude by saying this, but that's ridiculous. Since when a 
project that mostly releases revisions of a given version is 
considered 'dead' ? To take a simple example, PHP 4.0 was released in 2000, 
and PHP 5.0 'only' in 2004 - did people consider it a 'dead project' in the 
meantime ?
Again, I am not saying we should provide "nothing new" - but simply not 
include "major changes". And I think there are plenty of smaller-scale stuff 
to keep us busy to provide minor releases anyway.

> 2) To developers, less satisfaction making changes if no one 
> (outside perhaps a very limited set of developers) will see it for 12
> months
>
First, there are changes that can be introduced by each minor release. Second, 
major changes worth an upgrade of the major version number are likely to take 
a long time to complete, maybe months, so the "waiting time" is unlikely to 
be a problem - you cannot be upset that your code isn't used if you haven't 
even got enough time to finish it.

>   This can be solved by doing major releases every 6 months (or a year at
> max) - but that then limits number of changes that can be done in each for
> each major release.  Which may not be a bad thing, but just a note.
>
Why would we ever need to base major releases on arbitrary dates ? That's a 
terrible idea, IMHO. Such changes should be based on the features first, and 
*then* on some kind of deadline to complete the work, not the reverse.

>   But last point is scope of changes - if major changes break
> compatibility, you probably don't want to do them too often - players (and
> server admins) probably don't want to have to start from scratch every 6
> months.
>
Sure. I was more thinking about a rather long cycle for majors - one every two 
years or so, possibly even longer.

>   That more or less matches what I said for the CVS branch.
>
>   I guess if we're not really concerned about stability of major releases,
> doing pre-releases isn't necessary.  But given that major releases will
> have much larger scale changes, I'd see that number of severity of bugs to
> potentially be larger.
>
>   Likewise, if the code isn't being used very much until it is released, it
> means that a bug for a big change may not be discovered until a year after
> that change is made.  I know from my own developing perspective, I'd much
> rather find bugs for code I do relatively shortly after I do the code,
> because the code will be fresher in my mind than if I have to look back at
> something I did 6 months ago.
>
Then simply open a public beta server using the last usable CVS code. There's 
no need to play with "pre-xxx" labels of any kind for that.

>   I suppose in short what I'm saying is it is really nice to have all code
> actually exercised/used somewhat shortly after the code is written.
>
Yes, indeed. But that would also include some testing made by the developer(s) 
it(them)selves. Often, changes made in the CVS currently result in an 
unusable code because of gross errors that could have been avoided if the 
coder had spent ten more minutes to build, install and test his/her ne

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

2006-07-22 Thread Mark Wedel
Alex Schultz wrote:
>
>>   But that can then lead to rapid turnover of major releases. Eg, I do major 
>> code restructure, make 3.0.0 release.  Then some other change is made (maybe 
>> compatibility breakage, maybe some other code restructure) - do you make a 
>> 4.0.0 
>> release 3 months later then?  I think there needs to be some minimum/maximum 
>> gap 
>> between major releases.
>>   
> This is true, however I can't see major code restructures working well
> as part of a minor release. What I see as ideal though, is if the trunk
> gets a few major features almost worthy of a major release, then a code
> restructure happens, and a release happens afterwards. Of course, timing
> may not work out so ideally, but perhaps it might be good for people to
> try to time their major code restructures to finish about just before
> when a major release is anticipated.

  Well, a major code restructure can't go into a minor release.  Under the 
proposed model, the only thing that comes from the main branch is major 
releases 
- when a major release is done, then a new stable branch is set up where the 
minor releases come from.

  Going back to the original issue is code drifting apart - if a major 
restructure is done in the main branch, it makes fixing any bugs in both the 
main and stable branch more difficult.

  It could just be we live with that difficulty.  Or if a major restructure is 
done shortly after a major release, still have to wait for the 6 months or 
whatever.  I don't really want to try to say 'major code restructures happen 
near the end of the cycle' - I think if someone has the code ready and it is on 
the list of things to do, it should be committed.


> Yes, this is true, however despite that, not all major releases need
> break things, and no sense breaking things unless there is a logical
> reason to.
> (random thought about old clients: There are a good number of people who
> still use the plain X client, the gnome client though, I don't think is
> in usage though I may be mistaken)

  However, as per gros's comment, there needs to be sufficient changes between 
the releases to warrant a major release.  We probably don't want to do a new 
major release if there are not any signficant changes - I suppose this may be a 
matter of opinion, but if we go in this model, I think that sort of needs to be 
the case, as otherwise we get into confusion at what each branch/release means.

  There can still certainly be major releases which don't break compatiblity in 
any way but still hold other significant changes (new features, or changing of 
existing features/expanding them).


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


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

2006-07-21 Thread Andrew Fuchs
What I'm inferring, and my op pinions:

Summary:

While 2.0 should be a significant release, the majority opinion is
that it should not take years.  This makes it difficult to implement
what everyone wants, etc.

I think 2.0 should be the point at which most issues that we have
known about, but haven't fixed, should be fixed.  Additionally, the
game should be made easier to use (more graphical interfaces on the
client side instead of typing in commands constantly), and have a
significant amount of balance issues fixed IMO.  Another thing is
that, I think we should do something to encourage developers to join
the project.  Finally, a stronger community of players could help this
game gain popularity, which would result in more developers.

Gaining developers:

To get new developers, we first have to have them gain interest in the
game, this would fall under building a stronger community.  Second, I
think reorganizing/restructuring the code into a more logical form, as
it is been discussed, and revising/creating more documentation will
make it easier for anyone interested in contributing to the project to
contribute.

Strengthening the community:

On the community side, we need to encourage player interaction, both
in and out of the game.  One way to boost in game interaction would be
bolstering the player economy.  However, that will probably not be
done in time for cf2.0.  For the community out of game, make it easier
to find resources like the forums, and the wiki.  Additionally, make
it easier to join irc channels, possibly by putting a java applet
somewhere.  Another thing that could be done to aid the community,
both in-game and outside of the game, would be to setup a method to
connect to servers, just for the purpose of chatting with people who
are playing (oldsocketmode uses food iirc).  Another topic of
communication between players, would be the inter-server chat
discussed a while ago.

My opinion on release numbers:

Once we have more developers and enough are willing to volunteer, it
may be a good idea to appoint some people to maintain the stable
branches.

Micro releases: bug fixes, and addition of small features
Minor releases: Features involving significant changes
Major releases: Huge changes in game play, major overhauls, milestones
in development

Finally, i just want to note that our next release could be 1.10.0
instead of 2.0 if we need more time for cf2.0.

-- 
Andrew Fuchs

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


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

2006-07-21 Thread Alex Schultz
Mark Wedel wrote:
> Alex Schultz wrote:
>   
>> Mark Wedel wrote:
>> 
>>> 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).
>>>   
>> I feel that changes that break compatibility should not be required in
>> order for there to be a major version change, I believe that a major
>> change from the gameplay point of view, would also go to major releases.
>> 
>   I didn't mean to imply that is the only justification for a major release. 
> Just if such a change is made, no matter how minor otherwise, that should 
> warrant an increase in the major release numbering.
>   
Agreed.
>> Also, variability of automated conversion utilities should not
>> disqualify map/arch/playerfile/etc. format changes from going towards a
>> major release.
>> 
>
>   But those can't always work and/or creates other problems.  In the past 
> there 
> have been changes that change things in various ways that would be hard to 
> automate, and/or would make changes to characters that would be unexpected to 
> players (try to explain to players why their stats are different now than 
> last 
> night, or why their item isn't as powerful) - you'll get a lot of upset 
> players 
> in such cases if a player who used to have no problem killing monster X is 
> now 
> killed by it because of changes made to the character.
>
>   There is also the issue of fairness (character X created before change is 
> made 
> and is thus more powerful than new character Y can be under revised rules).
>
>   And there is some cost in time, testing, resources of writing such 
> conversion 
> tools.  At some level, you just have to say 'hey, the game has changed, start 
> over'.  We just have to be careful that doesn't happen too often.
>   
Yes, agreed. Not all breakage can be dealt with by conversion scripts in
a "proper" manner, however my point was that where conversion IS
possible in a safe and "proper" manner we should make converters.
(Things like, splitting of multi-meanings for attributes, comes to mind,
with regards to converting map data).
>>>   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.
>>>   
>>>   
>> Well, I think that we don't have the manpower to maintain a stable
>> branch separately like some larger projects may be able do, hence I
>> think it should be the responsibility of the developer who commits.
>> One other note you didn't really say anything about, is once a major
>> release is released, the only stable branch that should be maintained
>> should be the one for that major release number. What I mean is, when
>> 3.0.0 is released, we should no longer bother with the 2.x.x branch, and
>> the stable branch for 3.x.x will be made, and then the head branch will
>> represent things for 4.0.0.
>> 
>   Yes - I didn't say that in terms of major/stable, but that is how I expect 
> it.
>   
I thought you would expect it as such but thought I would bring it up. :-)
>   It may be reasonable that right after a major release, the stable branch 
> for 
> the previous gets updated for some limited time - sort of same above - if 
> 3.0.0 
> is released, and the next day, a major bug is discovered that affects the 
> 2.0.0 
> stable branch, may want to still update that 2.0.0 stable and make a release 
> simply because it may be unreasonable for everyone to switch over to the next 
> major release in a few days (I'd say this overlap time would be 1 month at 
> most, 
> but then this also sort of depends on how often major releases are done - if 
> major releases are done every 6 months, then updating to major releases 
> shouldn't be seen as such a big deal).
>   
That makes sense if there is a demand of it, but I'm not sure if there
is, or even if there isn't much of a demand, makes sense for more
critical bugs shortly after a release anyways.
>>>   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 

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

2006-07-20 Thread Mark Wedel
Alex Schultz wrote:
> Mark Wedel wrote:
>> 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).
>>   
> I feel that changes that break compatibility should not be required in
> order for there to be a major version change, I believe that a major
> change from the gameplay point of view, would also go to major releases.

  I didn't mean to imply that is the only justification for a major release. 
Just if such a change is made, no matter how minor otherwise, that should 
warrant an increase in the major release numbering.

> Also, variability of automated conversion utilities should not
> disqualify map/arch/playerfile/etc. format changes from going towards a
> major release.

  But those can't always work and/or creates other problems.  In the past there 
have been changes that change things in various ways that would be hard to 
automate, and/or would make changes to characters that would be unexpected to 
players (try to explain to players why their stats are different now than last 
night, or why their item isn't as powerful) - you'll get a lot of upset players 
in such cases if a player who used to have no problem killing monster X is now 
killed by it because of changes made to the character.

  There is also the issue of fairness (character X created before change is 
made 
and is thus more powerful than new character Y can be under revised rules).

  And there is some cost in time, testing, resources of writing such conversion 
tools.  At some level, you just have to say 'hey, the game has changed, start 
over'.  We just have to be careful that doesn't happen too often.

>> 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.
>>   
> This makes sense, except for one thing. Unless we set up hard cycles of
> development, or make micro releases for even fixes of things as small as
> two non-critical bugs, we will have almost no micro releases ever,
> because every time time there are enough bugfixes to be worth making a
> micro release, we most likely would also have a couple feature
> enhancements which would force it to be a minor release instead of
> micro. One option if we want micro releases to be meaningful, is on a
> frequent regular basis, check if there are a couple or more bugs that
> were fixed in the cvs stable branch, and if there were no feature
> enhancements in that same timeframe, then make a micro release.

  If there are never any micro releases, that is fine IMO.  In fact, I'd 
generally not expect there to be many micro releases, but I could see see a 
minor release made, a critical bug found a few days later, and can't really 
justify a minor release, but you need to get a new version out, so do a micro.

>>   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.
>>   
> Well, I think that we don't have the manpower to maintain a stable
> branch separately like some larger projects may be able do, hence I
> think it should be the responsibility of the developer who commits.
> One other note you didn't really say anything about, is once a major
> release is released, the only stable branch that should be maintained
> should be the one for that major release number. What I mean is, when
> 3.0.0 is released, we should no longer bother with the 2.x.x branch, and
> the stable branch for 3.x.x will be made, and then the head branch will
> represent things for 4.0.0.

  Yes - I didn't say that in terms of major/stable, but that is how I expect it.

  It may be reasonable that right after a major release, the stable branch for 
the previous gets updated for some limited time - sort of same above - if 3.0.0 
is released, and the next day, a major bug is discovered that affects the 2.0.0 
stable branch, may want to still update that 2.0.0 stable and make a release 
simply because it may be unreasonable for everyone to switch over to the next 
major release in a

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

2006-07-20 Thread Mark Wedel
Yann Chachkoff wrote:

>>   if there is a separate branch for 2.0 (or 3.0 thinking after that), it 
>>   probably won't get used much, and before you can really release it to the 
>>   general public, you have to make sure it is in fact used.  
>>
> Sounds a somewhat flawed way of thinking. If you develop a new version of a 
> software - whatever the software is - you cannot expect it to be widely used 
> before it is released.

  The biggest danger is that given there are only a handful of servers, if the 
first release of 2.0 (or whatever major version) has serious problems, it might 
be hard convincing people to try 2.1, etc

  And if the changes break compatibility, that makes it even less likely for 
servers to switch over.


> I have the feeling that you consider that leaving the 1.x server for a 
> possibly long period of time without adding more than bugfixes to it is not 
> acceptable - but I personally don't get why this would be a problem; that's a 
> common development cycle and, unless 2.x takes years to be finished, it is 
> hardly an issue for players.

  I suppose it depends on how often we plan to do major releases.  If only 
every 
couple years, this can lead to other problems:
1) To players/users, the project may appear dead (nothing new in the past 12 
months)
2) To developers, less satisfaction making changes if no one (outside perhaps a 
very limited set of developers) will see it for 12 months

  This can be solved by doing major releases every 6 months (or a year at max) 
- 
but that then limits number of changes that can be done in each for each major 
release.  Which may not be a bad thing, but just a note.

  But last point is scope of changes - if major changes break compatibility, 
you 
probably don't want to do them too often - players (and server admins) probably 
don't want to have to start from scratch every 6 months.


> So I'd suggest to branch whenever we make a new stable release, whatever its 
> version number. The "main" CVS should contain the latest, work-in-progress 
> stuff. The various branches (1.9, 1.10, 2.0) get only bugfixes and can be 
> used to create package revisions (1.9.1, 1.9.2, etc).

  That more or less matches what I said for the CVS branch.

  I guess if we're not really concerned about stability of major releases, 
doing 
pre-releases isn't necessary.  But given that major releases will have much 
larger scale changes, I'd see that number of severity of bugs to potentially be 
larger.

  Likewise, if the code isn't being used very much until it is released, it 
means that a bug for a big change may not be discovered until a year after that 
change is made.  I know from my own developing perspective, I'd much rather 
find 
bugs for code I do relatively shortly after I do the code, because the code 
will 
be fresher in my mind than if I have to look back at something I did 6 months 
ago.

  I suppose in short what I'm saying is it is really nice to have all code 
actually exercised/used somewhat shortly after the code is written.

> I think the confusion comes from that currently, a lot of people are using 
> the 
> CVS directly and don't care about the file releases. I don't think it is the 
> best way to ensure a smooth transition process between version, and pertly 
> explains why some important projects get delayed or lack coordination 
> (because the current general assumption is that "the CVS must always work").

   yes - that probably isn't a good approach - I think under a new system, 
servers will need to keep to the stable branch.

  At the same time, the number of changes in the stable branch will probably be 
a lot less, so perhaps not as much an issue for servers to keep up to date on 
that.


> 
>>   Problem is that then we will never make another major release, as the
>> list of things to do will continue to grow.
>>
> No, because you can impose a time limit to submit new ideas that needs to be 
> incorporated to the 2.x line. Say for example that "we end discussion on 
> August 31th", have a debate during the first week of September about the 
> submitted ideas, who will do what and what can be dropped because of being 
> too ambitious/irrealistic/whatever else.
> Currently, there is no such team planning - it is basically "free for all"; 
> it 
> has its advantages of course, but also major drawbacks, like the inhability 
> to planify what the next major release will contain.

  Fair enough.  But that model sounds more like 'everyone say what you plan to 
do  for the next major release by august 31st'.  Everyone discussing what to do 
is also good.  People saying what they will do is needed.  Yet at the same 
time, 
I think some rough date has to be put out on when those changes will be 
completed by.  If changes are not done by the date, they get pushed off to next 
major version (there is of course some wiggle room here, but it isn't uncommon 
for other various things to happen in ones life which limits the ability to do 
the work.

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

2006-07-20 Thread Alex Schultz
Mark Wedel wrote:
> 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).
>   
I feel that changes that break compatibility should not be required in
order for there to be a major version change, I believe that a major
change from the gameplay point of view, would also go to major releases.
Also, variability of automated conversion utilities should not
disqualify map/arch/playerfile/etc. format changes from going towards a
major release.
Essentially, what I think should be put into major releases instead of
minor, are things that are either, large projects in addition to things
that break things.
> minor release: feature enhancements and bug fixes.
> micro release: only bug fixes.
>   
These definitions work for me, though as noted above, some non-breaking
feature enhancements should go to major instead if they truly are a
large change (i.e. major code restructuring for example, or things very
major from player perspective, should be saved for major releases)
>   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.
>   
This makes sense, except for one thing. Unless we set up hard cycles of
development, or make micro releases for even fixes of things as small as
two non-critical bugs, we will have almost no micro releases ever,
because every time time there are enough bugfixes to be worth making a
micro release, we most likely would also have a couple feature
enhancements which would force it to be a minor release instead of
micro. One option if we want micro releases to be meaningful, is on a
frequent regular basis, check if there are a couple or more bugs that
were fixed in the cvs stable branch, and if there were no feature
enhancements in that same timeframe, then make a micro release.
>   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.
>   
Well, I think that we don't have the manpower to maintain a stable
branch separately like some larger projects may be able do, hence I
think it should be the responsibility of the developer who commits.
One other note you didn't really say anything about, is once a major
release is released, the only stable branch that should be maintained
should be the one for that major release number. What I mean is, when
3.0.0 is released, we should no longer bother with the 2.x.x branch, and
the stable branch for 3.x.x will be made, and then the head branch will
represent things for 4.0.0.
>   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).
>   
Agreed. For that reason, I also believe that a major code restructure
should be done in a major release, and the major release should happen
immediately after the restructure is done in order to minimize headaches.
>   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.
>   
Well, 

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

2006-07-20 Thread Yann Chachkoff
(I fear I'll be overly long again, so fasten your seatbelts :))

Le jeudi 20 juillet 2006 07:29, Mark Wedel a écrit :

> > 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.
>
>   At some level, all version numbers are arbitrary and can mean whatever.
>
Sure - yet there are some commonly admitted "values" behind version numbers. 
Basically, an increase in the major number means a noticeable, significant 
break from the previous series; a minor usually indicates a "natural" 
evolution of a given codebase.

>   In my thinking, the differences of any major release should be seen from
> the previous major release (1.0 -> 2.0, 2.0 -> 3.0), not the previous minor
> release. In which case a lot has changed from 1.0.
>
That's a rather strange way of seeing things. The last iteration of the 1.x 
codebase is 1.9.1, not 1.0. There is no reason to evaluate a new release with 
one that was made several years ago, and long outdated by an extended 
evolution process.
To put it in another way, do you think players will compare 2.0 against the 
last known stable version (currently 1.9) or with the 1.0 that's five years 
old ?

>   Maybe that isn't great, but as I think was discussed elsewhere, 
>
I wasn't aware of this. 

>   if there is a separate branch for 2.0 (or 3.0 thinking after that), it 
>   probably won't get used much, and before you can really release it to the 
>   general public, you have to make sure it is in fact used.  
>
Sounds a somewhat flawed way of thinking. If you develop a new version of a 
software - whatever the software is - you cannot expect it to be widely used 
before it is released.

>   So this means  
>   that a lot of those features have to put in to the previous version. 
>
No, I don't think so. You can backport *some* features if the new version 
takes too long to develop, but why would you want to do the work twice ? I 
see little interest in this.
I have the feeling that you consider that leaving the 1.x server for a 
possibly long period of time without adding more than bugfixes to it is not 
acceptable - but I personally don't get why this would be a problem; that's a 
common development cycle and, unless 2.x takes years to be finished, it is 
hardly an issue for players.

>   Maybe going forward, there should be a pre-2.0 (or pre-3.0) branch, and
> all significant changes have to be put in that branch, so that current
> branch only contains bug fixes.  But this still goes back to what do the
> numbers really need - if most people are running pre 2.0 (pre-2.0-1.9?),
> then there are not lots of changes when that is decided to stop calling it
> pre 2.0 and make it as a real release.
>
I don't get why you would need to play with "pre-x" labels - that only adds 
useless complexity. Let's not forget that the CVS is essentially a 
developer's tool. Its content is by definition "unreleased code".
So I'd suggest to branch whenever we make a new stable release, whatever its 
version number. The "main" CVS should contain the latest, work-in-progress 
stuff. The various branches (1.9, 1.10, 2.0) get only bugfixes and can be 
used to create package revisions (1.9.1, 1.9.2, etc).
I think the confusion comes from that currently, a lot of people are using the 
CVS directly and don't care about the file releases. I don't think it is the 
best way to ensure a smooth transition process between version, and pertly 
explains why some important projects get delayed or lack coordination 
(because the current general assumption is that "the CVS must always work").

>   That is a reasonable model - the official version is bug fix only, and
> all new features go into what will become the next major version.
>
>   But as said above, snap shots/pre releases of the next major version
> still need to be done at some point, and what do we call those? 
>
No, I don't think they need to. But if the goal of such snapshots is to 
provide some food to the beta-testers, then that's simple: whenever an 
important development step is done, create an archive of the CVS content, 
name it with a -bXX suffix and continue to code afterwards. I don't get where 
this would be a problem.

> Sort of goes back to whatever arbitrary numbering scheme we choose.
>
Yes, but the scheme would be a logical one, and not one that would be based on 
a rather vague "I think it is time to change the number" feeling.

>   Problem is that then we will never make another major release, as the
> list of things to do will continue to grow.
>
No, because you can impose a time limit to submit new ideas that needs to be 
incorporated to the 2.x line. Say for example that "we end discussion on 
August 31th", have a debate during the first week of September about the 
submitted ideas, who will do what and what can be dropped because of being 
too ambitious/irrealistic/whatever else.
Currently, there is no such team pl

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/l

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

2006-07-19 Thread Mark Wedel
Yann Chachkoff wrote:
> 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.

  At some level, all version numbers are arbitrary and can mean whatever.

  In my thinking, the differences of any major release should be seen from the 
previous major release (1.0 -> 2.0, 2.0 -> 3.0), not the previous minor 
release. 
  In which case a lot has changed from 1.0.

  Maybe that isn't great, but as I think was discussed elsewhere, if there is a 
separate branch for 2.0 (or 3.0 thinking after that), it probably won't get 
used 
much, and before you can really release it to the general public, you have to 
make sure it is in fact used.  So this means that a lot of those features have 
to put in to the previous version.

  Maybe going forward, there should be a pre-2.0 (or pre-3.0) branch, and all 
significant changes have to be put in that branch, so that current branch only 
contains bug fixes.  But this still goes back to what do the numbers really 
need 
- if most people are running pre 2.0 (pre-2.0-1.9?), then there are not lots of 
changes when that is decided to stop calling it pre 2.0 and make it as a real 
release.


> 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.

  That is a reasonable model - the official version is bug fix only, and all 
new 
features go into what will become the next major version.

  But as said above, snap shots/pre releases of the next major version still 
need to be done at some point, and what do we call those?  Sort of goes back to 
whatever arbitrary numbering scheme we choose.

> 
>> 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.

  Problem is that then we will never make another major release, as the list of 
things to do will continue to grow.

  And there is certainly the case of things that get deferred to the next 
release.  That happens all the time in all sorts of software - it would be nice 
to have feature X, but doing that means that things won't be completed for 
another 12 months, so will put feature X into the next version.

> 
>>   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.

  But there are many different types/layers of bugs.  Many bugs may fall more 
into the RFE category or nice to have feature type of thing.  And there may be 
many other bugs that fall more into the inconvenience of slightly annoying. 
Saying it should be 100% bug free is also one of those things that is likely to 
never happen (as you fix ones, new ones will always get filed).  Pretty much 
all 
software ships with some number of bugs.



> 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'd say that the first person that steps in t

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

2006-07-18 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-18 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 b

[crossfire] 2.0 release, was Re: Code restructuring

2006-07-18 Thread Mark Wedel

  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.

  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.

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.

  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.

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
Game balance - fix various balance issues
improve client ui
code cleanup (but have to be careful this doesn't lead to rewriting huge 
sections of code)
change password command

  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'd also say that generally speaking, any of these big changes needs to be 
completed at least a month before the targeted release date, simply so there is 
sufficient time to find bugs, make fixes, then run the fixed code to see if it 
works, etc.

  The end of the year date for next release was somewhat arbitrarily chosen, 
but 
some date is needed.

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