Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Taskwarrior (taskwarrior.org)
248 points by tosh on May 15, 2022 | hide | past | favorite | 38 comments


I use `taskwarrior` every day and greatly enjoy it. There's a number of other terminal TODO management solutions that I've dabbled with but `taskwarrior` is just so feature rich and can be adapted to suit your workflow quite easily.

There's also `timewarrior`, which complements `taskwarrior` pretty well.

I'm not affiliated with the `taskwarrior` project, but I wanted to say that if you like the project and are interested in contributing, one way you can do so is by donating to their GitHub sponsors: https://github.com/sponsors/GothenburgBitFactory. For something that I use every day, I don't mind throwing a few bucks their way, and I figured others might feel similarly so I thought I'd share :)

PS - If you are interested in `taskwarrior`, you may also like `taskwarrior-tui`: https://github.com/kdheepak/taskwarrior-tui. It is a terminal user interface for `taskwarrior` that I built in my spare time. The goal is to have an auto-refreshed view of the output of `taskwarrior` where the presentation of the content is as closely styled to `taskwarrior` as practically possible with a "vim-like" interface to interact with `taskwarrior`.


Honestly, I just wish syncing was easier to setup than having to copy keys to my phone and other devices.


Yeah that was a pain point for me using it in the past. While the docs were pretty good to setup a server for it I recall it being quite technical. Other than that pretty slick TODO manager.


It is also difficult to collaborate with Taskwarrior and to integrate with calendars.

I really love the interface/data-structure, but have actually switched to JIRA, in support of trivial collaboration and cross-platform support.


Years ago I went as far as to create a taskwarrior data folder under my university account, created some aliases to rsync it up and down through ssh and on my phone in a terminal emulator have it auto-sync down on bash login, and auto-sync up on exit, so that I can have it synced across my phone and laptop.


I've tried just about every task tracking/TODO software under the sun and I keep coming back to taskwarrior.^1

It just works, and it works so well.

[1]: For TODOs when I'm on my computer, mainly work stuff that can't be tracked in a Jira ticket or GitHub issue.


Someone created a web-based taskwarrior proof of concept that used VIM keybindings and it was absolutely the most perfect implementation I've ever touched, and then it disappeared before I could pull it down. Does anyone know anything about this?


Are you talking about taskwiki[0]?

[0]: https://github.com/tools-life/taskwiki


No, it was a web-based prototype in the browser. It was so nice because the key bindings worked exactly as you'd expect when it came to adding new tasks, setting hierarchy etc, no fiddling.


I really wish TW finally got around to implementing the ideas to improve recurrences here:

https://taskwarrior.org/docs/design/recurrence.html

Basic things like "do a thing on the first Monday of every month" just aren't possible, and other kinds of recurring tasks (e.g. do something weekly) work strangely.

These limitations rule it out for a lot of my day to day use cases, which is a shame because otherwise there's a lot to like.


The recurrence is the one reason I don't use Taskwarrior. I use topydo instead because recurrence works better with it. The project may be dead but as long as I can get a few years out of it I'll switch task lists when it finally totally breaks.


This might not work for you, but I've found that "recurring" tasks and the never-ending stream of "one-off" tasks are best managed in separate applications.

I use a kanban-style thing for managing one-off's, which I use to "fill-in" my free time, and a calendar/reminder-style thing that I use to schedule recurring events. It's possible to set up syncing between the two, but I haven't found it necessary.

At first, I tried to put recurring things in the kanban-style app. They would fester and quickly/irreparably get out sync with reality. I also tried putting one-off things in the calendar/reminder-style things, but managing a backlog in such an application is usually a nightmare.

I've experimented with TW in the past. I really enjoyed the productivity aspect. Ultimately, I discovered that portability (i.e. a web interface) was more important than efficiency, and crawled back to the kanban-style thing.


Worth mentioning bugwarrior to pull github/bugzilla/jira/... tasks into taskwarrior

https://github.com/ralphbean/bugwarrior

I started using both some weeks ago and I'm delighted. I even have a script that changes the color of tmux status bar as a notification system when new tasks are added or updated... And I could not be happier


I have been using taskwarrior for more than five years daily. There is something really satisfying about managing things in the command line. Especially because most time references work with plain English descriptions. The phone integration isn't great but it is sufficient. I really just use it for my TODO list with one-off and recurring tasks and it works well for that. I have the server self-hosted on a VPN.

And because it is in the command line aliases and other customisation is possible.

Some command examples on why I like this:

  task add Do the regular thing due:tomorrow recur:weekly  # add a weekly task, other options are daily, monthly, yearly or 5days, 3months etc.
  task due:today  # all tasks that are due today
  task due.before:now+7days  # all tasks that are due in the next week
  task 115 modify due:saturday  # change due date of task 115 to coming Saturday
  task /something/  # list all tasks with <something> in their description


  task /something/  # list all tasks with <something> in their description
