TaskJuggler
Encyclopedia
TaskJuggler is GPL-licensed (free software
) project management software
that runs under the Linux
and Unix
operating systems and is programmed in C++
using the Qt toolkit
and KDE
libraries. The TaskJuggler Project was started in 2001 by Chris Schläger. Early releases provided a command line tool that generated HTML reports. Since August 2005, the package also provides a graphical front-end based on the KDE libraries.
TaskJuggler III was released on 5 July 2010. It is completely re-implemented version of the TaskJuggler 2.x series and written in Ruby
.
language. The textual document consists of a root project file and the contents of sub-files incorporated by means of the
The TJP is a declarative document. The focal objects are tasks, resources, reports, scenarios, and scheduling constraints applied to tasks and resources. There is also a rudimentary facility to describe accounts and accrue costs and expenses. Project progress can be tracked by declaring task completeness properties (as a percentage) or resource booking properties which associate resources to tasks for specific durations, which can be used to generate schedule projections.
TaskJuggler functions as a report compilation tool. When the TJP is edited, new reports on the state of the project are generated by running the TJP compiler from scratch. The TJP compiler includes a scheduling component based on a heuristic algorithm. TaskJuggler is able to generate a wide variety of reports including Gantt and Pert based on report declarations within the TJP. The TaskJuggler compiler is able to handle large projects with over 10,000 tasks, 1000 resources, and complex constraints.
TaskJuggler presently contains (as of version 2.3.0) no provision for generating a minimal schedule change from an existing schedule projection based on a hypothetical input, such as "what if I assign Bob for four hours to the documentation task?". One can, however, feed desired elements from one projection output back into the TJP as additional constraints as fixed assumptions relative to further refinements of the schedule projection. Iterative constraint refinement is a powerful technique, but lacks the immediacy of incremental recalculation in a spreadsheet
when used in a similar capacity as a financial projection tool.
The textual project description sets TaskJuggler apart from other project management programs. It allows the user to focus on the work breakdown structure
, task priorities and dependencies, the given resources and their availability. Based on the provided constraints TaskJuggler computes a schedule for the given task items. The built-in load balancer honors working hours and levels resource usage automatically. TaskJuggler computes task intervals, allocation times for every resource, and a profit/loss analysis for the project. These results can then be turned in a large number of reports by using a filtering mechanism that can be used to restrict the information to the subset to be presented.
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
) project management software
Project management software
Project management software is a term covering many types of software, including estimation and planning, scheduling, cost control and budget management, resource allocation, collaboration software, communication, quality management and documentation or administration systems, which are used to...
that runs under the Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
and Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
operating systems and is programmed in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
using the Qt toolkit
Qt (toolkit)
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
and KDE
KDE
KDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
libraries. The TaskJuggler Project was started in 2001 by Chris Schläger. Early releases provided a command line tool that generated HTML reports. Since August 2005, the package also provides a graphical front-end based on the KDE libraries.
TaskJuggler III was released on 5 July 2010. It is completely re-implemented version of the TaskJuggler 2.x series and written in Ruby
Ruby (programming language)
Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...
.
Approach
A TaskJuggler project is a textual document written in a domain-specific declarative programmingDeclarative programming
In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish, rather than...
language. The textual document consists of a root project file and the contents of sub-files incorporated by means of the
include
keyword (property in TaskJuggler lingo), to one or more levels. The TaskJuggler language reference refers to the project definition source document somewhat loosely as The TJP File. This discussion refers to the project definition source document simply as the TJP.The TJP is a declarative document. The focal objects are tasks, resources, reports, scenarios, and scheduling constraints applied to tasks and resources. There is also a rudimentary facility to describe accounts and accrue costs and expenses. Project progress can be tracked by declaring task completeness properties (as a percentage) or resource booking properties which associate resources to tasks for specific durations, which can be used to generate schedule projections.
TaskJuggler functions as a report compilation tool. When the TJP is edited, new reports on the state of the project are generated by running the TJP compiler from scratch. The TJP compiler includes a scheduling component based on a heuristic algorithm. TaskJuggler is able to generate a wide variety of reports including Gantt and Pert based on report declarations within the TJP. The TaskJuggler compiler is able to handle large projects with over 10,000 tasks, 1000 resources, and complex constraints.
Non-incremental projection
A common feature of compilation tools shared by TaskJuggler is that future compilations (reports) do not necessarily reflect past outputs, even where the inputs are extremely similar. Any change to the project state as declared in the TJP can potentially result in a completely new schedule assignment being generated.TaskJuggler presently contains (as of version 2.3.0) no provision for generating a minimal schedule change from an existing schedule projection based on a hypothetical input, such as "what if I assign Bob for four hours to the documentation task?". One can, however, feed desired elements from one projection output back into the TJP as additional constraints as fixed assumptions relative to further refinements of the schedule projection. Iterative constraint refinement is a powerful technique, but lacks the immediacy of incremental recalculation in a spreadsheet
Spreadsheet
A spreadsheet is a computer application that simulates a paper accounting worksheet. It displays multiple cells usually in a two-dimensional matrix or grid consisting of rows and columns. Each cell contains alphanumeric text, numeric values or formulas...
when used in a similar capacity as a financial projection tool.
Advantages
The TaskJuggler design frees the project manager to focus on information that is known about the project at any stage of the project. TaskJuggler then turns this information into meaningful reports and charts. It supports the project manager in all phases of a project, from the initial idea, to effort estimation, budgeting and status tracking.The textual project description sets TaskJuggler apart from other project management programs. It allows the user to focus on the work breakdown structure
Work breakdown structure
A work breakdown structure , in project management and systems engineering, is a deliverable oriented decomposition of a project into smaller components. It defines and groups a project's discrete work elements in a way that helps organize and define the total work scope of the project.A work...
, task priorities and dependencies, the given resources and their availability. Based on the provided constraints TaskJuggler computes a schedule for the given task items. The built-in load balancer honors working hours and levels resource usage automatically. TaskJuggler computes task intervals, allocation times for every resource, and a profit/loss analysis for the project. These results can then be turned in a large number of reports by using a filtering mechanism that can be used to restrict the information to the subset to be presented.