Open Bug 194863 (subtasks) Opened 22 years ago Updated 5 months ago

Subtask nesting and event triggers (hierarchical to-do)


(Calendar :: Tasks, enhancement, P3)



(Not tracked)


(Reporter: jon.roland, Unassigned)




(Keywords: uiwanted, Whiteboard: [gs])


(1 file, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.3b) Gecko/20030221
Build Identifier: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.3b) Gecko/20030221

I need to be able to organize tasks into sub-tasks, sub-sub-tasks, etc., and to
set task sequences and triggers of the form

... and other combinations, like those used in a project management package.

Reproducible: Always

Steps to Reproduce:
Jon, could you give some more specific examples?
OS: Windows 98 → All
Hardware: PC → All
The simplest example is a product, Ecco Pro 4.01, which is available from If you do a google
search on the name you will find numerous sites and comments to the effect that
it is the best PIM in the field. I concur. All that is lacking is a freeware
product complete with source.

But even Ecco Pro doesn't offer some of the functions one gets with a good
project management package, of which there are several. We don't need things
like resource leveling for the mid-term future, but triggers work like this:

Say you have tasks A, B and C and subtasks A.A, A.B, A.C, B.A, B.B, C.A, C.B,
etc. Consider just a trigger of the form "start-after-finish" SAF, and say that
we have (A.A)SAF(B.A), (A.B)SAF(B.B), (A.C)SAF(C.A). That means, without any
other constraints, that task B can't start until subtasks A.A and A.B are
finished, but as soon as they are, B begins. The completion of one subtask
triggers an alarm to start the next one in line, if other constrainst are
satisfied. As one might be able to discern at this point, this kind of thing can
soon get sufficiently complex that a management tool becomes a real productivity
tool and not just another cost center.

But another function needed here is the ability to *assign" resources to tasks,
including personnel, budget, time (which involves the Calendar), workspace,
tools, etc., and tracks status and costs for each task and phase.
Ever confirmed: true
This would be very helpful.  For instance I'm working on a new PCB project now.

-Make new PCB
   -Gather requirements
   -Assign document numbers
   -Create CAD files
       -Generate outline
       -Capture Schematic
             -Update parts library
       -Layout board
   -Send out for quote
   -Get fabbed
   -Release into the wild
-Next project
New contact from to
Filter on string OttawaMBA to get rid of these messages. 
Sorry for the spam.
Assignee: mikep → mostafah
*** Bug 256196 has been marked as a duplicate of this bug. ***
*** Bug 210590 has been marked as a duplicate of this bug. ***
I agree - a subtask is THE most important feature a task manager can have. Ecco
is the bast PIM I have ever used, only becuase of its ability to create
subtasks. subtasks to the task list is like tabbed browsing, once you use it
once, you are hooked. 
I am also very interested in being able to set up subtasks (more generically,
relationships between todos and/or events).

Before I lay out my wants, I will say that I am willing to help.  I am a
software developer but I have just not had any experience working w/ Mozilla
product source code, XUL etc. Let me know if you would like to take me up on
this offer and we can strike up a conversation about it over email.

For example, in our weekly staff meetings, we each get "action items" such as
"take out the trash" or "make better coffee" or "design an artificial
intelligence software system".

While these todo items are not really "children" of the meeting, they are
related.  Sometimes I think to myself, "There were some things in last weeks
meeting that I was supposed to do."  Clicking on the event could show related
items, whether those be tasks or other events.

Additionally, I would love to have to ability to have task/subtask relationships
as was mentioned previously.

It looks like the icalendar standard has provisions to allow tasks, events etc
to have relationships with other tasks, events, etc.

The RELATED-TO property and the RELTYPE parameter seem to allow this according
to rfc2445 (see section " Related To")

Sequences and triggers like "start-afterffinish" and "finish-before-start" are
meant to be client specific according to the RFC.

"Changes to a calendar component referenced by this property can have an
implicit impact on the related calendar component.
It is up to the target calendar system to maintain any property implications of
this relationship."
  - Section (Page 109) of the RFC
