Taskwarrior – Aufgabenverwaltung auf der Kommandozeile
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.
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.
- 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. - Termux
- Android-App
- Taskserver
- Timewarrior
- Urgency
- ISO-8601-Format
- Synonyms
- Kommandoreferenz