Tuesday, May 23, 2006

The 3 phases of AgileWiki3's development

As Aw3 is a reimplementation of Aw2, there is no rush to implement the more interesting rolonic features. Rather, the interest is in a phased implementation where each part is given proper attention and implemented completely.

The first phase was the implementation of the underlying database, with full rolonic capability, and to implement most of the framework and a workable GUI. I call this the Ugly Dukling phase, as there are interesting but unexpressed capabilities, but the overall system was obviously quite incomplete and could not be used to accomplish anything. This phase is complete except for the lack of the dump/restore capabilities wich require a bit more stability than has yet been achieved.

We are now in the second phase of development. In this phase the emphasis is on doing a few simple things well. Quality and utility are important. Aw3 becomes a usable Wiki. Things become less awkward but the more interesting capabilities of the underlying database (time navigation, posting, rollbacks, streaming content and classifiers in general) remain undeveloped. Aw3 becomes a YAW (Yet Another Wiki). My sincerest hope is that we will be done with this phase in another month or two at the most. But it is a good time to learn the basic architecture. And small things of interest here and there will crop up, though they may simply apear to be quirks. In this phase it looks like there is far too much architecture for such a simple thing as a Wiki.

Then finally in phase 3 we realize the potential of the underlying database and framework. Finally that ugly duckling becomes a swan. All those odd parts pull together into something new and wonderful.

Its all been prototyped in Python. In the last 6 years, Norm and I have explored a lot of interesting capabilities. But there were speed limitations which kept us from completing it. And being prototypes, the focus was not on architecture, but on exploring various capabilities.

The architecture of Aw3, in contrast, is quite sound. And we have achieved the speed we need to do things like having a persistant session, where even context changes are saved in the session journal. Our goal then is to build our first production system, integrating all the capabilities we previously explored. And to build a community of developers who have some understanding of the theory it is based on and how to us it to build richer and more natural systems than are possible following conventional software engineering practices.

Bill

0 Comments:

Post a Comment

<< Home