Open main menu

TaskJuggler

Revision as of 09:53, 29 December 2018 by 127.0.0.1 (talk) (This changes nothing)

under construction

I wrote this page in 2008. The software has changed a lot since then.


TaskJuggler - project management tool to plan and track projects, resources, tasks, costs and deliverables. TaskJuggler is written in Ruby and leverages parts of the KDE environment. Original code came from SUSE Linux in Germany (now Novell). The software is used by many people/organizations like AMD and there is good support in the active forums and mailing lists. Source code is maintained on GitHub.

There is a new version - TaskJuggler III - that is in beta now, and the system is a complete rewrite of the C++ system in ruby, maintained in a git repository instead of Subversion. The project is still maintained by Chris Schlaeger.

Unfortunately, it does not appear that there is any QT4 development work going on, so it remains doubtful when we'll see TaskJuggler in KDE4 -- however the 2.4 version is available in Ubuntu repos and appears to work as before (so perhaps it's not dependent on KDE3)

Using TaskJuggler

The GUI application front-end is called specifically TaskJugglerUI while the commandline tool is taskjuggler. Aside from managing all aspects of a project including calendars, dependencies, costs and scenarios, the software provides HTML reports that make it very convenient to communicate the project status easily. The software is based on KDE, and as such has a great deal in common with the Quanta or Kate editing enviroments. Still, you may find it useful to edit the files in the full-blown Quanta or Kate. See the Contribs section for more info on using an external editor.

Training

is a complete set of slides used in the TaskJuggler training workshop.

Help

There is extensive help distributed with the application and available online in HTML format. From inside the application, you can press F1 to launch the KDE Help Center. The equivalent command line would be khelpcenter file:/usr/share/doc/kde/HTML/en/taskjuggler/index.html The tutorial included inside the application help also provides complete example project files.

Cheatsheet

Assigning the effort, duration and length of a particular task is fundamental to getting the right results.

effort
is a measure of how much a person must do. Warning to project managers and estimators: effort 10d does NOT equal 5d when you have two resources to divide up the task. The software will let you say so, but that doesn't make it reality. The ONLY time this is reality is if the effort can be partitioned without adding ANY overhead. For more information, read "The Mythical Man-Month" by Frederick P. Brooks, Jr.
length
is a measure in working days I.e. length 20d = 1 month
duration
is a measure in calendar days I.e. duration 30d = 1 month
interval
is similar to duration with specific start and end dates. There is no keyword, you just specify (or inherit) the start date and specify the end date. E.g. start 2007-05-01 end 2007-05-15

In the Logical Expressions supported by TaskJuggler, the tilde character means 'NOT' e.g.

icalreport "drupalProjectGregIcalReport.ics" {
# Only export tasks that Greg is assigned to
hidetask ~isDutyOf(Greg, plan)
}

In the dependency scoping, it is normal to use a relative reference so that sections are more easily portable throughout the project definition. The notation for relative references is to use the exclamation character '!' to mean one level up. The ! carries exactly the same meaning as ../ in filesystem notation. In addition to relative references, object paths are represented using '.' dot notation. E.g.

depends !!implementation.gui.theming

One approach to balancing resource loads is to use the limits property right in the allocation. You can also define limits in the resource defintion, or you could adjust (artificially) workinghours

task baseActivities "Baseline Activities" {
effort 3000h
start 2008-04-01
allocate GregRundlett { mandatory limits { dailymax 4h } }
allocate SallyStar { mandatory limits { dailymax 4h } }
allocate JoeDoe { mandatory limits { dailymax 4h } }
}

Files

.tjp 
The TaskJuggler project file will have the .tjp extension.
.tji 
Since projects can be defined so as to include other resources, those include files are named .tji.
.tjx 
created by the report function, these are the (compressed) XML versions of the source data

XML

Using the XML report function, you can export the project into XML format (identified with the .tjx extension). These XML files are actually compressed (with gzip). Thus, in order to edit them directly you would need to uncompress them and give it an .xml extension gunzip -S tjx --stdout myProject.tjx > myProject.xml or zcat myProject.tjx > myProject.xml The TaskJuggler DTD defines the XML syntax. The application can read either the tjp source or tjx source files equivalently.

Once you have the XML source, you can use any XML editor like Kate or Quanta as an editing interface rather than the TaskJuggler software. When finished, you need to convert the XML source back into tjp syntax, and I haven't found a script or XSL to do that yet

Integration

VI

For instructions on setting up syntax highlighting so that Vi 'knows' about TJP and TJI syntax, see Syntax Highlighting

FreeMind

FreeMind is a mind mapping tool that can be used to quickly break down and organize the things that need to happen in a project (aka the Work Breakdown Structure or WBS). FreeMind has built-in ability to export nodes as TaskJuggler include files. Just name the node TASKS or RESOURCES and use the File->export menu option. Then include the resulting files in your TaskJuggler project. See http://freemind.sourceforge.net/wiki/index.php/FreeMind_0.9.0:_The_New_Features#TaskJuggler_Integration

Wiki

To manage projects in a bottom-up fashion, you could create a wiki template or series of templates that allow participants to view and define the project plan in a medium that enables collaboration, cross-referencing to support and linking to other resources by all project participants. At any given moment, you can then take these defined tasks from the wiki and roll them up into a TaskJuggler file. Conversely, you could take a top-down approach by defining tasks in TaskJuggler and publish that information via (XML) export to the wiki


<!-- template guide -->
{{task
| id = myProject  
| name = "Distribute Free Software to 400,000 in India"
| account =
| allocate =
| complete = 
| depends = 
| duration = 
| effort = 100d
| endbuffer = 
| endcredit = 
| end = 
| flags = 
| journalentry = 
| length = 
| maxend = 
| maxstart = 
| milestone = 
| minend = 
| minstart = 
| note = 
| period = 
| precedes = 
| priority = 
| projectid = 
| purge = 
| reference = 
| responsible = 
| scheduled = 
| scheduling = 
| shift = 
| startbuffer = 
| startcredit = 
| start = 
| statusnote = 
| supplement =
| task =}}
 

Extensions / Contribs

See the source code for contributed code that extends the application e.g. /usr/local/src/taskjuggler-2.2.0/Contrib/ There are Contribs for

  • emacs
  • kate
  • tjGUI
  • TJ-Pert
  • tjx2gantt
  • vim

So, in the case of Kate, there is a DTD that defines the markup structure so that Kate can easily assist you in editing the file

There is also a similar DTD available for Quanta Download it, extract it into the DTEP directory and you can use it on .tjx files. (.tjx files are compressed. See the note in the files section)

There is also a website page http://www.taskjuggler.org/contrib.php that lists some resources which are not distributed with the source code

Example Project File

http://www.taskjuggler.org/manual-svn/example.html shows this example file (presented here with syntax highlighting)