obsidian-tasks-group / obsidian-tasks

Task management for the Obsidian knowledge base.
https://publish.obsidian.md/tasks/
MIT License
2.43k stars 228 forks source link

Time abstraction and tasks completion [requesting new fields 'duration' and 'percent'] #2630

Closed Blondwolf closed 4 months ago

Blondwolf commented 8 months ago

⚠️ Please check that this feature request hasn't been suggested before.

🔖 Feature description

1) Abstract tasks duration 2) Task completion: "percent"

✔️ Solution

Adding two new fields: 1) Add "duration" field

ex:

2) Add "percent" field

ex:

❓ Alternatives

Using an external software to manage tasks completion (Jira, Redmine, Gitlab, Github, ...)

📝 Additional Context

I've made a comment here to describe my solution for time management, which seem not to be in the current scope and more or less closed.Original request was made on "time completion".

According to Kanban and various project development method, it would be better to estimate the time without having to place them absolutly.

This is a really lightweight solution that could be pretty useful and be a good 1st implementation. It could be used from other various plugins and Dataviews.

If we want to join something related to "work hour per day" to join the Pomodoro suggestion, it could be a "simple" setting that configure this value (0 - 24). But I think it would be better to open then a new ticket.

claremacrae commented 8 months ago

Thank you!

Blondwolf commented 8 months ago

I mean thanks to you. Sorry for re-opening the subject.

I was just wondering if it was already implemented once. Because I saw some sites suggesting duration from this plugin but I was never been able to find it even in previous versions. Seen here

maggaou commented 8 months ago

According to Kanban and various project development method, it would be better to estimate the time without having to place them absolutly.

Yes exactly. Having a real reference from other tasks management tools is really helpful here. Other paid and widely known tools definitely know what features are best for the end user. The essential question is that can Tasks plugin implement such deep metadata−related features because it has already done it once. How many times is enough? Task metadata isn't abstracted to its own framework which (potentially) means rewriting the whole plugin if new metadata is introduced.

As you said yourself, there should be strong support for 2‑way integration with external task management tools. It is more realistic to expect flawless task management from external tools that syncs with Obsidian. These tools will have the proper funding to create new features.

claremacrae commented 8 months ago

As you said yourself, there should be strong support for 2‑way integration with external task management tools. It is more realistic to expect flawless task management from external tools that syncs with Obsidian. These tools will have the proper funding to create new features.

Yeah, but how many commercial tools do you expect volunteer developers of free software to have to support, to keep happy the subset of our users that can afford to use commercial tools that have the proper funding: 😉 😢

claremacrae commented 8 months ago

According to Kanban and various project development method, it would be better to estimate the time without having to place them absolutly.

Yes exactly. Having a real reference from other tasks management tools is really helpful here. Other paid and widely known tools definitely know what features are best for the end user. The essential question is that can Tasks plugin implement such deep metadata−related features because it has already done it once. How many times is enough? Task metadata isn't abstracted to its own framework which (potentially) means rewriting the whole plugin if new metadata is introduced.

As you said yourself, there should be strong support for 2‑way integration with external task management tools. It is more realistic to expect flawless task management from external tools that syncs with Obsidian. These tools will have the proper funding to create new features.

@maggaou I actually think your comment is a good case for not implementing features so far beyond the current design of Tasks, and where things like time-tracking and estimation are more likely to be wanted in commercial scenarios than in personal use.

I don't mind often spending a day or two or three a week working on Tasks, for free, but not to do things that are most likely of benefit in commercial scenarios.

maggaou commented 8 months ago

Yeah, but how many commercial tools do you expect volunteer developers of free software to have to support, to keep happy the subset of our users that can afford to use commercial tools that have the proper funding: 😉 😢

Yes you are right. There cannot be any commitment from commercial parties targeted specifically for Obsidian users. However commercial parties could maintain general API which could then be used by Obsidian plugins among any other software. Of course such API wouldn't exists for no reason and assuming it to be free is usually incorrect. So the most realistic scenario for Obsidian users who use external commercial software is very complicated:

In the case of commercial parties using Obsidian they could hire developers to code such tools for internal use.

Blondwolf commented 8 months ago

Well to keep on the subject track, I found something which could more or less be used to complete the previous closed issue. This also answer the previous post. This plugin allow you to provide dependant tasks by identation. Tasks are completed by completion of sub-tasks:

Which is a good approach by not adding too much more meta-data.

