- Lua 71.4%
- C 19.1%
- Makefile 9.5%
| data | stask: Bundle icons into the Flatpak | |
| icons | icon: Update symbolic icon | |
| .gitignore | init | |
| ca.vtrlx.Stask.desktop | init | |
| ca.vtrlx.Stask.Devel.desktop | init | |
| ca.vtrlx.Stask.Devel.json | init | |
| COPYING | init | |
| Makefile | stask: Bundle icons into the Flatpak | |
| README.md | readme: Mention backup features | |
| stask.c | stask: Bundle icons into the Flatpak | |
| stask.lua | stask: Simplify animations | |
| stask.png | init | |
Stask
Track your tasks with a stack.
Description
Stask lets you keep track of work items using a stack. New items are placed above the current item, and the current item is dismissed by marking it as done. This has numerous advantages for managing complex projects and distractions. Instead of showing an ever-growing list of work items to accomplish, Stask's view of the world is limited only to the current work item. This helps to prevent being overwhelmed by your own work. The stack can be backed up to a text file to migrate to another computer.
Usage
- When a new task is identified, add it to the stack.
- When a task is completed, mark it as done.
- After a task is marked as done, the previous task is shown.
- If a task is too big to be completed quickly, identify a subset of the task and add it to the stack.
- If a task cannot be completed, is blocked on someone else's progress, or you no longer desire to complete it, then you are done with it and it should be marked as such.
- Repeat any step as many times as desired.
- Embrace subquests and sidequests—your prior work items will still be there once you're done.
Rationale
Stask is based on Dave Gauer's Project Stack. The linked webpage provides some background on the idea, and is worth reading for added context.
Humans cannot multitask. The appearance of multitasking is accomplished by quickly switching between different contexts. Documenting one's tasks helps to make context switching somewhat easier, as one can safely discard old working mental contexts knowing that they will still be there on paper when the time comes to pick them back up.
People have long used to-do lists and similar systems to manage their own work, but there are numerous downsides to such things:
- multiple active work items are shown at once, leading to decision paralysis
- the temptation to identify multiple subtasks in multiple larger projects distracts its user from actually putting effort into their own goals
- identifying subtasks on paper lists is difficult and completed tasks will comingle with incomplete ones, leading to a messy experience
- these systems tend to be neuronormative—they are optimized for ordinary minds often to the detriment of neurodiverse people
If you have failed time and again to use of to-do lists, it is because a list is fundamentally the wrong way to structure high-level task data. Projects create trees of subtasks and sub-subtasks, various small pieces that must be knocked out to reach the higher level goal. However, displaying tasks in a tree is no different than in a multi-level list and is subject to the same downsides noted earlier. Ultimately, lists are a distraction.
Computer science has multiple ways to model a list of items with more interesting ways of accessing their items. Among these are queues and stacks. Both are lists where only a single item can be accessed at a time, and the rest are effectively hidden. What differentiates both structures is where new items are placed; A queue gains new items at its end its contents are retrieved in the order they were inserted, a stack gains new items at its top and the new items are retrieved in the order they were most recently placed.
One might intuit that a queue would be a better way to address tasks; It makes sense to want to do tasks in the order they have been raised, but this ignores the fact that most new tasks are necessarily of higher priority. Before a house is built, plans must be drafted. After plans are drafted, materials must be gathered. Workers need to be secured beforehand. Using a queue, adding lower-order work items does not make sense.
New tasks, subtasks, and even side tasks are all of a higher priority than what was identified before. A stack is therefore the ideal data structure for holding tasks. Hence, the creation of Stask—a stack of tasks.
Building
Stask is compiled using Flatpak Builder.
First, enable Flathub then install the GNOME 50 SDK.
flatpak [--user] install org.gnome.Sdk//50
To build and install the app's development version:
flatpak-builder build ca.vtrlx.Stask.Devel.json --user --install --force-clean
Run the app from your desktop's application launcher or with the command flatpak run ca.vtrlx.Stask.Devel.
License
Stask is free software distributed under the terms of the GNU General Public License version 3 or later. See COPYING for more information.