[thor] Proposed Thor changes

Jason M. Felice jfelice at cronosys.com
Sun Feb 29 11:53:13 PST 2004


On Sun, Feb 29, 2004 at 06:29:26PM +0100, Carlos Pedrinaci wrote:
> Given that definition of what an Objective is I think that we could see
> a Project (from the Plan point of view) as:
> 
> * Project-Plan:
> ---------------
> A Project-Plan is composed of (0..*) Project-Plans (of its Sub-Projects
> if any) and (1..*)Objectives.

Here's another possibility which might be simpler: Perhaps we just have
projects and sub-projects, but we have different project templates or
types.  So we can have a "Software Change" project type which has all of
the appropriate fields, and we can have a "New Program" project type
which has all the CVS repository/OS type/Language/etc. fields.  (BTW, I
would suggest using the Trove categories for all of this information like
Freshmeat does).  Then we could create new project types like "Simple
Website," "Documentation Authoring," etc.

This would mean that when I modify Hermes, people should just choose the
most specific project possible to enter time on (as opposed to separate
code for objectives and projects).

> There may exist the typical relations between them (End-End, Start-End,
> etc..).
> Every Project-Plan has a set of costs estimations and may have some
> "known costs".
> These are all derived from the Project-Plans and Objectives that compose
> the current Project-Plan.

I just had an idea of a class heirarchy where projects are really just
containers which can contain other thor objects, and we have a generic
thor object and derive from it like Thor_Resource::, Thor_Task::,
Thor_Ticket::, Thor_Expense::, Thor_Milestone::.  This way a project is
really like a tree of objects.

I don't know if that's a useful idea, but it just occurred to me.

> 
> * Objective:
> ------------
> An Objective is composed of (0..*)Objectives and (1..*)Tasks (Nag Tasks)
> It has also these pieces of information:
> >   * Description of problem
> >   * Description of solution
> >   * Estimated number of hours to implement.
> >   * Test script (human-readable instructions on how to prove that the
> >     modification was made and works)
> >   * Estimated number of quality assurance hours.
> >   * Required resources (conference rooms, projectors, particular
> >     employee (Joe Fabetes), or a class of employee (Web Designer) etc.)
> >   * The objective's history (using Horde_History::)
> >   * Business case information about the objective (estimated ROI, net
> >     present value, how the return is generated e.g. labor savings or
> >     revenue increase or increased accuracy, etc.)
> >   * The objective's state (e.g. "initial", "agreed", "completed",
> >     "in progress", "cancelled")
> >   * Required expenses (e.g. hardware purchases).
> >   * Dependencies (on other objectives). 
> 
> See that I clearly make the difference between a Project and a
> Project-Plan as I also want Thor to serve as a Project Repository a la
> SourceForge.

How about calling them "programs" and "projects" instead of "projects"
and "project-plans"?

If we used the above model, we could have a "Thor_CVS_Resource::" object
that you could throw into a project-plan container.  When the project is
approved, all objects get notified of the state change, and the
"Thor_CVS_Resource::" could create the CVS repository at that point.
You could throw multiple CVS resources into a project-plan if you wanted
to.

> 
> I'm not sure about whether the fields you want to add to the Project
> should be part of the Project itself or part of the Project-Plan. I tend
> to see them more as part of the Project-Plan mainly because that
> information strongly depends on the company. We should allow some sort
> of customization for that... but this doesn't seem obvious to achieve.

If we do some sort of project-plan template thingy, then we could set up
custom fields per template in an admin screen (similar to whups does per
module).

Alternately, if we did the container/generic object model, we could have
a "Thor_Attribute::" object that you could throw into a container.

-- 
 Jason M. Felice
 Cronosys, LLC <http://www.cronosys.com/>
 216.221.4600 x302


More information about the thor mailing list