Planning with Org-Mode and Taskjuggler

Table of Contents

End result: https://wiki.malloc.dog/Plan.html

In the past few weeks I've been trying to game out how to proceed with graduate school alongside work, as well as any additional skills I want to acquire along the way, such as an EMT certification and language skills. All of these have different schedules and requirements, which pushed me towards finding a tool that could visualize all of this for me, preferably in a Gantt chart.

My requirements were:

Previous tools I've used:

Weirdly, I found out that org-mode natively supports gantt chart generation via Taskjuggler (tj3). Even better than that, tj3 can dump out portable html files.

1. Installation Notes

tj3 is relatively easy to install, use the ruby gem management to download it, and set the path within emacs. This looks like:

gem install --local taskjuggler

which will install it into where the ruby gems page is setup.

Tutorials for emacs are pretty easy to find as well, with the two I used being:

There's a emacs mode for it as well, which supports basic syntax highlighting and not much else: http://www.skamphausen.de/cgi-bin/ska/taskjuggler-mode.

Strangely, org-mode supports tj3 out of the box: https://github.com/emacsmirror/org/blob/master/contrib/lisp/ox-taskjuggler.el.

After setting it up (which basically amounts to adding (require 'ox-taskjuggler)), the only other configuration change needed is the org-taskjuggler-process-command option and point that towards the tj3 path.

2. Quirks

For the most part, the tutorials cover taskjuggler pretty well. I was able to get an org tree into https://wiki.malloc.dog/Plan.html with only around 30 min of work. However, I found two main quirks:

  • The org-deadline property is used for the deadline in tj3, but the org-scheduled property is not used to determine task start. Funnily enough, it uses the :start: property for that.
  • Default project length is 280 days, which must be manually set at the top with the SCHEDULED and DEADLINE properties.

These were a little unintuitive, but looking at the ox source (https://github.com/emacsmirror/org/blob/master/contrib/lisp/ox-taskjuggler.el#L206) gives pretty good insight.

Overall, I'm pretty happy with this setup, it's pretty painless and requires minimal code. Exporting to a HTML file makes it even more portable, and I like the cross-platform appeal of this, as opposed to a strict webapp or a OS X app.

Source org file I'm using:

* Resources                                            :taskjuggler_resource:
** Classes
*** Class 1
    :PROPERTIES:
    :resource_id: class1
    :END:

*** Class 2 (Audit/No Credit)
    :PROPERTIES:
    :resource_id: class2
    :END:

*** Out of Band Learning
    :PROPERTIES:
    :resource_id: other
    :END:

*** Thesis & Publications
    :PROPERTIES:
    :resource_id: thesis
    :END:

*** Fellowships & Applications
    :PROPERTIES:
    :resource_id: fellowships
    :END:


* Grad School                                           :taskjuggler_project:
  SCHEDULED: <2020-07-01 Wed> DEADLINE: <2023-05-31 Wed>
  :PROPERTIES:
  :ALLOCATE_ALL: class1 class2 other thesis fellowships
  :END:

** EMT Training
*** Wilderness First Responder Training
    DEADLINE: <2020-08-31 Mon>
    :PROPERTIES:
    :START:    2020-08-20
    :EFFORT:   10d
    :ALLOCATE: other
    :END:
*** Wilderness EMT
    :PROPERTIES:
    :START:    2021-01-04
    :EFFORT:   20d
    :ALLOCATE: other
    :BLOCKER:  previous-sibling
    :ORDERED:  t
    :END:
** Scholarships
*** Summer FLAS Preparation 2021
    :PROPERTIES:
    :START:    2020-10-15
    :EFFORT: 75d
    :ALLOCATE: fellowships
    :task_id: summer_2021_flas
    :END:
*** Summer FLAS Preparation 2022
    :PROPERTIES:
    :START:    2021-10-15
    :EFFORT: 75d
    :task_id: summer_2022_flas
    :ALLOCATE: fellowships
    :END:
*** Apply to ICWA
    :PROPERTIES:
    :EFFORT:   30d
    :ALLOCATE: fellowships
    :START:    2022-09-01
    :END:

*** Apply to Fulbright
    :PROPERTIES:
    :START:    2022-09-01
    :EFFORT:   30d
    :ALLOCATE: fellowships
    :END:
** Paper
*** Finish Up Nationalism Paper
    :PROPERTIES:
    :START:    2020-09-01
    :EFFORT:   75d
    :ALLOCATE: thesis
    :END:

*** Paper Publishing
    :PROPERTIES:
    :ALLOCATE: thesis
    :START:    2021-01-01
    :EFFORT:   75d
    :BLOCKER:  previous-sibling
    :ORDERED:  t
    :END:

** Thesis
*** Thesis Construction
    :PROPERTIES:
    :START:    2022-01-25
    :EFFORT:   75d
    :ALLOCATE: thesis
    :END:

*** Thesis Research
    :PROPERTIES:
    :ALLOCATE: thesis
    :START:    2022-05-30
    :EFFORT:   150d
    :END:

*** Thesis Independent study
    :PROPERTIES:
    :START:    2023-01-25
    :EFFORT:   75d
    :ALLOCATE: thesis
    :END:

** Fall 2020 - 16 Credits
*** Problems and Methods
    :PROPERTIES:
    :start: 2020-09-01
    :EFFORT: 75d
    :ALLOCATE: class1
    :END:
*** Audit Elective - Mobility in the Middle East?
    :PROPERTIES:
    :start: 2020-09-01
    :EFFORT: 75d
    :ALLOCATE: class2
    :END:
** Spring 2021 - 20 Credits
*** History of the Middle East
    :PROPERTIES:
    :START:    2021-01-25
    :EFFORT:   75d
    :ALLOCATE: class1
    :END:
*** Audit Elective
    :PROPERTIES:
    :START:    2021-01-25
    :EFFORT:   75d
    :ALLOCATE: class2
    :END:

** Summer 2021
*** Summer Language, Iraqi Arabic?
    :PROPERTIES:
    :START:    2021-05-30
    :EFFORT:   35d
    :ALLOCATE: class2
    :BLOCKER: summer_2021_flas
    :task_id: summer_2021_lang
    :END:

** Fall 2021 - 24 Credits
*** Elective - DDR related
    :PROPERTIES:
    :START:    2021-09-01
    :EFFORT:   75d
    :ALLOCATE: class1
    :END:
** Spring 2022 - 28 Credits
*** Elective - DDR related
    :PROPERTIES:
    :START:    2022-01-25
    :EFFORT:   75d
    :ALLOCATE: class1
    :END:
** Summer 2022
*** Summer Language, Farsi/French/Spanish?
    :PROPERTIES:
    :START:    2022-05-30
    :EFFORT:   35d
    :ALLOCATE: class2
    :BLOCKER: summer_2022_flas
    :END:
*** NOHA+ preparations
    :PROPERTIES:
    :START:    2022-05-30
    :EFFORT:   30d
    :ALLOCATE: class2
    :END:
** Fall 2022 - 32 Credits
*** Elective - DDR related
    :PROPERTIES:
    :START:    2022-09-01
    :EFFORT:   75d
    :ALLOCATE: class1
    :END:
** Spring 2023 - Graduation
   :PROPERTIES:
   :START:    2023-05-31
   :END:

Posted: 2020-06-11
Filed Under: N/A