calendar1Add my vote for this tag scheduling2Add my vote for this tag tracker_apps2Add my vote for this tag create new tag
, view all tags


This is a plugin for planning projects and using collaborative maintenance to keep track of the status. It is a rewrite of the original TWiki:Plugins.ProjectPlannerPlugin in an object oriented framework. This allows more generic queries of the data to be done and also removes dependencies on field/column relationships in the data tables. It also removes the need for the PPTASK column in the data tables.



There is a hierarchy of information in the web used by the plugin that will be used for planning:

  • Web - the TWiki web containing all the projects. It is strongly recommended to setup a separate web for project tracking. One web can be used to track multiple products.
  • Project - the project being worked on for a delivarable. Each project has a home page, which contains an auto-generated summary of the project progress.
  • Plan - a project is divided into various plans. Each plan can be thought of as a cohesive feature that can be planned and allocated together.
  • Task - Task is the atomic unit of work. Each plan is divided into multiple tasks. Task is the granularity of work allocated to a developer and scheduled in terms of man days.
  • Developer - a user who is allocated the task.


Creation of pages is recursive, each page has an html form that uses a template to create child pages or a table with defined columns:

  • Projects. You can create a new project page using the html form on the home page for the planning web. You can add additional content to these pages if desired, but do not delete the existing content. This is used to provide high level overviews of schedule progress.

  • Plans. Each Project page has a form for creating plans in addition to the summary of currently entered plans. The template for the Plan page has a table where tasks can be added, allocated and updated.

Note: Project and Plan names have to be WikiWord. Task names may or may not be. However, if Task names are specified as WikiWord, it provides links to add more info about the task and also provides a pretty printed version for online-challenged meetings.

The top level project creation form is displayed by adding the keyword %OOPP{action="allprojects"}% in any page. The creation of plans and addition of tasks are performed in the resulting forms that are generated when a project is created.

Plugin Settings

Plugin settings are stored as preferences variables.

  • One line description, is shown in the TextFormattingRules topic:
    • Set SHORTDESCRIPTION = Planning and status tracking of projects

  • Debug plugin: (See output in data/debug.txt)
    • Set DEBUG = 0
    • Set COMPAT = 1

COMPAT enables the old style variables that the original ProjectPlannerPlugin used. Instead of starting with %PP they start with %OOPP.

Advanced Settings

It is possible to customize the PlanTemplate to have a different layout for the Task Table. The Plugin does not depend on the fields in the template for processing PP tables. Only, "Task Name", "Summary", and "Developer" fields are required for data detection. The Template is only used as a template for creating new plans. This is in contrast to the original ProjectPlannerPlugin which relied on the template for field positions within the tables. Here is a list of required field names for proper reporting:

Name Comment
Task Name Name of the Task, can be a WikiWord to enable adding more info
Summary brief summary for executive consumption
Developer developer assigned to task
Status status of task (not started, in progress, waiting, and done)
Est. Days estimate of man days for the task
Spent Days number of man days already spent

Note: It is advisable to setup a separate web for the project planner and create all projects and plans in that web. Whenever new data is entered into the web, the plugin crunches through all the files in the web to identify files which belong to various projects. This can be slow if the planner is used on a web with a large number of files.

The display variable %OOPP%

There is one variable for this plugin, %OOPP%. It uses parameters to decide what action to take. The parameter action is required in all cases, as that tells the plugin what action to take. Most actions take an optional project and/or plan parameter. These two parameters are comma separated lists of project or plan names used to filter the data displayed. Simple glob style matching with * can be used in these two parameter values. If not specified, all plans and projects are considered.

The two query actions require a query parameter that filter the tasks considered for processing. There are two types of queries, expression and comparison. An expression query follows the form: {field}{op}{perl regular expression} where op is =~ for matching and !~ for non matching.

Comparison queries follow the form {field}{op}{value} where op can be <,<=,==,!=,>, or >=. The field data and value must be a number or a date format understood by the Date::Calc perl module.

Any number of queries can be joined together with && and ||. In this way, the queries can be ANDed or ORed together (&& takes precedence over ||).

Following is a description of available actions and associated parameters (parameters in italics are optional):

action Description Parameters
querysummary Reports done vs. remaining work. Reporting can be grouped by values in a field. Special fields PLAN and ID are available for grouping. plan project query group_by
querydetails Returns a list of task details. Displays all fields unless fields are specified (comma separated) in the display parameter plan project query display
allprojects Displays all known projects  
allprojectsinfo Shows all tasks and task description (if task name is a link) for given project(s) and plan(s) project plan
projectplans Displays all plans in a project with an optional form to create a new plan. Turn the form off with form=0 project form
devsummary Display completion status by developer for given project(s) project
devdetails Task details by developer for given project(s) project
allplans Shows all testplans for given project(s) project
allplanstasksummary Gives a task status summary by plan given a plan(s) and optional task name comma separated list (simple glob expressions allowed) plan task
allprojectstasks Shows all task detail for given project(s) project
planidsummary Task summary grouped by plan ID for given project(s) project

querysummary and querydetails provide almost all the functionality of the others, so try to use them when possible.


%OOPP{action="querydetails" project="FooProject,BarProject" query="Module=~dirtest&&Developer=~unassigned" dislpay="Task Name,Summary,Status"} %OOPP{action="ppquerysummary" query="Module=~dirtest&&Developer=~unassigned" group_by="Priority"} %OOPP{action="ppquerydetails" plan="FooPlan" query="Module=~dirtest&&Developer=~unassigned" display="Task Name,Summary,Status"} %OOPP{action="querysummary" project="BarProject" plan="FooPlan,BarPlan" query="Module=~dirtest&&Developer=~unassigned" group_by="Priority"}

