Planning with Org-Mode and Taskjuggler

Table of Contents

End result: https://wiki.space.af/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.space.af/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