The actual issue
I need a centralized way to manage my tasks that supports at least the notions of projects and tags. It also needs to sync across my workstations. It would be nice if it was syncing well on mobile, but it's not a dealbreaker.
The available options
taskwarrior
In my opinion, Taskwarrior clearly has the best user experience, it supports recurring tasks, projects, tags, context which allow you to display only a subset of your tasks depending on the context. There's also an awesome support for recurring tasks, a very flexible way to filter, sort, and take actions on the tasks. It also support a large range of reports and graphics it can generate for you.
Taskwarrior also has a server that allow you to sync your tasks across multiple devices, but the main drawback is you have to pay for an SSL certificate to authenticate yourself to the Taskwarrior server using the client since let's encrypt doesn't provide client certificate, and using self-signed cert is not recommended if your server is used over the internet. Furthermore, even if Taskwarrior use text file to save its data, the format is really conflict prone and doesn't sync well using Nextcloud or Git.
todo.sh
todo.sh is the default
implementation of the todo.txt
spec,
which is a simple format that allow you to manage your tasks in a text file.
The spec support projects and contexts, which in this case are a way to specify
in which context you're going to accomplish this task (i.e. you could add
@email
to all tasks that imply to send an email and do them all at once).
The default implementation doesn't support syncing out of the box, but it has a very flexible plugins mechanism that make it really easy to develop a syncing mechanism or any other feature that other todo app could have.
todoman
Todoman is a todo app that use the
vtodo
component of the iCal spec
to store tasks. It makes it super easy to sync, since you can use Nextcloud or
any other caldav server. The main issue is it doesn't support any notion of
projects nor tags, and it's not really a way to extend it and add those
features.
My solution
If I was using only one workstation, I'd use Taskwarrior without any hesitation, but since I've a desktop, a personal laptop and a laptop for the job, I really need the tasks to sync.
My solution so far is to use todo.sh
with a little plugin that allow me to do
todo.sh sync
and it commits the todo.txt
file, pull for commits from
another devices and push the latest modifications. If there's conflict between
two commits, this is super simple to resolve the conflict since it's a simple
text file with one task per line.