The matters I suggest have a number of purposes:
1. Allow the development of D6 without prejudicing the functionality of D5.
2. Provide a better source code structure than exists at present.
3. Ensure that, as new features become available, there can be a release (D5.1, etc).
Summary of current architecture: The architecture is based on a model-view-controller (MVC) paradigm, with the top level of the project split accordingly. Within each group there are sometimes sub-packages (model.military for example) and sometimes not (Civilization is just below model). Occasionally there are sub-sub-packages.
In my view this is a misunderstanding of the MVC approach, which has as its aim the objective of separating out the actual functional calculations (model) from the merely display (view) elements, or input (controller) elements.
The way coding is assigned in the Clash project, a coder is assigned a subject (Laurent has military, Mark has Economics, Sancio has Diplomacy, and I pretty much cop the rest, of which the most important is the GUI).
This means that areas of interest tend to be spread around the top level packages.
I would like to begin by arranging things differently. It is my belief that the MVC components of a single aspect should be in the same package, but performed by different classes. Accordingly, I would like the various models to have a top level class (game.military, game.economics, and so forth) with a libraries package as at present, and the present controller classes directly under "game".
My suggestion is the the developing D6 code retain all the code for D5 (under the present MVC system), but make any changes in new packages under the system outlined here. Then provision can be made for switching between the old version and the new version. When the new version is seen to be working correctly, the old can be removed. This will require a certain amount of coordination between the coders, but it should be easier than the present system.
The aim is that, at all times, the system compiles and runs, and is releasable.
Cheers
Comment