|
|
Subscribe / Log in / New account

Managing tasks with todo.txt and Taskwarrior

June 26, 2020

This article was contributed by Martin Michlmayr

One quote from Douglas Adams has always stayed with me: "I love deadlines. I like the whooshing sound they make as they fly by". We all lead busy lives and few ever see the bottom of our long to-do lists. One of the oldest items on my list, ironically, is to find a better system to manage all my tasks. Can task-management systems make us more productive while, at the same time, reducing the stress caused by the sheer number of outstanding tasks? This article looks at todo.txt and Taskwarrior.

The management of tasks is rather personal and people have completely different approaches and philosophies. This is, of course, reflected in the requirements for, and expectations from, a task manager. Requirements can also change as our interaction with computers changes. For example, while I put a lot of emphasis on managing tasks via the command line in the past, these days I'm more interested in a good mobile app (to add tasks on the go and to receive reminders) and web support (to get an overview of all tasks).

A good way to filter tasks is also essential for me. One of the reasons for using task-management software is so you can stop worrying about tasks until they become relevant. This requires a way to find relevant tasks when needed, such as when the due date is coming up soon or because you're in a relevant setting or place (often called a "context" in task-management systems). Going to the supermarket would be a good time to bring up a shopping list, for example. Task-management systems offer a number of ways to organize information that can be used in filters, such as tags, contexts (often stored as tags in the form of @tag, such as @home), and lists.

In a series of two articles, we'll review four systems for managing tasks and to-do items around which open-source ecosystems have formed.

Simple task management with todo.txt

Todo.txt is a simple plain-text format to specify tasks. Each line describes one task, and tasks can have a priority (e.g. (A)), a project (+LWN), and a context (@home). The specification also defines the tag:value syntax but only mentions due (due dates) specifically. A number of custom tags are in common use, such as t for threshold dates (i.e. start dates) and rec for recurring tasks. Tasks are marked as complete by adding a lowercase x at the beginning of the line. An example might look something like this:

    (A) Proofread article +LWN due:2020-06-25
    Revisit task managers @home t:2025-01-01
    x Provide todo.txt examples +LWN

The todo.txt web site lists a lot of tools built around the file format. Unfortunately, the first impression isn't particularly great since a lot of the tools are out-of-date or unmaintained. Todo.txt Touch, the project's official app for iOS, which is placed prominently on the web site, had its last commit in 2014 and was removed from Apple's App Store in 2017 because of incompatibilities with Dropbox. The Android app was removed from Google Play for the same reason.

[Markor]

While it would be nice if the web site offered a more curated list of actively developed software, clicking on all the links eventually revealed that there is an active ecosystem around todo.txt. There is support for a wide range of editors, including a Vim plugin that supports syntax highlighting and presents overdue tasks as errors. Additionally, todoTxtWebUi lets you add tasks in your browser; it also supports basic filters, but there's no way to define and store more complex filters.

Simpletask is an actively developed Android app. Adding new tasks is simple and the app makes it possible to create complex filters. There is support for Dropbox and Nextcloud. Using cloud services appears to be the recommended way to sync tasks in the todo.txt ecosystem; the problem of conflicts, which can happen when tasks are edited on multiple devices, is not addressed, however.

Markor (seen at right) is another interesting app for Android in this context. It is not a task manager; instead it is an editor with support for a number of formats including Markdown, YAML, and todo.txt. Adding tasks is a pleasure due to Markor's syntax highlighting, which can be seen in the screen shot. Markor doesn't allow users to group, sort, or search tasks, but improvements are under discussion.

Overall todo.txt is a simple system that aims to get out of your way. The system reflects the philosophy of founder Gina Trapani, who remarked: "To me, todo.txt is a task list, not a reminder tool, or a calendar". While I personally want a task manager that reminds me of upcoming tasks so I can stop thinking about them until I need to, a simple approach has its advantages and will appeal to some.

Fighting tasks with Taskwarrior

Taskwarrior is another task manager around which a healthy community has formed. In contrast to todo.txt, Taskwarrior supports a rich set of features and attributes, including various dates (such as start, end and due dates), dependencies, projects, and tags. User-defined attributes can also be added. Taskwarrior sets virtual tags automatically depending on the situation, such as TODAY, or, maybe more commonly seen, OVERDUE. The project even supports a Document Object Model (DOM) through which data can be accessed.

While tasks are stored in human-readable text files, interaction is through the command-line tool task. It makes adding, editing, and querying tasks easy. Taskwarrior supports filters, automatically calculates priorities, and integrates a calendar view and statistics. It does not dictate the user's workflow or the task-management methodology to be followed, but there is a helpful write-up about implementing the popular Getting Things Done (GTD) system with Taskwarrior.

Many tools build on Taskwarrior. For example, Tasksh is an interactive shell which makes listing and editing tasks easy. It's particular useful for the periodic review of tasks. VIT, the Visual Interactive Taskwarrior, is a curses-based frontend, which will feel familiar to those who work with Vim and Mutt. With these tools, the Taskwarrior ecosystem offers a range of complementary text-based tools.

For those who prefer managing their tasks in a web browser, TaskwarriorWeb is one option. It has a simple but modern design. Unfortunately, it doesn't expose all of Taskwarrior's functionality (such as dependencies) and has limited capabilities to group and filter tasks. Furthermore, the status of the project isn't clear. While a move to the official GitHub organization for Taskwarrior was agreed to in 2018, the project still hasn't moved; many pull requests remain open, including one to implement some important functionality: filtering by tags.

