notes-organization-organizEtdDesign

Design todos

also: check out https://develop.spacemacs.org/layers/+emacs/org/README.html#org-agenda-transient-state and also the leader key stuff at the top of https://develop.spacemacs.org/layers/+emacs/org/README.html#key-bindings-1 which i seem to have made unavailable somehow in my setup because SPC is bound to org-agenda-show-and-scroll-up and BACKSPACE to org-agenda-show-scroll-down and check out https://orgmode.org/manual/Agenda-Commands.html

list of buckets giving reasons to especially care about a task

place tasks that you especially need to remember (important or urgent or soon)) into a small number of buckets, maybe 12. Buckets are things like 'important and urgent'; they represent the reason that you need to especially remember this task. Whenever you encounter a task that you are afraid to delete from its original location (eg email) and throw into the task manager, maybe you need to add a bucket to this list.

Buckets so far:

and examples:

Feature summary list

Non-standard task attributes

Eras of time (timeEra)

Time eras are represented as integers using the following enumeration/convention:

1=today 2=tomorrow 3=next_few_days 4=week 5=next_few_weeks 6=month 7=quarter 8=year 9=someday 0=nil. In the UI the "0" key is used to assign this.

A floating point number in between two eras is treated as falling in the next higher era (eg 1.5 is in the 'tomorrow' era)

Most eras are subsets of each other: (today or tomorrow) \subseteq few_days \subseteq week \subseteq few_weeks \subseteq month \subseteq quarter \subseteq year \subseteq forever

taskType?

0=nil/ordinary 1=tosay 2=todg 3=chore 4=quick/anytime 5=errand 6=call/mtng 7=physical 8=atcomputer 9=meta

Questions

Questions about delegation

Questions about priorites

Questions about WHEN/eras

Questions about other planning attributes

Questions about statuses

Questions about implementation

Questions misc

Statuses

ok, i'm a little lost there. What do i need the statuses to do, and what was wrong with the way i was doing them before? what do i need them to do:

what was wrong:

one design principal is to minimize the number of things in various stages of the system. This is the same principal as:

for each state, the design justification: NEW: partially formed tasks need to be marked as such, because the propositions 'declared' by the states of some of their fields may be incorrect; one consequence of this is that they need to be kept out of the other states otherwise they may erroneously appear overly highlighted in various views IDEA: keep things out of TRACK ROAPMAP: keep things out of READY SOON: trigger things dependent on this being in SOON (eg tasks involved in getting-ready-for the task in SOON) -- i feel like something that needs to trigger dependencies should be an actual state, so that we don't need to include the concept of tags in our model of dependencies (but we can include statuses); except for the need to trigger dependencies, this would just be a tag, a substate of ROADMAP READY: this is sort of the primal TODO; some superset of this is needed to fulfill the feature requirement of "look at the system and get a list of things i should consider doing now" (especially when refined by the 'actionable' predicate); by keeping ROADMAP (and SOON) out of this, we reduce the number of items shown in here DO: we can minimize the number of tasks in TRACK by prioritizing finishing things that we have already started (like DO) over things we haven't (like READY) note: is this really true though? does prioritizing a long task in DO over a short task in READY help this? i would think not really... CHECK: same justification as DO; by prioritizing these over DO, we can minimize the number of tasks in TRACK FINAL: same justification as DO and CHECK WAIT: keep tasks from appearing in non-review views of TRACK (needsYou) when we can't/won't do anything about them DELEG: keep tasks from appearing in non-review views of TRACK (needsYou) when we can't/won't do anything about them. This is different from WAIT in terms of task completion status, because here the task is not actually stopped. BOOKED: keep tasks from appearing in non-review views of TRACK (needsYou) when we can't/won't do anything about them. This is different from WAIT in terms of task completion status, because here the task is not actually stopped. Why is it not just a tag? Because it applies to both SOON and ROADMAP HOLD: keep things out of TRACK and out of IDEA and out of OPEN CUT, DONE: to keep things out of the system, we need at least one terminal state, it's convenient to indicate whether the task was completed or not

TODO:

Perspectives

need places to put:

different tools for wip project management task backlog personal productivity

(C) backlog vs (workspace?) (see the connection to kanban inventory, wpietri sp big board; limit number of WIP). active vs waiting-on and followups. daily workspace? weekly, monthly too? different tools for: personal workspace (todo list); project management (other ppls tasks eg constructionproj; planning/scheduling far out -- tasks that are 'snoozed' and reappear later; also team task management); backlog (dealing with urgent tasks that will appear later; remembering midpriority should-dos and somedaymaybes and important but not urgents)

