Über unsMediaKontaktImpressum
Dirk Deimeke 22. August 2017

Taskwarrior – Aufgabenverwaltung auf der Kommandozeile

Taskwarrior ist eine Software, die leicht zu erlernen, sehr mächtig und schnell ist. © Taskwarrior
© Taskwarrior

Es gibt kaum etwas individuelleres als Zeit- und Selbstmanagement. Über das Thema sind viele Bücher geschrieben worden, ebenso viele unterschiedliche Methoden und Techniken sind im Umlauf. Dabei geht es zumeist um Selbstmanagement und nicht um Zeitmanagement. Zeit kann man nicht managen, nur den sinnvollen Umgang mit ihr. Jeder Tag hat für jeden Menschen die gleiche Länge, daran ändert keine Zeit-"Management"-Methode etwas.

Erst, wenn man verschiedene Techniken kennt, ist man auch in der Lage, die passende Methode oder – besser – den passenden Methodenmix für sich zusammenzustellen. Auch sollte man nicht die Zeit- und Selbstmanagementmethode nach dem Werkzeug auswählen, sondern sich viel mehr für ein System entscheiden und danach das passende Werkzeug suchen. Wenn man sich allerdings für ein Werkzeug entscheidet, dann ist es wichtig, dass ein Tool unabhängig von der gewählten Methode funktioniert. Die eigene Arbeitsweise ist einem stetigen Wandel unterworfen.

Dieser Artikel wird mit "Taskwarrior" ein einfaches und zuverlässiges Selbstmanagement-Tool vorstellen, welches ohne Graphical User Interface (GUI) auskommt, weil es nur in der Kommandozeile stattfindet.

Das richtige und passende Werkzeug

Das richtige Werkzeug zum Zeit- und Selbstmanagement [1] hat meiner Ansicht nach die folgenden sechs Eigenschaften:

  • Es ist immer dabei.
  • Es ist zuverlässig.
  • Es ist unabhängig von der Methode, die ich verwenden möchte.
  • Es steht nicht im Weg.
  • Es lenkt den Fokus auf wenige Aufgaben, die es zu erledigen gilt.
  • Es ist ein Werkzeug, das ich gerne benutze.

Kleiner Check: Welche Anforderungen haben Sie an ein Werkzeug, dass Sie unterstützen soll?

Aufgabenverwaltung auf der Kommandozeile?

Selbst die hartnäckigsten Kommandozeilennutzer unter meinen Kollegen halten mich für einen Sonderling, weil sie sich nicht vorstellen können, ihre Aufgaben auf der Kommandozeile zu verwalten. Welchen Vorteil bringt es nun für mich, ein entsprechendes Werkzeug einzusetzen?

Es erfüllt direkt drei der Eigenschaften, die ich im letzten Abschnitt genannt habe: Ein sehr großer Teil meiner täglichen Arbeit – deutlich mehr als 60 Prozent – findet auf der Kommandozeile statt, damit ist Taskwarrior per Definition schon "immer dabei". Und ich habe – mittels  Termux [2] – auch eine Kommandozeile auf meinem Mobiltelefon und so Taskwarrior immer dabei. Es gibt von einem Drittanbieter eine Android-App [3], die den Kern von Taskwarrior nutzt und einen eigenen Taskserver [4], der zwischen verschiedenen Instanzen synchronisieren kann.

Taskwarrior hat sehr schnelle Antwortzeiten:

$ /usr/bin/time -v task add "Neue Aufgabe"
Created task 206.
        Command being timed: "task add Neue Aufgabe"
...
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
...

Die schnellen Antwortzeiten (im Beispiel 10 ms) führen dazu, dass Taskwarrior nicht im Weg steht.

In meiner Taskwarrior-Datenbank sind rund 7.000 Tasks (die "206" im Beispiel bezieht sich auf "pending tasks", also Aufgaben, die noch erledigt werden müssen). Eine Anzeige, der anstehenden Aufgaben dauert etwa 50 ms.

