[kplato] Recent progress?

John Lamb kplato@kde.org
Sun, 16 Feb 2003 18:11:53 +0000


Has there been any progress recently on kplato?

I did a CVS build a few days ago and it certainly seems to have improved 
since I last looked. From what I can see, there is not too much to do to 
get kplato to do something useful.

I see two things that are needed to get kplato to the stage where it 
could do a simple project plan.

1. The GUI needs to allow relations between nodes: i.e. to specify that 
node A (a task, milestone, etc.,) must be done befor node B. I don't 
know what the best way of specifying this within the GUI is, but it 
shouldn't be hard to represent in XML or using KPTRelation.

2. (Some) nodes must have some time specification: a KPTDuration or 
better a Distribution. Initially, a Fixed distribution could be used, 
but later distributions such as Pert (5th percentile, median, 95th 
percentile), Beta, etc., could be used. The GNU Scientific library 
already has most of the code we'd need.

The DTD probably needs some fixing. Although it's probably sensible for 
the GUI to call all nodes tasks this may not be the best representation 
in the DTD because durations are calculated in different ways. I'd 
suggest either

<!ELEMENT node (project|node|task|milestone|relation|resource)*>

and

<!ELEMENT task (distribution|relation|resource)*>

The logic of this is that calculations need to be done recursively 
through the work breakdown structure, starting with the top-level 
project. Nodes (here I'm suggesting tasks) that have no subnodes would 
need to contain a duration (through a distribution). Other nodes just 
calculate values as needed. As an analogy, think of the factorial 
function. Nodes are like positive integers, tasks like zero. The 
function can be defined recursively but there must be different 
treatment for zero so that recursion stops.

An alternative might be to call everything in XML a task:

<!ELEMENT task (project|task|milestone|relation|resource)*|distribution)>

This might reflect better the idea that a task could be broken down 
infinitely. When a subtask is added, the distribution is no longer needed.

I think the terminal nodes are not needed in the DTD. They are just an 
artefact needed for CPM calculations and both can be created as needed 
from the rest of the project definitions.

I'm happy to help with code (at least concept code ;-)) for anything 
that's needed. Either GUI code or code for the algortithms, though I 
have to admit I've never liked writing GUIs much, even in Qt, which is 
the only thing I've seen in C++ comparable to Java's elegance.


-- 
JDL