functions of organizational systems:

to put another way, systems for:

i might divide this into:

"someday" todos "anytime" todos

Use cases

some key activities include:

Need solution for

Situations and their solutions

Approaches

stuff to think about

some of my immediate use cases include:

other ppl keep it pretty simple. Eg some of them only have two gradations of importance (normal and high), some work mostly out of things 3's inbox or today view, some treat 'today' as meaning 'this week' and only plan for this week, etc. They don't care about status ontologies, they focus on just having a list in each project of tasks they thought of, and then assigning some of those tasks to nearby epochs.

idea: since it's easy to go to the beginning or end of text files, use both ends. E.g. prioritized todos at the top, 'brainstorm' todos at the bottom. Or short term at the top, long term at the bottom. Or urgent at the bottom, important at the top. Or active todo at the top, waiting-on at the bottom. Or tasks at the top, notes at the bottom.

Features

readable plaintext exports

can export only a part/subset

also orgmode exports, todo.txt exports

chores

recurring 'chores'. These need to bubble up automatically.

custom colors

color tasks in various views according to custom filters, e.g. if the project and the task are important, then red, otherwise a different color per project

reviews

Reviews are recurring tasks (chores). Reviews are per-project, and different projects can have different review frequencies. Reviews inherit their project's importance.

Are the reviews in some sort of organiz/meta area, or are they in the project they refer to? I think they should be in the project they refer to. This assists in inheriting the project's importance.

You can also set reviews for Areas.

delegation

is my old system (DG, TOGD, @k, etc) good enuf or should i change it?

custom when types

in addition to time era and seq era, there can be other types of eras

potential features

next actions, stuck projects

Implementation architecture

i haven't found a good way to hide empty blocks yet:

some links:

https://emacs.stackexchange.com/questions/38014/org-agenda-show-whether-entry-has-text# http://pragmaticemacs.com/emacs/reorder-todo-items-in-your-org-mode-agenda/

https://emacs.stackexchange.com/questions/52488/propertize-org-agenda-overriding-header

https://emacs.stackexchange.com/questions/23824/defining-different-fonts-color-per-file-in-org-agenda

org-ql

https://www.reddit.com/r/orgmode/comments/iw0web/orgsuperagenda_function_to_group_project_with_its/ summary: https://github.com/alphapapa/org-super-agenda groups stuff. Customize with auto-outline-path or auto-parent or auto-map.

https://github.com/alphapapa/org-super-agenda

https://orgmode.org/worg/doc.html

"Each item occupies a single line. The line starts with a prefix that contains the category (see Categories) of the item and other important information. You can customize in which column tags are displayed through org-agenda-tags-column. You can also customize the prefix using the option org-agenda-prefix-format. This prefix is followed by a cleaned-up version of the outline headline associated with the item. " -- https://orgmode.org/manual/Presentation-and-Sorting.html

org-agenda-prefix-format to customize what is shown in each agenda line http://doc.endlessparentheses.com/Var/org-agenda-prefix-format.html org-agenda-hide-tags-regexp to not display certain tags org-agenda-remove-tags to hide all tags org-agenda-todo-keyword-format org-agenda-entry-text-exclude-regexps (setq org-agenda-entry-text-mode t) (setq org-agenda-entry-text-maxlines 5) org-agenda-entry-text-exclude-regexps

" (defun gg/entry-text-nix-empty-line () "Delete empty entry text lines in agenda" (goto-char (point-min)) (replace-regexp (concat "^ *" org-agenda-entry-text-leaders " *\n") ""))

(add-hook 'org-agenda-finalize-hook 'gg/entry-text-nix-empty-line) " -- https://emacs.stackexchange.com/questions/59546/getting-rid-of-plain-text-timestamp-entry-in-agenda-export

