[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