[crossfire] C++/Qt server version

Mark Wedel mwedel at sonic.net
Tue Nov 18 02:01:47 CST 2008


Nicolas Weeger wrote:
> Hello.
> 
> I do plan to have a C++/Qt (core only, no X dependency) version of the server, 
> with advanced stuff (dynamic archetype loading, ...).
> 
> I do expect / want this version to become the official server ("winning" on 
> features, hopefully :)).
> 
> But I definitely don't want a fork, so I'd like to work on CF's SVN server.

  Seems like a sort of odd decision since most recent conversations have seemed 
to have decided that more content and less code work is what is really needed to 
be done, but this seems to be a big code project...

  And just given the size and changes of the project, I'd like to see more 
detailed information - this isn't a minor change being made here.

  I also wonder that given such a rewrite if maybe a more drastic approach is 
needed.  IMO, one reason for the messy/bad code is to maintain compatibility - 
new things are added, but don't want to break old maps/archetypes/whatever.  I 
think some things could be simplified a great deal (or made more efficient) if 
it was considered OK to break some of that compatibility - this may mean lots of 
maps need updating, but if you're going to do a major rewrite, it may be an 
overall plus just to give up on some of that compatility for clean code.

  I do remember a long time ago someone else looked at doing crossfire in C++, 
and his decision was basically to do it from scratch - better to write something 
that meets the functional spec than to try and figure out what all that code 
does, etc.  But that is clearly a larger project.  A plus is that with a 
complete re-write, one could at least architect it for certain things.  But then 
you start asking questions on what is crossfire really, etc.


> 
> So two options:
> - I work directly on trunk - my preferred option, considering it's "unstable" 
> since some years, and doesn't seem to be soon stable, not much work going on 
> it

  unstable can have various meanings.  One could be it constantly crashes/is 
unreliable.  Another could be that that the interfaces/features are not fixed 
and can change with short notice.

  I'd consider the trunk in that second category - I don't think it cores all 
the time, but rather it was made unstable so changes could be made without 
worrying about breaking existing characters, etc.

> - I make a branch and work there - and if needed / when we want we merge to 
> trunk
> 
> Opinions?

  I think it sort of depends on the expected development model.  But I'd 
generally say do it as a branch.

  If individual changes were limited in scope to a few files and were basically 
complete at each commit, then maybe working directly in trunk would be OK.  But 
changing languages would seem that that is less likely case.  .

  The flip side is also that if not many changes are being made in the trunk, it 
should generally be fairly easy to keep up to sync (there aren't changes be made 
that requires syncing up, etc)

  I do have some concerns like Kevin's, in that the rewrite could take a long 
time (I have no idea on your expected schedule on this, so maybe not).  I'd 
actually be more concerned that the trunk gets left in some hybrid state - some 
stuff rewritten, some stuff not, and unclear if having 30% of it rewritten in 
C++/Qt and rest be old C is better than 100% in old C.




More information about the crossfire mailing list