$ /usr/bin/time -v task next
        Command being timed: "task next"
...
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.05
...

Einfachheit von Taskwarrior

Ein einfaches Beispiel:

$ task add Artikel für Informatik-Aktuell vorbereiten

$ task list

$ task 1 done

Aber es können auch deutlich komplexere Anwendungsfälle abgedeckt werden.

$ task add \
    project:privat.korrespondenz \
    +weihnachten \
    due:2017-12-17T10:00:00Z \
    scheduled:2017-12-01 \
    wait:2017-11-15 \
    until:due +7days \
    Weihnachtskarten verschicken

oder

$ task add \
    project:job.meeting \
    due:eom \
    priority:M \
    +boring \
    +important \
    recurr:monthly \
    Prepare Meeting\

Als User steht man vor der Wahl, die komplexeren Features zu benutzen, Taskwarrior selbst zwingt einen aber nicht dazu.

Philosophie von Taskwarrior

Taskwarrior wird nach einer Philosophie entwickelt, die erklärt, warum in der Vergangenheit bestimmte (Design-)Entscheidungen getroffen wurden und in der Zukunft getroffen werden.

Offenheit

Der Quelltext, die Pläne, die Fehler (Bugs), die Testergebnisse, die Dokumente, die Webseite sind alle frei und der Quelltext steht zur Verfügung ("Open Source"). Die Daten werden im Klartext gespeichert und niemals in einem geheimen Format versteckt.

Reibungsarm

Weder ein Login, lange Startzeiten oder andere Interaktionen sollen dem eigentlichen Ziel im Weg stehen, Informationen zu erfassen.

Keine Sanktionen

Der Benutzer soll nicht durch Performance-Einbußen für Features, die er nicht benutzt, bestraft werden.

Methoden-Unabhängigkeit

Obwohl Methoden wichtig sind, wird bei der Arbeit mit Taskwarrior nicht vorausgesetzt, bestimmte Methoden zu verwenden. Taskwarrior ist so konzipiert, dass unterschiedliche Arbeitsweisen möglich sind und verschiedene Schwerpunkte – wie beispielsweise Prioritäten, Stichdaten oder Abhängigkeiten – gesetzt werden können.

Werkzeugkiste

Die Unterstützung aller Methoden und Arbeitsabläufe bedeutet, dass es eine große Anzahl an Features gibt und niemand erwartet, dass Sie alle nutzen. Taskwarrior ist wie eine Werkzeugkiste, die Ihnen erlaubt, jede Methode zu verwenden. Unterschiedliche Methoden werden jedoch nur einen Teil der Funktionen von Taskwarrior verwenden.

Leicht zu erweitern

Import und Export über den Industriestandard JSON erlaubt es, Daten in Taskwarrior zu importieren oder aus Taskwarrior zu exportieren. Damit können Sie ein Frontend schreiben oder ein übergeordnetes Feature implementieren.

Fokus

Die Software Taskwarrior limitiert gewissenhaft die Funktionen, die von ihr unterstützt werden, so dass der Fokus "eine Sache (nämlich Aufgabenverwaltung) gut zu machen" nicht verloren geht.

Taskwarrior bietet keine Erinnerungen oder Zeiterfassung, weil es andere Software gibt, die diese Features gut umsetzt. Zur Zeiterfassung gibt es vom Taskwarrior-Team den Timewarrior [5].

Wenn eine Funktion die Verwaltung von Aufgabenlisten verbessert, dann gehört sie in Taskwarrior, sonst sollte sie besser in eine andere Software implementiert werden.

"Was man aus einem Projekt heraushält, ist genauso wichtig wie das, was man in einem Projekt erlaubt."

Zuverlässigkeit

Ein wichtiger Punkt aus dem Anforderungskatalog für das Taskwarrior ist Zuverlässigkeit. Durch die Umsetzung der Philosophie – wie beispielsweise Speicherung der Daten im Klartext – besteht auch die Möglichkeit individueller Backups und ebenfalls die Möglichkeit, jederzeit die Daten im Klartext einzusehen.

