[crossfire] Moving server towards a modularized system?

tchize tchize at myrealbox.com
Mon Jan 16 09:45:42 CST 2006


> You forgot the other important point, modularity reduces speed of
> development, sometimes catastroptically, you only need to look at GNU
> Hurd for an example of that.

i see the exact opposite of behaviour at work. Project initiated in a modular 
way, or migrated to a modular approach are easier to manage for the following 
reasons
1) You don't need to have knowledge of how the whole code works to be able to 
work on parts of it
2) You can isolate changes in only a part of the code
> 
> It strikes me that crossfire is (still) not yet mature enough to have
> a fixed interface to all the modules that would be used, only a couple
> of months ago all the python scripts were broken by a plugin change,
> and I know I for one wouldn't want to attempt to fix the weather
> 'module' the next time the interface to it was broken.
> 

Architecture must be handled from the very beginning and currently there is no 
architecture design on crossfire project. A way to structure things here is 
suggested. This may not be the best approach, but it's far better then what 
we currently have. And nobody in the last year did propose anything to fix 
architecture problems in crossfire.

And in modularized projects, the interfaces between modules are not always 
clear, they are not fixed and would probably never been. Some code migrate 
from one module to another after experience show it is needed nearer to the 
core, or on the opposite, it get further from the core because it is not as 
multipurpose as we may have thought in the begin. Some modules sometimes get 
gathered as a unique module.  Some other gets splitted in sub modules. That's 
the lifecycle of a project.  It works, and well. Yes sometimes there are 
clash, sometimes a very big change in a module is a pain in the ass for all 
people using the modules. But considering the gain, in development speed, in 
code learning curve and bugs hunting, it is clearly worth it.

You argue a change in 'core' could interfer with 'weather' and you don't want 
to fix weather if it gets broken by that change in core? Well i claim, with 
current organisation of code, a change *anywhere* in code (not only what we 
could define as core) can break the weather. (Or potentially break anything 
else). That is something a modularized approach tends to prevent as much as 
possible.  And am not speaking of compilation here. Compilation problems are 
easy to solve.

You could argue, currently, you can't make a change in core that would make 
weather uncompilable, which with a plugin system could be possible. But, this 
is not a difficult fix, the most difficult bugs to fix are those which let 
the code compilable but with subtle invalid logic.  And the last one happends 
a lot in crossfire.

regards



More information about the crossfire mailing list