(http://sidebrain.sourceforge.net/ rec by a commentor in https://emacs.stackexchange.com/questions/51161/create-a-rabbit-hole-task-stack-that-can-be-pushed-popped )

" Try customizing org-agenda-prefix-format. This can be used to tweak how various kinds of items (including TODOs) are displayed in agenda views.

In particular, you can use %l in the todo format to prefix the item with a number of spaces corresponding to its level in the hierarchy." -- https://emacs.stackexchange.com/questions/5900/how-can-i-view-the-hierarchy-of-todo-keywords-in-org-agenda-mode

https://emacs.stackexchange.com/questions/14852/divider-lines-in-org-agenda

https://emacs.stackexchange.com/questions/5472/flexible-org-todo-dependencies

https://emacs.stackexchange.com/questions/tagged/org-agenda

org-agenda-filter-by-regexp https://orgmode.org/worg/doc.html read various hooks, search for org-agenda (so far i got about 25% through; to "org-agenda-list") https://karl-voit.at/2019/11/03/org-projects/ https://willschenk.com/articles/2021/sql_in_org_mode/ https://emacs.stackexchange.com/questions/63031/emacs-org-mode-custom-agenda-view-for-each-project https://emacs.stackexchange.com/questions/46882/custom-agenda-view-in-org-mode-grouping-per-month https://www.reddit.com/r/orgmode/comments/elacvo/orgsuperagenda_add_hierarchy_information_to/ https://orgmode.org/manual/Tag-Hierarchy.html https://orgmode.org/worg/org-glossary.html "Changing a TODO state can also trigger tag changes. See the docstring of the option org-todo-state-tags-triggers for details. " http://doc.norang.ca/org-mode.html https://orgmode.org/manual/index.html

could use CATEGORY to specify parent project

could mb implement my 'ortho' status facets using: https://orgmode.org/manual/Multiple-sets-in-one-file.html and org-todo-state-tags-triggers. That is, the TODO state is sort of a composite task status, and when you switch from one ortho dimension to another, org-todo-state-tags-triggers saves the value of the other one in a tag. The value in doing it this way rather than using separate properties/tags is:

org-fast-tag-selection-include-todo

various things can filter/trigger by level, so it may be good to have a fixed number of levels for areas and maybe for projects. What do we do for an empty subarea? Or do we just make the user make up areas for that? Or is the convention that it's the same name as the parent in that case (this could also be the home of catchall'd tasks that are in a parent area but not in any of its subareas)? Or could the convention be that it's the empty string in that case (would make area::subarea formatting simpler: "area::" for the catchall subarea)?

https://orgmode.org/manual/Stuck-projects.html

can agenda views recognize negation of a tag? Yes; using '!', see https://orgmode.org/manual/Matching-tags-and-properties.html. This could make tags triggered onto todo state change easier; otherwise for each ortho set of tax we would have needed to introduce a default, for instance not NOTDELEGATED

principle: want to be able to infer default ortho properties if they are not given. So maybe untracked should be a tag, and idea

lateruntracked means untracked, otherwise the default is tracked

https://orgmode.org/worg/org-tutorials/org-custom-agenda-commands.html org-agenda-entry-types

http://doc.norang.ca/org-mode.html shows how to define 'projects' as any item with subtasks, and then find stuck projects (projects without a NEXT action): http://doc.norang.ca/org-mode.html section http://doc.norang.ca/org-mode.html#TodoKeywordProjectTaskStates section 14.2 Project definition and finding stuck projects

https://sachachua.com/dotemacs/#org00e0838 has " (defun my-org-agenda-done (&optional arg) "Mark current TODO as done.

