New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Assigning dependencies between tasks using org-edna #21
Comments
|
Partial implementation from my config. Feel free to reuse anywhere. |
|
Thanks @yantar92 for your code!
Please do not get me wrong: this might be "the solution" for many use-cases. Unfortunately, for the reasons above, the concept does seem to have some issues in my setup. |
Depends on your workflow. I wrote this code for very specific case when I capture a bookmark to a video from a video series. If I did not watch previous videos I can quickly make the newly captured task hidden from my agenda until I finish watching previous video in series. Rewriting the code to create dependency of the task at point is not hard though.
Unfortunatery
Then do not use |
|
First of all thanks for the thorough write up on this. I think this is interesting and I like the idea, however I think it goes too far away from the purpose of org-super-links. I really would like to keep this small and as focused as possible. I will look into making it as easy as possible to add functionality like this as an external package though, and maybe even look into creating one myself as I would like to try out org-edna. |
|
I understand and I absolutely do respect your decision. I was very desperate since
As you already know: I'm better with concepts and workflows than with elisp: if you plan to implement said feature, I'm happy to contribute with testing, ideas, documentation and whatnot. I really do believe that this would add much value to project management with Org mode in general. EmacsConf is coming most probably this November and this would be a very very nice piece to demo there ... 😏 |
|
I've started to work on this a bit. Basically I am extracting out the searching functionality that matches headings into a separate package. This will provide a nice base and make it much easier for building other linkages between two headings, such as org-edna blockers or any other type of "link" really. Probably also make the org-ref links easier as going on in the discussion in #34. I hadn't really considered this when building org-super-links so it's a bit awkward currently. I'll try to put a rough take on this concept up soon, and maybe a refactored branch in org-super-links to demonstrate the usage. |
|
If anyone is interested in following along I've started toying with the idea for this.
it's all kind of a mess right now, just started working out the idea, but it's there, and sort of works, if you are interested. |
Hi,
Feature request
I'd like to wish for an extension of
org-super-linksto be a valuable tool for assigning dependencies between tasks using org-edna. This would improve project management to a great extend since it now requires manual effort and is improving an error prone situation.I do think that this is also a valid approach for
org-super-linkssince it relates to its very basic goal: linking headings. With this feature, it just adds different kind of links using the same query mechanism and also extending data within drawers.C-c s t(for "trigger")C-c s s(sl-link).:BLOCKER: ids($ID_OF_SOURCE_HEADING):BLOCKER:property, theids($ID_OF_SOURCE_HEADING)gets appended since there can be multipleids()org-super-links-backlink that links back to the source heading as long as this feature request oforg-ednais not implemented.:TRIGGER: ids($ID_OF_TARGET_HEADING) todo!(TODO) scheduled!("."):TRIGGER:property, the new values get appended since there can be multiple sets of values, initiated byids()or similar.scheduled!("")which can be arbitrary date expressions such as "+2d", "mon", …defvarvariable (I personally prefer "NEXT" in this context).(FYI: I'd use all features marked as optional in my daily workflows.)
This way, the user is able to define a dependency between two tasks as easy and as quickly as possible. Depending tasks do feature a backlink via
:BLOCKER:properties. Those backlinks do have a different format than existingorg-super-linksbacklinks. This is due to the format definition oforg-edna. Maybe anorg-super-linksbacklink can be automatically added as well via preferences. I'd use both links (org-edna-dependency-link +org-super-links-backlinks) as long as this feature request oforg-ednais not implemented.Example for org-edna syntax
A minimal example for plain
org-ednasyntax is shown to understand its syntax, not demonstrating all the properties mentioned in the algorithm above.In that example, when the user is setting the first task to DONE, the "next task" gets the todo keyword "NEXT" and a SCHEDULED for the very same day. The task after the next task gets the todo keyword "NEXT" and is scheduled for two days after today.
The
:BLOCKER:properties are not necessary fororg-ednain this example. They are redundant. However, I'd prefer to have them because this way, any task has clearly defined back-references that work with thisorg-ednasyntax.Please note that in contrast to
org-depend, tasks get their todo keyword only when they are "active". My guess is that this is also speeding up performance of large agenda setups.You can find another
org-ednaexample project at this issue.Benefits
Using the proposed feature, all
:TRIGGER:and:BLOCKER:properties can be set in this example. It only requires two invocations, both when being at the first heading. It is clearly visible that this helps a lot for optimizing manual effort and providing a full set of meta-data (back-references) while eliminating potential errors.Using
org-ednafor defining dependencies like that has further benefits. The user does not need to hide blocked tasks viaorg-agenda-dim-blocked-taskswhich I presume offers better performance. Blocked tasks simply do not necessarily feature a todo keyword at all, thus they aren't taken into account for agenda generation which is a plus.Having the optional possibility to define arbitrary relative scheduled dates offer maximum flexibility when managing projects.
From my personal point of view, this is the way to do project management with dependencies.
The text was updated successfully, but these errors were encountered: