Posted on:
Most of the time, when you run an upgrade on your package manager, you get all the latest security fixes, improvements, and cool new features. Every once in a while, when you run that upgrade, you're greeted with some breaking changes. This happened to me yesterday afternoon with a utility I use every day, Taskwarrior and man, it sucks.
I use Taskwarrior with the companion sync server called taskd. This allows me to self-host the database on my new home server (that I swear I'll write about building eventually) and I can access it from my desktop, laptop, work Mac, and with a third party app called task add, my phone as well. This is how I've managed everything from work projects to long term reminders like renewing my TSA PreCheck for the past several years.
Yesterday afternoon, I upgraded the packages on a few of my computers and some time later I tried to run task
to take a look at what I still needed to do for the day.
Instead of printing out my task list as I'd expect, I received a fun little error that would ruin the rest of my day.
The error points to a Github release that states v3.0.0 "is a breaking upgrade" that not only means you need to export your tasks to a json file prior to your upgrade to re-import after changing versions (too late for that), but also breaks integration with taskd.
The first part wasn't a huge issue. With a little bit of effort, I was able to uninstall 3.0.0 and force the package manager to pull the old version, export my tasks, re-install the upgrade, and run the import. It would be really nice if breaking changes had a way to push a warning before blindly upgrading though. The second part of that, the deprecation of taskd, that has really caused me issues.
The documentation makes note of upgrading sync, which basically just says you can't use taskd anymore and you should look at the man page for task-sync for more info. The man page isn't a ton more helpful. It gives the few options you have and gives a brief description of the new Taskchampion-Sync-Server:
CONFIGURATION
Taskwarrior provides several options for synchronizing your tasks:
- To a server specifically designed to handle Taskwarrior data.
- To a cloud storage provider. Currently only GCP [Google Cloud Platform] is supported.
- To a local, on-disk file.
[...]
RUNNING TASKCHAMPION-SYNC-SERVER
The TaskChampion sync server is an HTTP server supporting multiple users. Users are identified by a client ID, and users with different client IDs are entirely independent. Task data is encrypted by Taskwarrior, and the sync server never sees un-encrypted data.
The server is developed in https://github.com/GothenburgBitFactory/taskchampion-sync-server.
It also mentions some options for alternative cloud storage, which sounds like an okay solution with NextCloud, but it's a non-starter for two reasons.
- I can't install (and don't want to give access to) the NextCloud client on my work computer.
- The phone app I use doesn't have any ability to read from anything other than taskd.
Taskchampion-Sync-Server sounds like it's what I want, but the repo states:
It is still under development and currently best described as a refernce implementation of the Taskchampion sync protocol.
That's not great news. Digging a bit further into some of the issues, I found a quote from one of the maintainers of the project saying:
For what it's worth, taskchampion-sync-server's current setup is about where taskd aka taskserver has been for years: poorly documented, difficult to deploy, and not especially production-ready. So while it may seem poor form to ship something in this sorry state, I would argue it's not worse than the previous solution.
I have to disagree with his point here; primarily because I sucessfully deployed taskd without issues, using this awesome guide, and because it worked very well for me. I do, however, agree that shipping in this "sorry state" is "poor form". The documentation for deploying Taskchampion-Sync-Server seems sparse at best, if not non-existent. I haven't yet had the time and energy to attempt to deploy and migrate my data to the new solution, but it doesn't look fun. I'm also going to take a wild guess that the phone app, task add, isn't compatible with it either. I could just stay with the old version for the time being, as that was working fine and fit my needs, but eventually, I'll need to upgrade. For now, I've installed 3.0.1 on my main computer and I'm using it as my only location for tasks. At this point, I'm just left frustrated that this breaking change to syncing wasn't better thought out and very least wasn't somehow better communicated before being rolled out. I'm sure 3.0.0 is a big milestone for the project and will bring a lot of positive things to the program, but right now, it feels like a huge downgrade to me.
Tagged with:
More posts:
- Previous: Using a New Neovim Plugin Manager