Funktionen oder Features

Bei den Funktionen und Features möchte ich mich hier insbesondere um die Forderung kümmern, dass ein gutes Werkzeug zur Aufgabenverwaltung den Fokus auf wenige Aufgaben lenkt, die es zu bearbeiten gilt. Der Standardreport in Taskwarrior heißt next, sein Ziel ist es, Ihnen die Aufgaben zu präsentieren, die als nächstes erledigt werden sollen.

Urgency - Dringlichkeit

Der next-Report ist nach Dringlichkeit in absteigender Reihenfolge sortiert. Die berechnete Dringlichkeit ist das Ergebnis einer Berechnung, in die mehr als ein Dutzend verschiedene Faktoren einfließen. Die Gewichtung der einzelnen Faktoren ist frei konfigurierbar. Die Koeffizienten, die die Standardgewichtung ergeben, sind das Ergebnis jahrelanger Erfahrung. Ändern Sie diese bitte nur, wenn sich die Dringlichkeit nicht mit ihrer Einschätzung deckt.

Einer der Faktoren ist das Alter einer Aufgabe. Das Alter hat nur einen sehr geringen Einfluss, wie das folgende Beispiel zeigt. (yesterday steht für den Start – 0:00 Uhr – des gestrigen Tages, today entsprechend für 0:00 Uhr heute).

[dirk@taskwarrior ~]$ task add entry:yesterday Aufgabe Eins
Created task 1.
[dirk@taskwarrior ~]$ task add entry:today Aufgabe Zwei
Created task 2.
[dirk@taskwarrior ~]$ task
[task next]

ID Age   Description  Urg
 1  1d   Aufgabe Eins 0.01
 2 15h   Aufgabe Zwei    0

In der letzten Spalte können Sie sehen, dass Aufgabe Eins etwas dringender gewichtet wird als Aufgabe Zwei.

Das info-Kommando in Taskwarrior gibt Ihnen alle Informationen zu einer Aufgabe und zeigt unter anderem auch, wie der Wert für die Dringlichkeit zu Stande kommt.

[dirk@taskwarrior ~]$ task 1,2 info

Name          Value                              
ID            1                                  
Description   Aufgabe Eins
Status        Pending                            
Entered       2017-07-08 00:00:00 (1d)
Last modified 2017-07-09 15:25:44 (7min)         
Virtual tags  PENDING READY UNBLOCKED
UUID          544ef900-53a0-4f11-a12f-b4a0fa651c6d
Urgency       0.01

    age  0.003 *    2 =  0.005
                        ------
                          0.01


Name          Value                              
ID            2                                  
Description   Aufgabe Zwei
Status        Pending                            
Entered       2017-07-09 00:00:00 (15h)
Last modified 2017-07-09 15:25:49 (7min)         
Virtual tags  PENDING READY UNBLOCKED LATEST
UUID          29d45aa6-e1a7-4bff-8f96-9a6b770839a4
Urgency          0

Der Koeffizient für das Alter hat den Wert 2 (für 365 Tage – ebenfalls konfigurierbar) und erhöht sich für jeden vollen Tag um 2 * 1/365.

Die folgenden Koeffizienten sind im Standard definiert:

[dirk@taskwarrior ~]$ task show urgency

Config Variable                    Value
urgency.active.coefficient         4.0 
urgency.age.coefficient            2.0
urgency.age.max                    365 
urgency.annotations.coefficient    1.0
urgency.blocked.coefficient        -5.0
urgency.blocking.coefficient       8.0
urgency.due.coefficient            12.0
urgency.inherit                    0
urgency.project.coefficient        1.0 
urgency.scheduled.coefficient      5.0
urgency.tags.coefficient           1.0 
urgency.uda.priority.H.coefficient 6.0
urgency.uda.priority.L.coefficient 1.8 
urgency.uda.priority.M.coefficient 3.9
urgency.user.tag.next.coefficient  15.0
urgency.waiting.coefficient        -3.0

