I really like trying out tools that allow me to organize and track tasks, as they help me keep focused and more motivated if I know where I am, what I have done and what I need to do.
Grit is really cool, the name feels a bit unfortunate as it might have muscle memory overlap with “git” - nothing that can’t be solved with an alias but perhaps something to ponder.
I also sadly see limited use for a task tracking system that I don’t have with me at all times - I would love a way to use grit on my phone and desktop computer with some kind of sync. Otherwise it would be limited to tracking work-related stuff as when I’m not working I really don’t use the computer; the grocery list example was really nice but I don’t carry my laptop to the grocery store :)
I really like Grit, will keep an eye on how it evolves.
I've been working in this space for my own task manager (multi-parent + infinite depth), and here's a couple things I've landed on:
- My objective is being able to show a "todo" list that is _actually actionable_. So I think early on its important to build in notions of "availability" (i.e. "this is not waiting on something else, you can work on this now")
- The dual is you kind of need nodes that represent "blockers". Here you have the parenting mechnaism that could get you there, but also stuff like setting dates on nodes (in Omnifocus this looks like the "defer until" date)
- I tried making a UI that handled N-node depth, but ended up figuring out that just displaying at most 2 levels of depth and then having fast loading when zooming in/out saved me a lot of API design headache and gets me 95% of the way there
- Even if your data is a tree structure, a lot of times just showing a flat list (perhaps with "parent node is X" annotation) is going to work out nicer. Notably with search
What's the difference between a dag and a multitree? The wikipedia article was confusing - it seems that it prevents diamond shapes? Like where 1 leads to both 2 and 3, and where 2 and 3 both lead to 4?
Pretty much this, unless I'm missing something. An earlier version of the program actually used DAGs, but I found it a little underconstrained. I got pretty excited when I discovered multitrees, as it seemed to be exactly what I needed the whole time.
From a quick glance at the README this supports a slightly more interesting structure than an indented text file: it's actually a DAG where large subgraphs are trees. This allows links between different nodes. That's not possible in an indented text file.
I just started migrating to taskwarrior which great due to the many clients. Actually its integration with vimwiki via the taskwiki plugin [1] is quite powerfull allowing editable views. Wonder if this dag aproach could be integrated via metadata without loosing compatibility.
TiddlyWiki uses a similar data model for table of contents by default and I love it! I think the multitree constraint is a good idea over a general DAG.
Tiddlywinks is one of those things that is too good to actually monetize. It's amazing software. In you can run on it on a server or on an a flasdrive. Or just from dropbox.
Yes, it's sorted by name in natural order. I haven't decided yet which would work best as default (this vs insertion order) -- feedback is welcome. This works well for numbered book chapters, something I personally find useful. In any case, the defaults will be configurable -- when I implement config :)
(Another thing on the TODO list is adding an optional priority score for each task, and sorting those on top of the list in all tree views.)
Wow a very cool idea. The idea of many root nodes for different views seems interesting.
Unfortunatly it does not build on my pc, it seems to import an absolute path in the go build command of the Makefile, which it can not do. (cannot import absolute path)
Since I never really worked with go, I don't know where to start here.
I think I’ve built something similar in React. It looks like a nested list but each item can have multiple parents. It syncs to GitHub and is public, I use it to share my recipes.
If you add confidence interval estimates to each task and a way of inputting the amount of time you can allocate to grit-managed tasks, you could calculate estimated task completion dates: https://www.liquidplanner.com/support/articles/statistically...
Just SQLite - two tables, one for the nodes, one for edges + some fancy constraints and queries. I was tempted to make a custom binary format, but that's a big task, and it seems to work fine as it is.
As for the syncing, that would be really nice, but I haven't come up with an elegant way to do it yet. Suggestions welcome, if anyone has ideas!
Seems like it uses sqlite. Presumably it's trivial to sync using whatever file sync tool you want (Dropbox, or whatever) as long as you're fine without concurrent editing. For that you'd need application support or a more amenable data structure.
loloquwowndueo|4 years ago
Grit is really cool, the name feels a bit unfortunate as it might have muscle memory overlap with “git” - nothing that can’t be solved with an alias but perhaps something to ponder.
I also sadly see limited use for a task tracking system that I don’t have with me at all times - I would love a way to use grit on my phone and desktop computer with some kind of sync. Otherwise it would be limited to tracking work-related stuff as when I’m not working I really don’t use the computer; the grocery list example was really nice but I don’t carry my laptop to the grocery store :)
I really like Grit, will keep an eye on how it evolves.
houzi|4 years ago
rtpg|4 years ago
- My objective is being able to show a "todo" list that is _actually actionable_. So I think early on its important to build in notions of "availability" (i.e. "this is not waiting on something else, you can work on this now")
- The dual is you kind of need nodes that represent "blockers". Here you have the parenting mechnaism that could get you there, but also stuff like setting dates on nodes (in Omnifocus this looks like the "defer until" date)
- I tried making a UI that handled N-node depth, but ended up figuring out that just displaying at most 2 levels of depth and then having fast loading when zooming in/out saved me a lot of API design headache and gets me 95% of the way there
- Even if your data is a tree structure, a lot of times just showing a flat list (perhaps with "parent node is X" annotation) is going to work out nicer. Notably with search
tunesmith|4 years ago
climech|4 years ago
Pretty much this, unless I'm missing something. An earlier version of the program actually used DAGs, but I found it a little underconstrained. I got pretty excited when I discovered multitrees, as it seemed to be exactly what I needed the whole time.
ssivark|4 years ago
On the same note, I wonder what is the relation between dags/multitrees and semilattices. They seem to be very similar concepts afaict.
renewiltord|4 years ago
I tried fiddling with it with vim folds but in the end just ended up deleting things I finish.
I learned this from a friend at work.
frutiger|4 years ago
riedel|4 years ago
[1] https://github.com/tools-life/taskwiki
slaymaker1907|4 years ago
stilisstuk|4 years ago
JensRantil|4 years ago
r-w|4 years ago
xavierlint|4 years ago
kbd|4 years ago
I noticed:
led to: And I didn't see anything about reordering tasks in the readme. Is everything sorted by title?climech|4 years ago
(Another thing on the TODO list is adding an optional priority score for each task, and sorting those on top of the list in all tree views.)
Flockster|4 years ago
Since I never really worked with go, I don't know where to start here.
climech|4 years ago
encryptluks2|4 years ago
https://f-droid.org/en/packages/org.dmfs.tasks/
Is this something you're thinking about adding?
vbsteven|4 years ago
Do you have plans to support any form of sync? Like CalDAV or some API on top of which CalDAV or another sync method can be implemented?
nojvek|4 years ago
cadbox1|4 years ago
https://verynested.cadell.dev/ https://cooking.cadell.dev/
mekster|4 years ago
You can also self host it.
unknown|4 years ago
[deleted]
xn|4 years ago
fluidcruft|4 years ago
climech|4 years ago
As for the syncing, that would be really nice, but I haven't come up with an elegant way to do it yet. Suggestions welcome, if anyone has ideas!
morsch|4 years ago
https://github.com/climech/grit/blob/master/db/db.go
tingletech|4 years ago
mikewarot|4 years ago
rochak|4 years ago
_9rq6|4 years ago
I observed task lists are just for memory references.