A brief summary for ‘best’ practises using taskwarrior, a very flexible and fast TODO-list.
Workflow
One way to use the most important functions of taskwarrior.
task add project:<project> <task>
task # to show all the tasks
task <tasknr> start
task <tasknr> done
Starting tasks gives you a rudimentary working-time-log of your tasks.
You may also provide a time measure by explicitely specifiing
duration:<time> after done.
Every morning:
task end.after:-1day all # list the things I did
task # list the things I could do
(Of course you could add more selectors to consider, e.g., tasks related to a specific project only.
then schedule a few tasks and list your TODOs for today:
task
task <nr> modify schedule:today
task scheduled:today status:pending
Personal Recommendations
- Organise your topics in projects
- coarse projects
- If you schedule something, stick to it. Contraposition: schedule only tasks you will be able to fulfill at that date.
- Try to write tasks in a way that your colleagues would understand what
the task is about (because four days from now you’ll still have to
understand it.)
- Corrolary: Put down only concise tasks with a clear description of the objective.
- Bonus Cheat: use annotate if anything is too long for a task description.
- If you plan multiple tasks for a single projekt, take a look at
contextand use it. It will make it less cumbersome. - Take a look at all the wonderful tools that have been shared by the community. Do it regularly and share the tools you build.
Task management for Working Group
The taskwarrior is not intended as tool for task-coordination of a group of people. But here is how we do it nonetheless:
- create a Unix-group on a shared host
- make everyone of that group a member
- create a shared directory for tasks
- e.g.
/home/group/.task - set
rwxfor group in this directory - set group sticky bit for this directory
- e.g.
- create shared
.taskrc- insert
data.location=/home/group/.task
- insert
- override resources in call to
task- e.g.
task rc:/home/group/.taskrc - you might also set a different
data.locationin your personal.taskrcif you are only the group-tasks, but I’d recommend you keep a personal TODO-list as well and probably synchronize it
- e.g.
Synchronisation
Synchronisation seems to be the weak spot of taskwarrior. For version 3 there is either the cloud-storage-based or the server-based option. We haven’t tried the server TaskChampion foremost, because we haven’t yet found out how to handle authorisation with the server.
SSH-based Synchronisation
I synchronize to our working-group TODO-list. The convention is, that
tasks managed in this list are tagged by my name-tag +laf are
synchronized with this list. (My local personal tasks are not tagged and
thus stay in my personal list.)
task +laf export | ssh <server> task rc:/home/group/.taskrc import
ssh <server> task rc:/home/group/.taskrc +laf export | task import
I put this in a script called tasksync.sh and execute it at
appropriate times.