I recently realized I could track my reading in Taskwarrior, since I use it to track so many other things.
$ task +readlist
ID Age P Tag Description Urg67 22h H community readlist Forge Your Future with Open Source 6.970 29min M fiction readlist Binti 4.871 21min M health readlist Emmerich Keto Guide 4.874 16min health readlist reread The Healthy Programmer 163 6d dev readlist Practical Data Science with R 0.9372 19min dev readlist Think Stats 0.973 17min dev readlist Understanding Computation 0.975 16min home readlist Sink Reflections 0.9I use Priority to show what I’m reading right now. The highest priority goes to the book which I intend to finish next.
Forge Your Future with Open Source is my current main read. The book guides you through making your first open source community contributions. It includes exercises to help you make your best contribution.
I want to complete these exercises, but I know I won’t unless I create some kind of reminder.
I’ll add tasks for the exercises described so far.
$ task add +community Set FOSS contribution goals$ task add +community Set FOSS project requirements$ task add +community Collect FOSS candidate projects$ task add +community Select FOSS projectThere will certainly be more exercises. I will create tasks for them as they come up.
Assigning a shared project makes their connection clearer.
$ task 67,76-79 modify project:fosscontrib - Project will be set to 'fosscontrib'.Modify task 67 'Forge Your Future with Open Source'? (yes/no/all/quit) allModifying task 67 'Forge Your Future with Open Source'.Modifying task 76 'Set FOSS contribution goals'.Modifying task 77 'Set FOSS project requirements'.Modifying task 78 'Collect FOSS candidate projects'.Modifying task 79 'Select FOSS project'.Modified 5 tasks.The project 'fosscontrib' has changed. Project 'fosscontrib' is 0% complete (5 of 5 tasks remaining).All right but how do I show the dependencies? Let’s describe them first.
- I must collect candidate projects before I can select a FOSS project.
- I must set my FOSS project requirements before I can collect candidate projects.
- I must define my personal FOSS contribution goals before I can set my project requirements.
- I must complete all the tasks before I can mark the book as complete
Each item depends on another being completed before I can work on it. It is blocked, and the task it depends on is blocking it.
Use the depends attribute to show when one task blockeds another.
$ task 79 modify depends:78Modifying task 79 'Select FOSS project'.Modified 1 task.Project 'fosscontrib' is 0% complete (5 of 5 tasks remaining).What does that look like now?
$ task project:fosscontrib
ID Age Deps P Project Tag Description Urg78 25min fosscontrib community Collect FOSS candidate projects 9.867 23h H fosscontrib community readlist Forge Your Future with Open Source 7.976 25min fosscontrib community Set FOSS contribution goals 1.877 25min fosscontrib community Set FOSS project requirements 1.879 22min 78 fosscontrib community Select FOSS project -3.2
5 tasksThe report shows a new Deps column, indicating dependencies. The Urg
column shows that “Select FOSS project” gets a lower priority — it’s
blocked by “Collect FOSS candidate projects”, which now has a higher
priority because it blocks a task.
The report visually highlights the blocking task while downplaying the blocked task. This is easier to show with a screenshot.

Let’s assign the rest of the dependencies.
$ task 78 modify depends:77$ task 77 modify depends:76Wait a minute.
How do I describe the book’s dependencies? I want to say it depends on all of these tasks, but that’s not possible in Taskwarrior — unless there’s an extension, but I’m not ready for those yet.
There’s a missing task, isn’t there? Completing all the exercises in the book is its own task. That is what finishing the book depends on.
$ task add Complete all tasks in book priority:H project:fosscontrib depends:79Created task 80.The project 'fosscontrib' has changed. Project 'fosscontrib' is 0% complete (6 of 6 tasks remaining).Today it depends on selecting a FOSS project. That will change as the book presents new exercises. This is a small inconvenience that makes the tasks’ overall relationships clearer to me. I am the important audience for my personal task list.
Now I can correctly describe what I must do to complete the book.
$ task 67 modify depends:80Modifying task 67 'Forge Your Future with Open Source'.Modified 1 task.What does this project look like now?
$ task project:fosscontrib
ID Age Deps P Project Tag Description Urg80 53s 79 H fosscontrib Complete all tasks in book 1076 1h fosscontrib community Set FOSS contribution goals 9.877 1h 76 fosscontrib community Set FOSS project requirements 4.878 1h 77 fosscontrib community Collect FOSS candidate projects 4.879 1h 78 fosscontrib community Select FOSS project 4.867 23h 80 H fosscontrib community readlist Forge Your Future with Open Source 2.9
6 tasksRight but what does it look like?

The report deemphasizes everything but the task that blocks everything else. You can see some urgency math going on in that last column where tasks are both blocking and blocked.
New virtual tags!
Dependencies give us new virtual tags to filter reports based on task dependencies.
+BLOCKED
The +BLOCKED virtual tag filter includes only those tasks which depend
on another task.
$ task +BLOCKED
ID Age Deps P Project Tag Description Urg80 3min 79 H fosscontrib Complete all tasks in book 1077 1h 76 fosscontrib community Set FOSS project requirements 4.878 1h 77 fosscontrib community Collect FOSS candidate projects 4.879 1h 78 fosscontrib community Select FOSS project 4.867 23h 80 H fosscontrib community readlist Forge Your Future with Open Source 2.9
5 tasks+BLOCKING
The +BLOCKING virtual tag filter includes only those tasks which I
assigned as dependencies for another task.
$ task +BLOCKING
ID Age Deps P Project Tag Description Urg80 4min 79 H fosscontrib Complete all tasks in book 1076 1h fosscontrib community Set FOSS contribution goals 9.877 1h 76 fosscontrib community Set FOSS project requirements 4.878 1h 77 fosscontrib community Collect FOSS candidate projects 4.879 1h 78 fosscontrib community Select FOSS project 4.8
5 tasksWhat now?
By looking at what is blocking and is not blocked, you can focus on the tasks that block everything else.
$ task +BLOCKING -BLOCKED
ID Age Project Tag Description Urg76 4h fosscontrib community Set FOSS contribution goals 9.8
1 taskI should start working on those goals so I can finish that book.