*** Bug 275495 has been marked as a duplicate of this bug. ***
*** Bug 275882 has been marked as a duplicate of this bug. ***
Summary: Subtask nesting and event triggers → Subtask nesting and event triggers (hierarchical to-do)
*** Bug 290330 has been marked as a duplicate of this bug. ***
QA Contact: gurganbl → general
I am not (time wise) capable of helping on this, but it's also a sought after
feature by myself. However I was thinking that it would be even greater to have
meta tasks (as some tasks don't fit just one parent task). With a meta task I
mean a task that can contain any other tasks (including other tasks).

UI wise it would even reduce the lack, not that it's probably too dificult to
create, a tree presentation. Only thing that might be needed is a way to have
the importance of the task itself sorted (which could just be a special status
for a meta task). But I would not obscure subtasks too much. A more experimental
way of presentation would be larger fonts for meta tasks; which would convey
more information about the actual size of the task.

Typical creation would be:
1. Select child tasks
2. Right mouse click; Create metatask

Typical adding of tasks to a meta task after creation
1. Double click a metatask
2. Select tab 'Metatask'
3. Add existing subtask


3. Add subtask
4. Select 'Create new subtask' or 'Add existing subtask'

Typical deletion of subtask could also be done in the tab 'Metatask'; 
1. Double click a metatask
2. Select tab 'Metatask'
3. Select subtask in list
4. Press 'Delete subtask' button (or press 'Delete').
Reassigning all automatically assigned bugs from Mostafa to nobody@m.o

Bugspam filter: TorontoMostafaMove
Assignee: mostafah → nobody
How about a Gantt Chart view for this request? See

We use these things often where I work, and I find them very intuitive.
IMO this is a project management feature and as we're not intending to become a project management application, this is WONTFIX?

Daniel, Martin, Stefan, etc. what do you think?
If my mention of Gantt charts pushes this request over the hazy line into project management, then I apologize to the previous contributors would take back the suggestion. I believe previous comments were referring to Gantt chart-like structures.

To put my two cents in, I'd say that these ideas are tools that have uses outside of project management. They can hold a similar place as a todo list but with an extra dimension. Say a person wants to organize his time such that he can go to a movie after he finishes an assignment but wants a reminder to do laundry before going to the movie. That would fit these constructs and appeal to the same audience as a todo list, but I wouldn't consider it project management since it transcends a single project.
Gantt charts might be added as a later enhancement, after calculation of critical paths and task and resource assignments. Yes, that would make it a project management package, albeit initially a less graphically aesthetic one. Others are working on such packages (none of which are yet satisfactory to me) and we might want to merge their efforts into a plug-in enhancement for this. It is the inevitable course of development, so we might as well plan for it. It's just a question of how fast we want to move toward it and how different approaches will be integrated.

We can see this kind of thing developing with MS Outlook and its meeting, scheduling, and resource assignment tools, and the planned integration with MS Project. If we are to complete with the MS products we need to duplicate their functionality, if not their look and feel.

The real challenge will be resource-leveling. :)
(In reply to comment #15)
I don't think we want to offer highly sophisticated project management features, but I think basic support for hierarchical tasks using the RELTYPE property [1] makes sense.

[1] <>
+1 for comment 15. Reading the bug I was thinking about a x-moz-related prop but the standards already define this. 
Ehmm, sorry Simon, I meant comment 18 which is the opposite...
(In reply to comment #18)
The specification in 
> is unclear as to whether it encompasses all the reltypes that are needed for this purpose. Here is a list:
start before start
start after start
start before end
start after end
end before start
end after start
end before end
end after end

Subtasks are presumed to have a start after start and end before end relation to their supertasks.

Some of these are not often used but for the sake of logical completeness they all need to be available.
Some of the "tasks" are just events, specified by a date and time, rather than something someone does.
Other elements one may want to include are:
cost (time, money, resources consumed)
resource needed (including rooms, tools, personnel, not consumed by by time used)
completion status (percent done, eta, etc.)
post-mortem (did it succeed, if not why)

Component: General → Tasks
QA Contact: general → tasks
Wonderful feature, got my vote!
Any chances for 0.9?

Defining long-dated Tasks (or Events may be) it will be useful, on a par with subtasks, to define one or more milestones with small description.
volunteers welcome!
Flags: wanted-calendar0.9+
Not a priority for 0.9. But we will take patches if a volunteer steps up.
Flags: wanted-calendar0.9+ → wanted-calendar0.9-
Task Coach ( ) has a nice approach. Other programs usually try to force the user to define start and end dates, have a heavy UI or don't let the user nest the tasks on creation.
Assignee: nobody → fred.jen
Attached patch A first hierachichal tree (obsolete) — Splinter Review
The patch makes it possible to dnd a task on another task, so it becomes a subtask. I don't look for dates or anything else, this has to come laterly. It is possible to :
- dnd on not limited number of levels
- toggle the open state
- delete tasks with their subtasks.

But I have some weird bugs, that I don't understand at the moment.
1.) The most important : If I drag a task on the last task in the tree the dnd works fine and finishes without any error. I think that I select as normal a task. But after this the getParentIndex is called with a to high index and I can't find out where this happens.
2.) If an item is modified the subtasks are opened.
3.) The delete deletes the subtasks even if the task is closed, but I have the impression that they are there the next time the calendar starts.

Something about the relations : I only set the parent relation and it would be great to make it an attribute of the calIItemBase, but there is already a parentItem, suggestions ?
We should make it as hard as possible to set "CHILD" and "SYBLING" relations, as you have to search them everywhere and have to keep track of them everywhere, so it would be maybe intelligent to get rid of the addRelation/getRelations etc. and to control everything by the parent and getChildren({}) , but I didn't do it until now.

about the dnd-listener: how much of the code should become a "moveTask" function of the tree.