As the slashes imply, that's not just string search, it's a regex.


That may be the most impressive text interface I've seen.

What special sauce is involved?

(The screenshots on the submitted page are low res. There are some slightly better ones here: http://freshmeat.sourceforge.net/projects/taskwarrior/screen...)


Thanks! Tiny screenshot thumbnails with no large clickthrough are my UI pet peeve.


I was coming to post exactly that. I can usually grok more about the intended usage from screenshots than a long list of features. Especially OSS that follows the Unix philosophy and has a lot of interconnecting components.

(Not to be overly critical of great OSS provided to me free of charge, but it's an interesting divide between new vs old OSS.)


Switching over to Taskwarrior has been on my TODO list for a while now. (Yes, fully aware of the irony.)

I currently use Tracks and one of the things that holds me back is I still like a good GUI interface to help visualise. I occasionally take a look at various offerings but find those I've surveyed a bit mediocre.


You aren't wrong. That said:

- The terminal UI is pretty usable. More so with the aid of a few custom shell aliases/functions to speed things eg. `wt` for `task add +work $argv` to make it faster to add work tasks.

- It's so extensible that I've found it easy enough to, for example, build my own little Übersicht widget to display my 5 most urgent tasks along the top of my screen all the time.

- https://wingtask.com/ is decent enough (no affiliation)


Wow. Tracks. This threw me back about 15 years. Good to see it’s still maintained.

https://www.getontracks.org/


Love taskwarrior. As someone with ADHD/executive function issues, who struggles to prioritise, I find the "urgency" calculation invaluable. Even when it doesn't quite match reality, it's handy to have a starting point I can disagree with.

The extensibility is fantastic. I have little cron scripts to pull my work tasks from Asana, requests for code review from Github, and enter a task automatically when someone on my team requests leave for me to review.


I love that the urgency algorithm is tunable, too :).


I so wanted to love it. I even build small automation tools around it. What destroyed it for me was the overly complicated taskserver, which then only communicated in it's own protocol (so I could sync tasks between different unixes, and apps following that exact format), but not in the much more widespread CalDAV format (which would have made it useful beyond the hobbyist scene).

Yes, I know, I could have developed it myself. But ultimately, that was too nontrivial to just throw it together, and I finally gave up.

I'm with JIRA now. It does what it needs to do reasonably well, without causing too much headaches.


Why show screenshot thumbnails when you can't click to enlarge? Infuriating.


It's a shame it doesn't integrate into CalDav tasks by default.


Agreed, although https://gitlab.com/BlackEdder/caldavwarrior works well enough for my use cases, once set up


I switched from Todoist to Taskwarrior a while ago and it's been great.

One thing I wish it had is a way to mark tasks as "Undone" instead of having to delete them. It's great for reporting and finding weak points in my schedule.


I use Taskwarrior daily, but have a love-hate relationship with it after running into sharp edges and quirks several times. Hopefully this doesn't come across as too harsh as Taskwarrior is good as a command line utility for tracking one-off personal tasks -- maybe the best and I recommend it for that limited case -- but it has some warts that anyone newly looking into it should be aware of:

The recurrence system is listed as an "advanced topic" in the documentation. I gave up on trying to make heads or tails of recurrence in TimeWarrior after fighting with it for years and having way too many times where I had meant to make a change to just a particular single task, and then having unexpected changes to several tasks in a series, or to the template task, or having just that particular instance changed but then the recurrence ends up creating new tasks in a funny way, etc. I once had a particular edit to a reoccurring task create hundreds of instances the next time I looked at the task list.

Continuing on with recurring tasks, The Taskwarrior documentation notes "you never directly interact with... the template task. It is hidden for a reason. Instead, you interact with the recurring task instances" Hope you don't want make a change to future instances without changing any current instances. You can do it, but it's unnecessarily cumbersome.

Ultimately, I've actually found it easier to run a script outside of TW on an hourly basis that checks for the last completed task with a particular user defined field for each task that I want to recur, then creates a new instance if needed. This works nicely as there's no longer any linkage within TW between individual tasks in a "series", preventing a change from copying from from one to the others, and it's impossible to accidentally make a change to the "template" since the template is no longer a record within TW at all. I do note that the facts that there are python (and other) libraries that make this trivial and that it's possible to define fields on a task this way are notable strengths of TaskWarrior. Nonetheless, the fantastic CLI ergonomics for one-time tasks are just missing for things that happen more than once. That a template for a task is itself a task record seems like some really bad conceptual confusion in the design, and extremely kludgy.

A quick look at sibling comments or a general web search for discussion about TaskWarrior recurrence issues will show problems with recurrence are not uncommon.

The units used for the length of time in the urgency calculation for things like task age, due date are unintuitive and there is no explanation of this rather important point in the documentation (https://taskwarrior.org/docs/urgency.html for reference). As a specific example, I have a task entered 5 weeks ago which task info tells me is an age of 0.107, while a task entered 23 hours ago has an age of 0.003. This kind-of looks like 1 per year, but why? Also, time to due date is definitely not 1 per year. It also looks like age has a ceiling of 1 since this value appears for very old tasks, and that time to due date is similarly limited, but again, not documented.

The built-in reports are kind of nice, and the fact that you can define your own "reports" (really task lists with custom columns) is also nice, but it'd be even better to be able to be able to just throw SQL directly at it. There's a TaskWarrior-inspired utility "Tasklite" that does just this by storing tasks in SQLite, although I haven't tried it myself yet. The Tasklite criticism of TaskWarrior is also worth considering: https://tasklite.org/differences_taskwarrior.html

You can get tasks out of Taskwarrior in JSON format with "task export" and there are scripts to further transform this into other formats, but you need to do an extra step to import this into another tool for any analysis you might want to do.

Reports like ghistory.daily and ghistory.weekly can get long and unwieldy. There are ways to deal with this, but it's annoying, and makes me question if the developers themselves are using these reports on a list of completed tasks going back several years or not.

Taskserver is another area that seems poorly thought-out and over-engineered, similar to recurrence, and I'd caution anyone considering using Taskwarrior on more than one computer to look over the Taskserver Setup guide at https://gothenburgbitfactory.github.io/taskserver-setup/ while noting the following:

* Just copying the files around between Taskwarrior instances e.g. with Syncthing or something like that mostly works, but a lot of tools/attempts at mobile apps for TaskWarrior rely on having TaskServer. The sync issues noted in various places by using a file-level sync like this are definitely possible, but the practical implication for a task list that most likely belongs to a single individual is questionable.

* Per the guide, "There are two 'D's in TASKDDATA, and omitting one is a common mistake" in reference to an environmental variable defined, as far as I can tell, entirely within this document. Naming things is hard and this is admittedly a small detail, but why not remove the pitfall rather than just warning about it?

* You will need a CA certificate to "to sign and verify the other certs" -- "The command below will generate all the certs and keys for the server, but this uses self-signed certificates, and this is not recommended for production use. This is for personal use, and this may be acceptable for you, but if not, you will need to purchase a proper certificate and key, backed by a certificate authority."

* "Certificates coming from Let's encrypt have not been successfully used by anyone. Please remember that Let's encrypt only generates servers, but we need a client certificate as well."

* This is rather a lot of work just to be able to _add tasks on your phone_ while you're away from your desk or even just to sync tasks between what might be two or three desktops, and it's pretty clear they had more of an "enterprise environment" or a hosting service like InThe.AM in mind when they wrote it. Regarding that particular service, it is open-source but "Setting this up locally as a clone of Inthe.AM is, unfortunately, not supported" - https://intheam.readthedocs.io/en/latest/

By contrast, there's another project dstack which is also Taskwarrior-inspired but "uses git to synchronize instead of a special protocol" at https://github.com/naggie/dstask -- this is also something I haven't tried it myself yet but it looks interesting, although doesn't itself help with getting tasks on/off a phone as far as I know.


Oh, yeah that issue with the date related urgency calculation. I couldn't figure that out, too. I even started skimming through the code, but gave up since I couldn't find it within 10 minutes.

I really love using taskwarrior, but certain things like that just drive me nuts.

If anyone can explain, how that date related urgencies are calculated, I would be very thankful!


You are spot-on with the love-hate relationship!

Do you have any more details on the script you are running to handle recurring tasks? They definitely have some warts and issues but so far it hasn't stopped me from using them. Though I tend to nuke recurring tasks and create new ones rather than trying to modify existing ones to avoid issues.

It's interesting though. As many issues as there arguably are, taskwarrior is just so satisfying to use when it works. And for me the warts don't have enough of an impact to look for something else or to try and fix it.


This would be great, though in todays interconnected world, it's hardly enough (for me anyway).

I've been through dozens of "todo apps", and most are either too simple or too complex, or doesn't support a sync i can use, or not available on "all" platforms, so ultimately i've settled on Org-mode backed by cloud storage for "sync".

It (for me) provides a simple enough interface that i can quickly add simple tasks, but also allows me to create more complex ones. It also has clients on just about every platform i use, including mobile.


It gets out of your way almost as much as the text on this landing page.


Taskwarrior on desktop / Termux+Taskwarrior on android keeps my life sane. At this point it is an almost perfect piece of software that needs just maintenance but no extra features.


Funny timing because just last week I wanted a way to just type todo X and throw it on my Google tasks so I did that and it works great. I was surprised nothing existed to do that.


Are there screenshots?


Can't you see them? It's a CLI app.


I see thumbnails I can't click on.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: