just1602

Todo management setup

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.