Nested lists (sublists) / folders
I'm thinking of something like a list CLIENTS with other lists Client A, Client B, Client C and so on. If I create a task in the list Client A, then I will see the task in Client A and CLIENTS. If I create a task in Client B as well I can see it in Client B and CLIENTS but not in Client A.
I don't know, though, if this can be projected to apps like OpenTasks after implementation.
Subscribing here to watch for development of folders/multiple lists per calendar. At the moment, subtasks could be used to implement a hierarchy, but OpenTasks does not support them (or, better: it supports them differently, so they don't sync properly). Is there any known workaround to this except creating new (empty) calendars just to hold tasks lists?
The CalDAV standard does not define a way to manage nested lists or folders afaik. So what ever we implement here, it will not work on other clients unless they implement it the same way.
For subtasking I think using the RELATE-TO field as you already do is a good solution. But you are right that it's not part of RFC4791 and it still awaits implementation in the app (https://github.com/dmfs/opentasks/issues/341).
Folders could be implemented in a similar manner with marking the topmost VTODO with a custom field to be treated as a folder instead of a task by the UI. Although you are right that this too depends on adoption by the app developers. (But this approach offers a convenient fallback solution of showing them as tasks with subtasks in case the custom field is not supported.)
I believe it's appropriate for the server infrastructure to take the leading role in standardizing those custom formats instead of waiting for the app developers to come up with a whole set of different implementations.
Would it be a good idea to implement sublists by using a Calendar / List naming scheme of List/Sublist/Subsublist?
For example, if there's a list named A and a list named A/B, the second would appear as a sublist of A with the name B. This would also make the names of lists in external applications that do not implement sublists more user-friendly.
Gmail uses the same strategy for labels and the way they're displayed.
The only drawbacks would be that slashes would have to be escaped somehow, and that it is not clear how a list called A/B would be handled if the list A does not exist.
With Nextcloud I can create nested tasks and they are displayed correctly. But OpenTasks shows them in a flat way. How does Nextcloud store these nested issues? Does it use RELATE-TO or does it have its own mechanism?
With Nextcloud I can create nested tasks and they are displayed correctly. But OpenTasks shows them in a flat way. How does Nextcloud store these nested issues? Does it use RELATE-TO or does it have its own mechanism?
We follow RFC 5545 https://tools.ietf.org/html/rfc5545#section-3.8.4.5 here and use RELATED-TO, see https://github.com/nextcloud/tasks/blob/master/src/models/task.js#L305. Every other app following this standard would show it correctly.
RFC 5545 explicitly states related-to being a child relationship - and only that, right? I.e. circular dependencies are not allowed?
The task which has this property, by default references its parent. But you can state other relationship types such as child or sibling: https://tools.ietf.org/html/rfc5545#section-3.2.15
Circular dependencies are not explicitly forbidden, as far as I know. So you could have two tasks referencing each other as parent for example. But I think this doesn't really make sense.
To be honest, I don't really know how the Tasks app would behave if it encounters a circular dependency. I guess it would crash or at least slow down a lot.
Maybe that's the reason the feature has not been implemented in OpenTasks, yet. Maybe we need a "CHILD-OF" relationship and get rid of "RELATED-TO" because it's too generic. Do you know how to trigger such an RFC change/update?
Maybe that's the reason the feature has not been implemented in OpenTasks, yet. Maybe we need a "CHILD-OF" relationship and get rid of "RELATED-TO" because it's too generic. Do you know how to trigger such an RFC change/update?
Why should that be to generic? It does exactly the same as your proposed "child-of". No reason to rename this property.
Ok, yes I see. Together with RELTYPE=CHILD it's exactly what we need.
I´m a bit confused on this different behaviour, now reading all your posts understanding why (every app seems to implement an own way of creating a sub-sub-task hierarchy).
My experience:
[1] NC Tasks to 2Do:
- NC tasks web app: creating root tasks, assigning sub tasks => 2 levels
- Sync those with 2Do app (iOS & Android)
- View them in 2Do app: all shown flat as root tasks, hierarchy information is lost.
[2] 2Do to NC Tasks: The other way around is working great indeed:
- 2Do app: creating root tasks (type "project" or "checklist"), assigning sub tasks => 2 levels
- Sync those with NC server
- View them in NC tasks web app: shown correctly with full hierarchy information
But: the way "[2] 2Do to NC Tasks" is limited to only 2 level hierarchies. Adding sub tasks to sub tasks (3 levels) or more is not possible. Vice versa I can create a lot of levels in NC tasks web app (tested to 5 levels), but those are not synced correctly as described in way "[1] NC Tasks to 2Do".
It´s quite frustrating, having a great server/web app and a great endpoint app seeing both are not really working together. As a workaround I created some "spare" or "template" checklists/projects (tasks able to have child tasks) with the 2Do app, being able to use (rename, move and !!! add sub tasks which permanently stick to their parents !!!) them with the NC tasks web app. Not the best user experience, cause it´s not consistent... :-)
...but the workaround shows: NC tasks app can (and currently does!) SUPPORT those parent-child-connection (I don´t know which technique is used by 2Do app when selecting "project" or "checklist"), but it doesn´t create it. That would be SO powerful!
@bcutter This issue is about nested lists, not tasks/subtasks. But since we are here anyway:
I have never used 2Do app yet, but I quickly gave it a test (latest version from the iOS appstore) and I can confirm your findings. The problem is that 2Do does not (only) rely on the iCalendar specs, but stores its own metadata in a custom field of the task:
X-2DOAPP-METADATA;SHARE-SCOPE=GLOBAL:<2Do
Meta>%7B%22RecurrenceValue%22%3A0%2C%22RecurrenceEndRepetitionsOrig%22%3A0
%2C%22uid%22%3A%22ec1ccbc186c94bbcb6672301bf0390a5%22%2C%22RecurrenceEndRe
petitions%22%3A0%2C%22TaskType%22%3A1%2C%22TaskDuration%22%3A0%2C%22Recurr
enceType%22%3A0%2C%22StartDayDelay%22%3A0%2C%22isExpandedToShowChildProjec
ts%22%3A0%2C%22RecurrenceFrom%22%3A0%2C%22RecurrenceEndType%22%3A0%2C%22Is
Starred%22%3A1%2C%22RUID%22%3A%22%22%2C%22DisplayOrder%22%3A0%7D</2Do
Meta>\n
It seems that only when a field (don't ask me what exactly) in this meta-data is present the 2Do app treats a task as a checklist. When a task is recognized as a parent/checklist task, then the standard RELATED-TO property which NC Tasks uses to store parent/child relationships is evaluated and subtasks are shown correctly. We would need to properly add this meta-data for parent tasks, but without any documentation/support from 2Do this won't work. And to be honest, if 2Do would simply use the CalDAV standard it would work immediately with NC Tasks (and at least for the parent/child relations I don't see a reason to use any custom meta-data field).
@bcutter I created a separate issue for the 2Do subtasks support, #879.
For clarity, is this issue the same reason that when you sync iOS reminders via CalDAV you cannot have subtasks? (iOS won't let you make them in the synced list and when you make them on NC they get flattened on the iOS list)
For clarity, is this issue the same reason that when you sync iOS reminders via CalDAV you cannot have subtasks?
(iOS won't let you make them in the synced list and when you make them on NC they get flattened on the iOS list)
No. iOS reminders simply does not support subtasks. This is a limitation of iOS reminders we can not fix. Please contact Apple for this feature.
For clarity, is this issue the same reason that when you sync iOS reminders via CalDAV you cannot have subtasks? (iOS won't let you make them in the synced list and when you make them on NC they get flattened on the iOS list)
No. iOS reminders simply does not support subtasks. This is a limitation of iOS reminders we can not fix. Please contact Apple for this feature.
Interesting, I did a bit more reading and while you can create subtasks in the Reminders app (I just did it myself), I've seen that it seems that they have screwed the way it works with CalDAV.
iOS reminders simply does not support subtask
It looks like iOS does now support subtasks - just not when syncing with a CalDAV server. This probably means that Apple is implementing the subtasks in a proprietary/non-standard way.
I would like to see sublists in NC tasks:
Currently I'm using ToDoIst, which supports a list hierarchy. This makes it possible to share a list with someone else, and then create separate lists for different projects within the shared list. This means that these sublists automatically inherit the "Shared Properties" of the parent list.
I find there are clear advantages to using sublists instead of subtasks. Sublists are clearer and easier to manage. Especially when there are many entries.