Wenn eine Aufgabe Anmerkungen hat, einem Projekt zugewiesen ist, einen Tag zugewiesen hat oder ein Stichtermin eingetragen wurde, wird das in den entsprechenden Koeffizienten berücksichtigt. Eine Aufgabe, die eine andere blockiert, wird höher bewertet und sollte vor der Aufgabe, die blockiert wird, erledigt werden.

Die Prioritäten High, Medium und Low werden genauso berücksichtigt, wie ein manuell gesetzter Tag next, der die Dringlichkeit um ganze 15 Punkte verändert.

Eine tiefer gehende Einführung in die Berechnung der Dringlichkeit findet man auf der Webseite zum Thema Urgency [6].

Wait – Aus den Augen, aus dem Sinn

Das Setzen eines Wait-Datums (oder sogar Zeit) ist eine weitere Möglichkeit, die Aufgabenliste übersichtlich zu halten. Alle Datumsformate sind frei definierbar, im Standard unterstützt Taskwarrior neben den selbst definierten Formaten noch das ISO-8601-Format [7].

Wenn Sie mittels folgendem Kommando das Wait-Datum auf den 24.12.2017, 0:00 Uhr setzen, wird Ihnen die Aufgabe nicht mehr angezeigt bis das Wait-Datum verstrichen ist.

[dirk@taskwarrior ~]$ task 1 mod wait:2017-12-24
Modifying task 1 'Aufgabe Eins'.
Modified 1 task.

[dirk@taskwarrior ~]$ task
[task next]

ID Age   Description  Urg
 2 15h   Aufgabe Zwei    0

1 task

Diese Modifikation können Sie sich natürlich auch mit dem Info-Befehl wieder anzeigen lassen. Beachten Sie bitte auch, dass sich der Dringlichkeitswert entsprechend verändert hat.

[dirk@taskwarrior ~]$ task 1 info

Name          Value                              
ID            1                                  
Description   Aufgabe Eins
Status        Waiting                            
Entered       2017-07-08 00:00:00 (1d)
Waiting until 2017-12-24 00:00:00                
Last modified 2017-07-09 15:48:30 (59s)
Virtual tags  UNBLOCKED WAITING                  
UUID          544ef900-53a0-4f11-a12f-b4a0fa651c6d
Urgency       -2.995                             

    waiting      1 *   -3 =     -3
    age      0.003 *    2 =  0.005
                            ------
                            -2.995

Date                Modification                              
2017-07-09 15:48:30 Wait set to '2017-12-24 00:00:00'.        
                    Status changed from 'pending' to 'waiting'.

Da die wartenden Aufgaben nicht für immer – respektive bis zum Zieldatum – verschollen sein sollen, gibt es den waiting-Report, der Ihnen alle wartenden Aufgaben anzeigt.

[dirk@taskwarrior ~]$ task waiting

ID Age  Wait       Remaining Description
 1 1d   2017-12-24      5mo  Aufgabe Eins

1 task

Anmerkung: Intern speichert Taskwarrior alle Datumsfelder als verstrichene Sekunden seit dem 01.01.1970 ("The Epoch"), was auch "Unix-Zeit" genannt wird. Erst bei der Darstellung wird dieser Sekundenwert auf Ihre Zeitzone umgerechnet.

Recurrence - Wiederkehrende Aufgaben

Taskwarrior erlaubt es Ihnen auch, wiederkehrende Aufgaben zu erstellen. So sorgt beispielsweise das folgende Kommando dafür, dass allmonatlich eine Aufgabe "Miete zahlen" erstellt wird, der Ende des Monats fällig ist.

[dirk@taskwarrior ~]$ task add due:eom recur:monthly Miete zahlen
Created task 3 (recurrence template).

[dirk@taskwarrior ~]$ task
[task next]

ID Age   Recur Due  Description  Urg
 4     -  P30D 3w   Miete zahlen  2.4
 2 15h              Aufgabe Zwei    0

2 tasks
Creating recurring task instance 'Miete zahlen'