Still "duration" would be great to use in Kanban, Gantt, ... in terms of dependancy. Example, (bad exemple) You want to make pottery but you need to wait two days to dry, so you can work on a new creation. So even without a date on second task, you can estimate your task doable after the first is completed. For the example, you don't have to implement dependancy itself and such stuff, it just about how the field can be used then by todolist/gantt/kanban plugins and dataview and so. That would be minimalistic

Probably you're talking about the deducting relation between: duration = end - begin; that could include

such deep metadata−related features

I would need to dig a bit in the code to check the complexity. Probably I don't see clearly the amount of work added by this. In my mind, it would be about to add the field and over.


I don't have really much much to argue. It just that somehow, it make sens for me to have this dependant third value relation "duration" when we use "begin" and "end" since those values are already usable. Somehow, this value is already passivly available as soon as you provide end and begin. but mhaaa, this would be more flexible to have just a duration.

To describe my case, I'm currently trying to sync the tasks with caldav (my calendar basically) with plugin I found after many search "iCal" which works pretty well to extract tasks as .ics file. Then I overwrite the calendar with the .ics file on my Radicale server. And I can read it back from Full Calendar plugin (readonly). And tada, I have my scheduled tasks in my calendar that you can read everywhere.

It is just to show another case where a lot of synchronization is/could be made by iCal/ics format to various paid/non paid CalDAV servers. In this case, .ics also support this field:

BEGIN:VTODO
SUMMARY:Nom de la tâche
DESCRIPTION:Description de la tâche
STATUS:NEEDS-ACTION
PRIORITY:0
SEQUENCE:0
DURATION:PT2H  # Exemple de durée, ici 2 heures
END:VTODO

Also in reverse, having to import tasks from redmine or such programs (that has time estimation in tasks) in obsidian. It would be better to have duration for an unscheduled task field.


To follow you on commercial subjet then with this nice transition, I came to obsidian by trying to avoid all my paper work but also to more or less avoid any paid program from companies. So all I use is free until now (Radicale, Caldav (well it's more a standart), NodeRED, Home Assistant, Obsidian). But well, it's also because I am a one man company that can't afford to pay for big big programs even if I don't like them so much.

Obsidian is really a great lightweight note taking tool which is enough to think and write tasks which can then be scanned and propagated somewhere else. Rather than having to almost install an OS + 6 month formation on a big big software than you're not even using completly or wrong in the end. If I need more views, I can install other plugins or copy someone's dataview and that's why I find the modularity of Obsidian so strong.

Sadly, I find more working plugins for paid programs such as Jira, Google Calendar, etc..., rather than Redmine or so.

As I am a programmer too, maybe I can give a shot but TypeScript is not really my prefered programming language. Though I think it would be in everyone interests to propagate such good open free tools. So If I can help I bit, I would.

Blondwolf commented 8 months ago

Taking a step back from my text, I am still thinking about the scope matters.

Probably a brand new wrapper plugin would also suit since dates are text readables. Maybe better in terms of modularity.


Still even in a new project, I think that it would be really useful. Main point being:

strong 2‑way integration with external task management tools

The probable best answer is CalDAV since it's a standart defined and is widely used. RFC 4791. Or iCalendar/ics not sure how much this is standardized now. Naming is not really clear but CalDAV is more designed for events and tasks than webDAV which is more global.

claremacrae commented 8 months ago

Just to note, I've added some text to the title of this issue, to convey what the request is actually for...

Blondwolf commented 8 months ago

Sure, thank you.

As stated, I think that "duration" is more crucial because you can deduct the percent done from sub-tasks as workaround. Where "duration" is really adding a new missing feature. Maybe we can split them if you (or I/we/they) are considering implementing them.

claremacrae commented 8 months ago

Maybe we can split them if you (or I/we/they) are considering implementing them.

For the avoidance of doubt, and for reasons given above, I’m currently planning on not doing this.

There’s many years worth of backlog in Tasks that I would find considerably more useful. 😄

Blondwolf commented 8 months ago

Thank you for the information. Don't worry.

So I will give a shot once I'm over with the other plugins I need.

claremacrae commented 8 months ago

Thank you for the information. Don't worry.

So I will give a shot once I'm over with the other plugins I need.

That's great. I would definitely welcome a PR on it.

Here is some info about working on the Tasks code, that will help save time for both you and I...

I wrote a Contributing Guide.

These links are probably the most relevant sections when getting started.

claremacrae commented 4 months ago

This request falls within a set of areas that we have decided not to support in Tasks.

Closing as wontfix.