Status Summary Display

  • Handling of the Est Days and Spent Days in Summary Views: The plugin computes cumulative totals based on the status of tasks. Hopefully, the following rules help understand the totals:
    • done status: Spent days is counted. In the event spent days is not specified, Est days is used
    • not started status: It is assumed that any Spent Days is meaningless and the Est Days is used for total days. The Est days will all show up as part of the red bar in status.
    • waiting status: This status says the task is blocked for some reason. Spent Days is used here. This is represented as a blue color bar.
    • in progress status: The Spent Days are used towards the total (and the orange color bar in status).
    • total days: The total count of days, or the total Est Days is made of the Est Days numbers except in cases where Spent Days exceeds Est Days for a task wherein Spent Days will go towards the totals.
    • remaining days: Generally total days minus done, waiting, and in progress days. Shows up as a red bar.

Usage Tips

  • Naming Projects, Plans and Tasks: It is a good idea to name projects, plans and tasks so that you can group them by using wildcards when you want to display summaries and status.

Additional TWiki plugins/changes needed to get this plugin to work at its best

  • The Storable.pm module must be installed in the Perl installation used by the Twiki server.
  • The Date::Calc::Object module must be installed in the Perl installation used by the Twiki server.
  • EditTablePlugin is used to simplify entering of tasks by using an EditTable template.
  • TablePlugin is optional but useful as it allows you to sort tabulated information by column

Warning: as noted in OoProjectPlannerPluginDev, does not work on TWiki 4.0 (yet?) -- SeanCMorgan - 25 Oct 2007

Plugin Installation Instructions

  • This plugin has only been tested with the 01Feb2003 TWiki release.
  • Download the ZIP file from the Plugin web (see below)
  • the default ZIP installs in the TWiki common directory. it is advisable to create a separate web for the project planner and copy the Template files to that directory.
  • Unzip OoProjectPlannerPlugin.zip in your twiki installation directory. Content:
File: Description:
data/TWiki/OoProjectPlannerPlugin.txt Plugin topic
lib/TWiki/Plugins/OoProjectPlannerPlugin.pm Plugin Perl module
lib/TWiki/Plugins/OoProjectPlannerPlugin/Plan.pm Plan class for plugin
lib/TWiki/Plugins/OoProjectPlannerPlugin/Task.pm Task Class for plugin

NOTE: The ProjectTemplate.txt and PlanTemplate.txt files need to be copied to the appropriate yourweb web or you will see a blank page when you create the Project from the PPALLPROJECTS tagged page.

Installation test

  • If installed correctly you should see the following content between the two horizontal lines below - a title "All Projects" and a single cell table with the field containing the word "Project", and finally an html form to add a new project (dont use this form from here though!) You should also see a small summary table for data contained in this topic at the bottom.

%OOPP{action="allprojects"}% %OOPP{action="querysummary" plan="OoProjectPlannerPlugin" query="Devloper=~.*" group_by="Env"}%

Plugin Info

Plugin Author: TWiki:Main/AndrewBarber
Plugin Version: 15 Dec 2005 (V1.003)
Change History:  
02 Aug 2004: Initial version
TWiki Dependency: $TWiki::Plugins::VERSION 1.024
CPAN Dependencies: Storable.pm Date::Calc::Object
Other Dependencies: none
Perl Version: 5.005
License: GPL (GNU General Public License)
TWiki:Plugins/Benchmark: GoodStyle nn%, FormattedSearch nn%, OoProjectPlannerPlugin nn%
Plugin Home: http://TWiki.org/cgi-bin/view/Plugins/OoProjectPlannerPlugin
Feedback: http://TWiki.org/cgi-bin/view/Plugins/OoProjectPlannerPluginDev
Appraisal: http://TWiki.org/cgi-bin/view/Plugins/OoProjectPlannerPluginAppraisal

Related Topics: TWikiPreferences, TWikiPlugins, DefaultPlugin


PP Plan Project OoProjectPlannerPlugin
PP Plan Summary Example PLan
PP Plan Id(s) 0

Tasks in this Plan

Num Task Name Summary Env Module Developer Priority Status Due Date Est. Days Spent Days Est. Effort Results_Comments Date Added Key Milestone
1 BASIC basic data movement other other   none not started       100 no actual work for this item 2005-11-09 none
2 CLOCK all freq combos env1 dirtest   high in progress   3 1 100   2005-11-09 none
3 CLOCK.P all freq combos, C-states env3 dirtest   high cancelled   2   100   2005-11-09 none
4 SYSREQ.1 mdReq back-to-back env1 dirtest   none done   1   100   2005-11-09 none
5 SYSREQ.2 mdReq back-to-back other other   none in progress   4 6 100 this is the same as #4 above 2005-11-09 none
6 SYSREQ.3 CmdCancel env2 other   none not started       100 not known 2005-11-09 none
7 BUFFER.REQ XBR to wrdata req buffer env2 dirtest   low not started   1   100   2005-11-09 none
8 BUFFER.DATA.1 XBR data buffer env3 dirtest   none not started   1   100   2005-11-09 none
9 BUFFER.DATA.2 XBR to data buffer env3 dirtest   medium not started   1   100   2005-11-09 none
10 FIFOS checker on FIFO depth other other   none not started       100   2005-11-09 none

-- TWiki:Main.AndrewBarber - 15 Nov 2005

Topic attachments
I Attachment History Action Size Date Who Comment
Compressed Zip archivezip OoProjectPlannerPlugin.zip r7 r6 r5 r4 r3 manage 25.8 K 2008-01-02 - 18:15 AndrewBarber Upgraded to work with TWiki 4.0
Edit | Attach | Watch | Print version | History: r12 < r11 < r10 < r9 < r8 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r12 - 2008-01-02 - AndrewBarber
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.