I want to clear all this before I start something else, as I'd like to use one day similiar code for the unifinder tree too.
Fred I could not apply your patch and received the following error:
patching file base/content/calendar-dnd-listener.js
Hunk #2 succeeded at 255 (offset 4 lines).
Hunk #3 succeeded at 277 (offset 4 lines).
Hunk #4 succeeded at 320 (offset 4 lines).
patch: **** malformed patch at line 61: @@ -380,7 +383,7 @@

Could you check this?
Attached patch subtask - v1Splinter Review
I really hope that it works now
Attachment #336820 - Attachment is obsolete: true
About bug 1.) I create it by dragging a task on the last task it surely works if there are only 2 tasks.
After the drag the getParenIndex function is started with a to high index. I tried to find where it is called from by mTV_getParentIndex.caller but this gives null.Now idea how this can happen.

And in the calendar-dnd-listener line 627 the line mustn't be .. but ...
patch applies fine...
Fred,did you check the error console? There are man errors ("rangeStart.has no properties") presumably coming from your task.getChildren() call in "isContainer()". Unfortunatly I could not debug into it with a segemtation fault that crashed the application.
So, what about patch? Any chances for 1.0? How to try it?
Maybe berend can do it, I have tons of work to do. But I think that it is better to get the trees at first cleaned up. So bug #432532 and bug #459434 should be closed before someone starts here again. I think that it would become pretty fast pretty buggy.
Great features.. for sync with Horde.
Does vCalendar support this?
(In reply to comment #37)

> Does vCalendar support this?

Discussion at may be of interest.
Just a note on the patch, it assumes that every calendar gets items synchonously. This is only the case for the local storage calendar, and that may change in the future too. Maybe we need to make getParent() just return the id and leave the actual retrieval to the client code.
really expect this feature! is there anyone still working on it? is it to be included in 1.0_final or not?
Fred last changed this bug in 2008, so I believe he is no longer working on the bug. I doubt this will make it into 1.0 final unless someone steps up to work on it.
Assignee: fred.jen → nobody
FWIW, this is the *only* feature I miss from Google Calendar: sub-tasks. I don't need advanced functionality (Gantt-like), just an easy way to organise my tasks and see them at a glance. An alternative would be to colorise the tasks by their category, but that does not work either.
Sub-task is good for me, really expect this feature! is there anyone still working on it?
The "Assigned To" field is set to "Nobody; OK to take it and work on it", so we should assume that nobody is currently working on it.
Little bit disappointing that a feature request that is almost 8 years old and has 41 votes doesn't get past "NEW" status. 

Lightning is very useful for its calendar and planning features, but it lacks on the tasks-department. After reading up, I realise subtasks may not be in this or that standard, but I really feel like it's a very important feature in a planning/tasks tool. Please, someone consider to work on this! :)
The inspiration I'd like to see used would be the ever so sexy Abstractspoon's ToDo List application. Each task as a dozen or so fields that can be set to determine owner of task, start date, due date, percentage of parent task based subtasks completion and more... Take a gander at ToDo List. I only want something like this in TB because it makes it easier to deal will all things in a single app. I have web app tabs installed to handle my IT wiki, lightning for calendar, Meebo for IM, TB for well TBing, and linked in tabs for Evernote, Firefox Quick notes, and a billion other things all in one app. It's just nice to have it all under one roof.

If possible RTF (or even better HTML) formatting for tasks would be nice like Todo List but not absolutly needed.

FWIW, the owncloud tasks app has implemented subtasks in a simple and useful way, using the RELATED-TO property of the icalendar specification in CalDAV calendars. See here::

They also mention there that several other task tools use that property in a similar way. Would be great if lightning could follow.
Agree with list-enter. Despite this issue being 14 years old, its relevance has only increased as CalDAV syncing has increased the importance that different software implements the spec interoperably. See RFC 5545, referenced in the previously linked github thread:
Priority: -- → P3

Now that the Thunderbird Council is considering swiching from Trello to CalDAV VTODOs (≈Nextcloud) - - is the right time to improve sub-tasks handling in Thunderbird. This will enable the TB Council do efficient task management in Thunderbird using open protocols.

If is taken as an example, “About the Roadmap”, “Exploring”, “In Progress”, “Done”, and “Leaving It For Now” can be (normal) VTODOs. Everything beneath is a subtask (a VTODO which is RELATED-TO its parent in iCalendar terms). The normal tasks can be sorted horizontally, next to each other, as in the trello-link, but can be sorted also vertically, as tasks in the TB’s Task bar of the Calendar view currently are sorted. Then the subtasks can be (un)folded.

Severity: normal → S3

This bug is officially a full adult now, at 21 years old. Any chance of some progress on this to celebrate? I use Nextcloud for Tasks, but there's no good desktop clients for Tasks that can hook into it, not a single one.

If you need an example of how Tasks should work, with subtasks, recurrence, reminders, etc, etc, see for Android.

I've just started a recurring monthly donation (put your money where your mouth is) Maybe it helps?
The probl challenge with open protocols is that someone (, jtxBoard, Korganizer, Kaddressbook) will start implementing them, making TB susceptible of loosing relevance outside the email domain.

Alias: subtasks
You need to log in before you can comment on or make changes to this bug.