Intern wird dazu eine Musteraufgabe angelegt, die bei jedem Verstreichen des Stichtermins eine neue Aufgabe mit dem neuen Stichtermin für den Folgemonat anlegt.

Das eom im Beispiel steht für end of month. Taskwarrior kennt eine ganze Reihe solcher Synonyme, die im Abschnitt Synonyms [8] auf der Webseite zu Daten in Taskwarrior erläutert werden.

Auch bei den Wiederholungsfrequenzen sind bereits einige vordefiniert (Auszug aus man task):

daily, day, 1da, 2da, ...
       Every day or a number of days.

weekdays
       Mondays, Tuesdays, Wednesdays,  Thursdays,  Fridays  and  skipping
       weekend days.

weekly, 1wk, 2wks, ...
       Every week or a number of weeks.

biweekly, fortnight
       Every two weeks.

monthly, month, 1mo, 2mo, ...
       Every month.

quarterly, 1qtr, 2qtrs, ...
       Every three months, a quarter, or a number of quarters.

semiannual
       Every six months.

annual, yearly, 1yr, 2yrs, ...
       Every year or a number of years.

biannual, biyearly, 2yr
       Every two years.

Die aktuelle Version von Taskwarrior ist 2.5.1, mit Version 2.6.0 wird das Feature, wiederkehrende Aufgaben anlegen zu können, komplett überarbeitet und erlaubt dann auch komplexere und selbst definierte Wiederholungsfrequenzen.

IT-Tage 2017 - Softwareentwicklung
Abb.1: Kommandoreferenz Taskwarrior. © Taskwarrior
Abb.1: Kommandoreferenz Taskwarrior. © Taskwarrior

Weitere Kommandos

Die vorgestellten Kommandos sollten Ihnen einen Eindruck davon vermitteln, wie Taskwarrior Sie dabei unterstützt, die Aufgaben zu erledigen, die gerade dringend sind und Ihnen hilft, den Fokus auf wenige Aufgaben zu setzen.

Darüber hinaus gibt es noch sehr viel mehr in Taskwarrior zu entdecken, wie Ihnen diese Kommandoreferenz [9] zeigt (s. auch Abb.1).

Plattformunabhängigkeit

Taskwarrior läuft auf unterschiedlichen Plattformen:

  • Verschiedene Distributionen und Derivate von Unix und Linux, einschließlich macOS
  • Windows 10, im Linux-Subsystem
  • Cygwin unter Windows funktioniert zwar, ist aber nicht offiziell unterstützt
  • Android mit Termux
  • Third-Party-Apps (Android-Client, NodeJS GUI, ...)

Fazit

Taskwarrior ist eine Software, die leicht zu erlernen ist. Sie wächst mit ihren Aufgaben und ist dabei sehr mächtig und auch sehr schnell. Taskwarrior ist leicht zu erweitern und wird aktiv weiterentwickelt.

Feature-Requests sind gerne gesehen, wenn sie in die Philosophie passen.

Quellen
  1. Werkzeug zum Zeit- und Selbstmanagement: Pomodoro, Personal Kanban, Getting Things Done, A.L.P.E.N.-Methode, Eisenhower-Prinzip, Ziele sind S.M.A.R.T., Paretoprinzip, To-Do-Liste, Autofocus-System, Final Version, Inbox Zero, The Cycle System, Emergent Task Planner, Strikethru
    Eine Linkliste finden Sie hier.
  2. Termux
  3. Android-App
  4. Taskserver
  5. Timewarrior
  6. Urgency
  7. ISO-8601-Format
  8. Synonyms
  9. Kommandoreferenz
nach Oben
Autor

Dirk Deimeke

Dirk Deimeke, Jahrgang 1968, beschäftigt sich seit 1996 aktiv mit Linux. Er engagiert sich im Projekt "Taskwarrior" – einer Aufgabenverwaltung für die Kommandozeile – und unterstützt die Blogsoftware "Serendipity".
>> Weiterlesen
Buch des Autors:

botMessage_toctoc_comments_929