(defun my-org-agenda-mark-done-and-add-followup () "Mark the current TODO as done and add another task after it. Creates it at the same level as the previous task, so it's better to use this with to-do items than with projects or headings."

(defun my-org-agenda-new () "Create a new note or task at the current agenda item. Creates it at the same level as the previous task, so it's better to use this with to-do items than with projects or headings." (interactive) (org-agenda-switch-to) (org-capture 0)) ;; New key assignment (define-key org-agenda-mode-map "N" 'my-org-agenda-new) "

UI

UI TODO

main screen: modular query spacebar to edit task (without leaving screen) enter to:

keys i toggles the IMPORTANCE>=1 seach filter on or off I sets a custom IMPORTANCE threshold

edit task mode: choices of key assignments (are consistent with the idea of / reflect the semantics of) keys in modular agenda view

i toggles the importance of the task between 0 and 1 I sets the importance to a custom number esc goes back to modular query mode

new task mode is just edit task mode

if the user doesn't enter a key for awhile, the key hints popup. ? goes to the key assignment help mode. F1 is like 'less' viewing the plaintext manual.

Some of the function keys switch to various preset queries.

On the sidebar is a few preset queries, and starred items, and a project browser.

keybindings: using cokemak layout, here's what we have to work with: (omitting keys like tab, backspace, enter, home, shift, which cannot easily be typed/shown as a single character):

`1234567890-= qwfpgjluy;[]\ arstdhneio' zxcvbkm,./

the home row is:

arst d h neio '

so the most common stuff should go there. My email keybindings work pretty well:

a,A: todo-, todo r: reply, sort reverse s: low, mbox t: up, first

d: archive (dont delete the message, but dont tag it either, and remove from inbox), save (like archive, but also tags with 'save' h: important toggle, flag toggle

n: down, last e: delete, mark with the 'deleted' tag but don't actually delete (note: i dont use this one much) i: fyi, toread (toread means an important fyi) o: wait, ref

',": ctx, custom edit labels

tab: next-new-then-unread enter: display-message space: display-message

so can i be inspired by those to get some ideas for the etd home row?

in email, the most important (non-motion/command/special) key is delete. What is that for tasks? Maybe importance, or maybe when, or maybe todo status change.

note that most task views (a) group by project (or whatever else the user specifies), and (b) preserve task (and section and note) ordering unless the user specifies something else

predefined enums such as statuses are at most 8 characters, and the UI assumes that custom variants are also at most 8 characters (when setting column lengths, etc)

2D grid to cycle through substates

it will be less annoying if the keyboard hints box at the bottom of the UI is permanent rather than appearing after a few seconds of inactivity

The problem with having too many statuses is that in the UI it's too hard to specify one or to cycle through them. This can be ameliorated by per-project choice of status via "project type". Project type could also select whether when era is time-based or sequence / sprint-based. Also these choices could be made at the level of any item for its sub items rather than at the project level; or alternately, an items "project" is its closest ancestor of type project whether that is a project sub project or sub sub project etc.

some paper planners have an "important dates" page -- this is just part of the overview

LATER in the UI could be a capital W (an extreme form of WAIT, which could be lowercase w; similarly, RELY could be a capital D, an extreme form of delegate; SOON could be a lowercase r, a lesser form of READY, or maybe a capital R, a more extreme version of ROADMAP; and what about BOOKED, is that a more extreme ROADMAP?) in ready view, r could be roadmap, blank could be ready, and R could be next action; alternately, blank could be roadmap, r could be ready, R could be next action

Common symbols

W: firm when w: soft when I: important (importance >=1) i: importance <1

Keyboard keys

Displays

Views (modes)

some modes we have: agenda view/modular query, edit item, help

agenda view

shows one line per item and no empty lines in between

Expanded agenda view

shows three lines instead of one and empty lines in between items?

Timeline view

Calendar view

can be per-project, that is, can see each project's 'Calendar'

Kanban view

Overview views

you can view all tasks by month; but you can also view the month overview, which is a different thing

an overview of an era (are there other kinds of overviews, not counting the ordinary task views/queries such as all important+urgent or flagged or favorited, etc?) includes those tasks which are marked as overview for this area

What else do era overview screens include (are tasks which are both important/urgent at the level of the era included? What about tasks which are both important/urgent in suberas, eg imp urg tasks (the 'now' era) when viewing the month era)?

the PARA system uses the P->A->R->A not just as types, but as levels of overview-ness

in an era overview you can see which tasks will be urgent in that era

older note:

Edit item screen

edit item screen starts in a text box editing the item text but other fields are also displayed and you can tab over to them? Or maybe hit escape and then use standard keys (like d for deadline) to access them. In fact maybe editing starts without editing the text so that you can use those keys

Flags and stars

sIf imp and urg and priority are relative to each project, is there any way for a user to force a task to be marked something like 'important' in the global views, that is, UI views showing tasks from all projects? Yes, there is a "flag" functionality, and flagging is global. There is also a 'star' functionality which is adds a task to a 'favorite' list (which is then shown in various parts of the UI, eg the main sidebar; but 'favorites' have relevance to the data ontology beyond just being a UI element (later: okay what is that relevance? my they show up in overviews?)).

Ref autonumbering

Can automatically put hierarchical autonumbering in the 'ref' field, eg. 1.3.11.4, but then later 'freeze' the existing numbers -- this allows you to eg draft a requirements document to give to a contractor, and then after that document is shared with a contractor, freeze the numbering and use the numbers as perma-IDs.

Queries

Preset query screens

show important/urgent tasks in any chosen era

Modular queries

i vs I: I means filter for importance >=1 w vs W: W means filter for firm when

various keys for 'when' in various eras

Fully custom queries

Use some sort of query language

allow saving queries

Menu bar

Function keys

F1: help F2: F3: F4: F5: F6: F7: F8: F9: F10: F11: F12:

Misc UI notes

UI hard / for later

stuff that is probably hard to do, so dont bother for now

generally, we're going to focus on what we can easily on top of orgmode setup, without too much programming. Mayyybe later we can do more, but don't count on it. It's useful to design the ideal system

Misc notes

  as typed tags. eg loc::upstairs::bedroom 1::bathroom. Then can display using any specific tag type as the hierarchy for display. This allows you to have eg both loc::upstairs::bedroom 1::bathroom and trade::electrical and to switch between, eg, displaying everything sorted into sections by 'loc' vs displaying everything sorted into sections by 'trade'.
  want to be able to mark some headings as not-for-display (eg "upstairs" is good for grouping, but you don't need it in order to understand the task's title; whereas "fix toilet" might not make sense without "bedroom 1")

misc journal entries

feb 12

i feel like:

probably the way forward is just to implement, put my actual todos into the system, and learn by using. But i feel like i could possibly benefit from more conceptualizing, too.

Toreads

(B) 2022-07-27 "today", "current sprint/cycle" are examples of lists (@) and The UI should support EZ tagging of various items with these lists, as well as some sort of defer/later that easily takes them off these lists

2022-08-26 Etd: another needed task status is "my part is done for now but still needs some followup". For example, with house stuff, frequently I notice something, Tell someone about that, then I have to write it down as something to check on later; or I ask someone a question, get an answer, want to check the question-asking task off my list except that I have to remember to tell Catherine about it and maybe to write down the answer

explanations/justifications

no negative urgency or impact b/c then you can't (easily) multiply them together to get a 'priority'

urgency is capped b/c otherwise everything becomes arbitrarily high priority as you get arbitrarily close to its due date. This isn't unreasonable b/c it's supposedly impossible to accomplish something on time anyways if the time left is less than the time taken to complete.

not doing

unsorted

impact (imp) is a floating-point number ranging from 0 to infinity

urgency (urg) is a computed quantity based on target date (=soft due date), duration, and current date: min(1,duration/(due_date - now)). Urgency is a floating-point number ranging from 0 to 1. can you manually override the computed urgency? should the urgency cap be something above 1? Like, 2?

should impact be importance or impact?

if no target date is provided, then the target date is the due date (=hard due date)

if no target date nor due date are provided, then the urgency is 0

priority (pri) is a computed quantity: impact*urgency is priority the right name for this?

is there some other sort of manually set custom "priority"? or maybe you can manually override the computed priority?

task are also ordered (ranked). The user can reorder things.

there are also eras. Maybe the target date is in eras?

duration is how long the task is expected to take to complete, in days. The default is 1.

dates: due date (deadline/hard deadline), target date (soft deadline), duration, (planned) start date, (planned) end date, unsnooze date, creation date, Last modification date

are imp and urg tags computed based on a threshold, or manual, or computed by default by manually overridable?

2023-06-09 Could have numerical scores for importance and urgency but also have an important and urgent tag that are completely manual (could denote by imp urg or just i u). Could even have a high priority tag that is completely manual (could denote by +). Numerical emergency could be defined as a function of due date and expected time to complete (and current date): urgency equals time to complete divided by time left. 2023-06-09 Could have star and flag and selection. Selection is transient/ temporary and star and flag are also tags. Star is sort of like pinned to favorites and flag is sort of like this task needs attention. 2023-06-09 That isn't quite right though, because in this system, even the most unimportant task would become highest priority shortly before it is due. We kind of want the opposite; for even the most non-urgent task to become the highest priority for very important tasks but for a very unimportant tasks never to become high priority 2023-06-09 That can be achieved if we cap urgency. Which makes sense because an urgency greater than one is supposedly impossible to accomplish because the time to complete is greater than the time left. 2023-06-09 Org UI could press enter (or mb space) on any task to go into the task. That shows the attributes, the description, and the subtasks. Maybe there is another key to expand/ contract the subtask tree (<>). 2023-06-09 Org UI, perhaps have hotkeys to easily change things like importance, urgency, due date, duration in one key (eg inc/Dec/cycle for some of these things) 2023-06-09 Org UI should the default keyboard mapping go by the names of functions or by a convenient position in the keyboard? I feel like maybe the movement commands at least should be by position so maybe everything should be 2023-06-09 Org and two keys to incrementally move the item that the cursor is on above/ below adjacent items

---

'pin' a task to the top of whatever lists it shows up in