Fast and Loose or Premature Stabilisation
Recently I have been trying to push ahead with designing new features which require data formats and conventions to be specified for the Atlas protocol used to communicate between clients and servers. Progress has been a little slow because I have been forcing myself to write a full spec for the changes and additions to the protocol before I start writing code, and I am never quite happy I have the design right. It always seems to be a little too inflexible, or not general purpose enough. The result is that weeks go by and nothing really happens.
So I thought it would be interesting to try a new approach. Rather than try and design everything perfectly from scratch, why not hack the necessary features into the protocol in the simplest way possible, and get it working quickly. When design flaws inevitably emerge, modify the design to deal with those flaws, and don’t worry about the fact that all current client releases might be broken. Instead focus on getting the clients updated, and release a new version as soon as is practical. The hope is that this will lead to new features getting into the code much faster, with the same opportunities for getting the design right in the long term.
Given the rate of progress in overall features recently, I think there is a strong case to be made for trying something different, and I would like to venture that this is the way we should go. I have already experimented with this approach by hacking in an Atlas representation for expressing what Mercator terrain layers are being used, and in what order by a world. Simon has managed to implement something roughly compatible with the format I hacked up, without any documented spec within a couple of days, and it seems to work in the common cases. I have now re-thought the data format I submitted, and plan to break it within the next few days. If this experiment works, then with any luck the necessary client changes to keep up with the new hack will be available shortly after.
September 16th, 2007 at 7:05 pm
You are unprepared…
I wrote an article about WorldForge development strategy over on the WorldForge Developnment Journal. Basically I am trying to come up with a new way of approaching changes to client server interaction that mean we have a well designed protocol without…
September 19th, 2007 at 11:40 pm
“No battle plan survives contact with the enemy.”
– Colin Powell
September 20th, 2007 at 6:28 pm
Harr!
Welcome back! Good to see you ’round these parts again.
September 20th, 2007 at 6:29 pm
That would be me again. :(
September 23rd, 2007 at 9:49 am
I think this is a good idea, as long as such changes are publicised somewhere (such as here for example). I tend to skim read cvs commit messages and may miss any important comments there.
September 23rd, 2007 at 4:40 pm
Ok, noted. Erik has pushed for blueprints on launchpad, but I suspect it may be important to link these from the main site (as painful as that may still be to edit). Might also be useful to post links here to highlight new or updated blueprints.