There are two options for Android. TaskwarriorC2 is a cross-platform GUI client for Taskwarrior available on Google Play. Despite using the Taskwarrior logo, the app does not come from the Taskwarrior project; in addition, TaskwarriorC2 does not have a license in its repository, though the source is available. While the app offers many filters and reports, I didn't find the interface to be intuitive. Foreground is an Android app that is visually more appealing and easier to use. It shows much promise but is quite limited at the moment. For example, you cannot filter by project and there are no notifications, which is a feature some users expect from a task manager on a mobile device.

Of course, the question of syncing data will come up when someone wants to use Taskwarrior on multiple devices. Unlike todo.txt, Taskwarrior offers a solution in the form of Taskserver. For those who don't want to run their own server, there are several hosted alternatives. FreeCinc is an open-source, shared Taskserver where users can store tasks at no charge. Inthe.AM is another open-source online system available at no charge, but it goes beyond merely syncing tasks. It offers several features that extend Taskwarrior, such as RSS and iCalendar feeds, integration with Trello (a proprietary project-management tool), and adding tasks via email or SMS text message. Inthe.AM also offers a web interface to manage tasks with a modern look (seen below), although not all functionality from Taskwarrior is exposed.

[Inthe.AM]

Taskwarrior has a healthy ecosystem; there are many other interesting tools that cannot be covered in detail. Bugwarrior enables the import of issues from a number of bug-tracking systems, taskopen is a script for taking notes and opening URLs with Taskwarrior, and kanbanwarrior is a simple script that facilitates a Kanban workflow. There are also extensions for GNOME Shell (Taskwarrior Integration and Taskwhisperer).

Summary

Todo.txt and Taskwarrior show different approaches to task management. While todo.txt follows a simple approach to capturing and dealing with tasks, Taskwarrior offers a feature-rich system that enables different workflows for task management. Both systems are widely used and offer a range of tools. Taskwarrior, in particular, has great text-based tools. For both systems, solutions for the web and mobile devices are more limited at this point. Next up, we'll review tools that use the Org mode file format and iCalendar standard. Stay tuned ...

Index entries for this article
GuestArticlesMichlmayr, Martin


to post comments

Managing tasks with todo.txt and Taskwarrior

Posted Jun 26, 2020 18:09 UTC (Fri) by tomj (subscriber, #63242) [Link]

In case anyone is looking for a todo.txt based tool written in Rust, have a look at "ttdl": https://crates.io/crates/ttdl

I use it as a daily driver and the filters are pretty helpful. Supports recurring tasks, too. Bonus points: Works on Linux, MacOS and Windows.

While TaskWarrior has more bells and whistles than todo.txt, the simplicity and the cleverness of the todo.txt data format won me over. One file, easy to grasp and modify.

Here's another good writeup about "plaintext productivity":
https://plaintext-productivity.net/1-00-tasks-introductio...

Managing tasks with todo.txt and Taskwarrior

Posted Jun 26, 2020 20:05 UTC (Fri) by wodny (subscriber, #73045) [Link] (1 responses)

Nice article - a lot of interesting related projects I didn't know about, thanks. TaskWarrior has some great features that help me organize the endless flow of tasks:
- the "wait:" date which allows to keep the task hidden until I really need to handle it,
- recurring tasks (eg. renewing certificates),
- date expressions like "monday+12h" or "due:friday wait:due-12h",
- nice default task ranking rules.

Managing tasks with todo.txt and Taskwarrior

Posted Jul 10, 2020 15:58 UTC (Fri) by emorrp1 (guest, #99512) [Link]

Yes, I found "wait" dates way more intuitive than start dates. I also like the tunable auto-prioritisation of taskwarrior e.g. tag X should become more important over time, faster than the default rate. For those of us with motivation issues, the various completion reports are useful for replicating the feeling of a mostly checked-off physical list. On that point, it's a bit wacky, but I found Habitica cool for a family friendly todo list bootstrapping: https://habitica.com/static/home#gamify-life

Managing tasks with todo.txt and Taskwarrior

Posted Jun 27, 2020 5:47 UTC (Sat) by unixbhaskar (guest, #44758) [Link]

Well, Calcurse do it for me ...you can find it here: https://www.calcurse.org/ ...simple and easy to use.

Managing tasks with todo.txt and Taskwarrior

Posted Jun 28, 2020 7:17 UTC (Sun) by Amolith (subscriber, #137875) [Link]

This is a very timely series because I've been looking for a good task management tool as well. Taskwarrior crossed my radar and it looked really nice but I ended up going with Taskell instead.
https://github.com/smallhadroncollider/taskell

I love the idea of using plaintext files for everything but Taskell goes beyond that and stores items as markdown in such a way that also looks great in markdown editor or renderer. The file is looked for and stored at a relative path so one would be able to have a different task list for every repository/project and share it among collaborators. It took me a minute to realise it but Mark actually uses Taskell for the tool's roadmap:
https://github.com/smallhadroncollider/taskell/blob/devel...
I haven't used it in that situation yet but I definitely see the value and will likely propose it in future projects.

You do make a good point about being able to interact with it on mobile and I use Syncthing in combination with Markor for that. Syncthing has handled my KeePass database flawlessly for the past year, so I don't foresee any issues with a basic text file.

The simple combination of plaintext, easy-to-read markdown, and an attractive UI with vim bindings is what drew me to Taskell and I've really enjoyed working with it so far!

Managing tasks with todo.txt and Taskwarrior

Posted Jul 8, 2020 13:30 UTC (Wed) by rookie101 (guest, #135076) [Link]

I prefer using vimwiki, it has a diary and todo list manager. So I note down the tasks in the diary and check them off as my day progresses. This coupled with snippets make it a really powerful tool e.g. I have a snippet that adds `take out trash` as a task I have to do every Wednesday.

For web support, I can't edit my lists but I have a git hook that automatically builds the diary into html and sends it to my server for seeing what I had planned.


Copyright © 2020, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds