Moving my Todo Lists From org-mode into Nextcloud
Note: After discussing this post with a few people in Reddit I wanted to emphasize that the process below is only for personal to-do lists and their related notes. I personally would not do something as foolish as store company information (even to-do's) outside of my employer's cloud and I really recommend that you do the same šø
Iām in the process of moving all of my to-do lists and projects into Nextcloud from org-mode
after almost 10 years. Iām surprised by how well this is working for me and I thought it might be useful to write down some of my thoughts.
But first, a little background. Currently I have two-types of to-do lists:
- Project-based
- Tasks are grouped in a somewhat formal way, have a life cycle and all lead to a common goal
- Ephemeral and recurring
- All of the little tasks that we need to write down so we remember them
In org-mode
I used to have a separate file for each project and a few, huge files for all of my ephemeral and recurring tasks. I then interacted with these todo lists using Emacs with lots of great add-ons on my persional laptop and organice everywhere else. This was always āgood enoughā to keep me from jumping ship but bad enough to cause me to struggle when I wasnāt using my personal laptop (which is 95% of my waking hours).
Nextcloud is the best option Iāve found to replace org-mode
for my to-do lists. Scratch that ā itās an excellent option. Hereās how Iām using it and why I am enjoying it so much more than org-mode
for this particular use case.
Projects
Iām storing projects as Kanban boards in Nextcloudās Deck app. Each board has the following lists which dictate each taskās life-cycle:
- To-Do
- In-Process
- Done
Within each list we store cards, These cards can also have due dates and have a description section that uses Markdown formatting. This section can also include clickable checklists, and the Deck app tracks these checklist items as if they were sub-tasks (which was a nice UI surprise).
I prepend each boardās title with a suffix of Story. For example, my board that covers migrating my self-hosted Nextcloud instance to my new K8S cluster is titled Story ā Migrate nextcloud to new k8s cluster. I then map these stories to parent features by doing the following.
- Creating a feature card (if it doesnāt exist already) in one of the following project boads:
- !! Personal Projects
- !! Professional Projects
- Linking my story board to the feature card by creating a Nextcloud project.
- In Nextcloud, projects are a fancy way of saying that two āthingsā are linked together somehow.
Now I can view all of the stories associated with a feature by looking at the Details section of the feature card.
I use a very simple, Kanban-like workflow for moving my tasks to completion. Finally, once a board is completed I archive it.
Managing my projects in the Deck app is very intuitive, easy and robust. However, sometimes itās difficult to use the Deck app on your phone, even though the Deck mobile app is very good. Also, Kanban boards arenāt very good at storing one-off, ephemeral tasks or recurring tasks. They are better suited for formal projects.
Integrating Project Tasks with the Calendar App
A killer feature of the Deck app in Nextcloud (and honestly Iāve never seen this anywhere else) is its tight and intuitive integration with multiple other Nextcloud apps, including the Nextcloud Calendar app. Hereās how the two apps are linked:
- Each board is a calendar
- Each card on that board is a task (whish are part of the CalDAV standard)
Note: Deck boards are CalDAV calendars but donāt support the entire standard. For that reason you canāt really edit them using a CalDAV-compliant client. However you can view them using such a client and then edit them using the Nextcloud website or Nextcloud Deck for Android. Please see my Special Note section below for more details.
If you give your Deck card a due date it will show up on your calendar alongside your events, along with any tasks that you created outside of the Deck app. Which is pretty sweet š
Advanced Task Management using the Tasks App
The Nextcloud Tasks app makes it easy to manage ephemeral or repeating tasks. Like I said earlier, Kanban boards arenāt very well suited for one-off tasks (pick up the dry cleaning) or recurring tasks. I donāt think thereās even a way to create recurring lists or cards (i.e. tasks) in the Deck app. I therefore use the Nextcloud Tasks app to manage a few ephemeral task lists for me.
Since tasks are part of the CalDAV standard it makes sense that they are stored with the events in each of your calendars (i.e. Deck boards). By that I mean that, behind the scenes, tasks and events are stored in Nextcloud like they are in any other CalDAV-compliant server. However, your interfaces to those tasks include the Deck, Calendar, and Tasks apps (to varying degrees). This gives you a lot of flexibility with how you manage your project and ephemeral todo list workflows when using the Nextcloud web interface.
Note that the CalDAV standard does support recurring tasks but the Nextcloud Tasks app does not. However, using a variety of third-party applications (like OpenTasks for Android) you can create recurring tasks that can be synced with your Nextcloud server using a CalDAV syncing tool (like the excellent DAVx5 app on Android).
The Importance of Client Ubiquity
I š org-mode
and Emacs for so many reasons. It has fundamentally changed the way that I interact with information and manage knowledge. However, itās always been a poor choice as a project and todo list manager for me for one big reason: lack of interfaces. I love using org-mode
in Emacs on my peronal laptop, and I love all of the tools that make is easy for me to manage my tasks and agenda. Itās like driving a race in a sleek sports car that is also a hover craft and a submarine and runs on sunshine. But as soon as I walk away from that laptop that amazing interface is replaced by a bicycle at best and a scooter at worst.
Letās start with accessing my todo list from my work laptop. Since all of org-mode
ās content is stored in text files (which is one of its best features) I would need to sync my org-mode
files between my work and personal laptops. This is rarely an option in most organizations for security reasons.
Iām therefore forced to use a tool with a web interface like organice, which is a modern, excellent web interface for org-mode
files that accesses them using WebDAV or Dropbox integration. And I must admit that organice really is a robust, beautiful and useful application. But Emacs users are used to an incredibly powerful and programmable interface with a ludicrously rich ecosystem of add-ons. You really canāt expect a web application, even one as good as organice to even come close to what Emacs can do today for at least another 20 years.
Storing your tasks in a CalDAV-compliant server gives you the ability to easily manage your todo lists on any system in a simple, transparent way. And if that CalDAV server and client happens to be Nextcloud, you have a lot of very good options for managing those todoās using a variety of workflows without any additional configuration required.
Special Note About Syncing Deck Boards
Deck boards arenāt actually stored as conventional CalDAV calendars ā they are stored as task lists, and unfortunately theyāre the type of task lists to which DAVx5 canāt write. So when you using 3rd-party, non-Nextcloud apps like aCalendar+ and OpenTasks you canāt update tasks that exist as boards or lists in Deck, which means you canāt use those apps to update project to-doās (if youāre using my project management workflow that is).
The good news is that you can still see those tasks in those apps, meaning that theyāre still part of your daily agenda and you will receive notifications about them on your phone. Also, the Deck app for Android is very good and that doesnāt use davx5 for syncing ā it updates the boards directly. So you do still have an interface on my phone to update those tasks/cards, and a very good one at that. You just need to jump from one app to another to make it hapepn.