Skip to content
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

"dstask in the wider ecosystem": integrations with github, email, todoist/phone apps, etc? #77

Closed
Dieterbe opened this issue Nov 15, 2020 · 4 comments

Comments

@Dieterbe
Copy link
Contributor

Dieterbe commented Nov 15, 2020

Hello!
I've been on the hunt for a good task manager. taskwarrior came close, but I want yaml tasks and git sync to be central to the solution, not an afterthought, and I am pretty good at Go but terrible at C++, so dstask is looking quite attractive.

One central theme I struggle with when it comes to task management, is different tools and contexts.

For example:

  • at work, i work with various github repositories, but also projects managed by zenhub. (luckily zenhub doesn't really complicate things, if anything, it simplifies things: it is a UI on top of github, so all the stuff i should be working on are still simply GH tickets that will have a certain set of tags (e.g. the current sprint) and/or my username is assigned)
  • of course I also have various other tasks that don't belong in any particular repository, and i currently keep in various todo files.
  • For personal todo's, I use the todoist app. It's quite beneficial to have something on my phone that is in sync with "something" (in this case a web page) on my laptop(s).
  • I like to think of emails as todo's also. emails sitting in my inbox are things i have to get through (many of them are tiny tasks though, trivial to do, usually just by deleting/archiving), and typically when i reply to an important email I treat this task as blocked as I'm waiting for a response. Whenever I get a reply back, the task represented by the email is actionable again. this is something I picked up from GTD, but in practice it's hard to do this. Whereas some emails represent tasks, many don't, and you wouldn't want to flood your task manager with menial little todo's for each email. And keeping the task and email states in sync requires either lots of manual work, or advanced sync tooling, so in practice I just treat email completely separate as my "2nd task manager"

Finally, I work from home as a business owner. I don't have clear cut "office hours" vs "personal hours". I think mixing personal and professional tasks is worthwhile (I can pick the right task based on mood, energy level, practical things going on, availability of other people, etc), as long as i make sure that the time spent on each category is balanced and I track time spent properly. From that perspective, this blogpost about taskwarrior made a lot of sense to me.
In particular:

  • computing an urgency/priority based on a formula that looks at a per-project multiplier, how old a task is, time-till-due etc. this seems like a very powerful, concept. I could imagine even using a different formula based on what day it is, what my energy levels are, or how much time i have available
  • ability to defer tasks so that they don't clutter what i should be seeing "right now" ("inbox zero style")

So anyway, specifically then, I wonder how dstask can be implemented "at the heart of a wider context"

In particular:

  1. could we pull in certain tasks from Github and mix them with other tasks? Perhaps the summary could follow a convention like
summary: GH/<org>/<repo>/number <title from GH issue here>

For proper syncing, I think a given GH repo, org and issue number should deterministically lead to a task UUID. Perhaps we could just hash it to a UUID but technically i don't think that's a valid UUIDv4 (which should be randomly generated) but i doubt it matters. Syncing the other way (from dstask to GH) would be nice, but for now this could be manual / a unidirectional sync from GH to dstask
2) as far as todoist, i have no strong feelings about it. any app on an android phone that lets me view and manage tasks that would sync bidirectionally with git/dstask would do the job. While I have little android app development, I'm not afraid to roll up my sleeves here. At least I know todoist has a bunch of golang libraries/tools, so perhaps I might pursue building a sync tool unless someone has a better idea?
3) email.. aka the last frontier. I already explained my vision, and i wonder if it resonates with others. But I personally don't have the ambition yet to go solve that (it doesn't help when you have multiple accounts, some imap, some gmail). Mostly curious for other ideas/input here.

If you made it this far, thanks for reading :)

@dontlaugh
Copy link
Contributor

dontlaugh commented Nov 15, 2020

My story is a lot like yours. I was very excited and intrigued by taskwarrior. I spent quite a bit of time on it. But at the end of the day, dstask was a simpler solution that gave me reliable sync with much less ops effort. Git is a great solution for a personal task manager.

I spent years as a paying customer of Remember the Milk. But the lack of a solid, supported command line tool became a dealbreaker. I also found their API difficult to use. (I still believe that their Android and desktop apps are quite good)

Here is why taskwarrior is brilliant (to me):

  1. it is absolutely usable standalone, with almost no setup. This is an admirable design principle.
  2. via a fairly simple "query language", taskwarrior acts as an interface to a task database. It has some fancy built in graphs, but really the core is taking input, manipulating some files on disk, and rendering output.

I would advocate keeping #81 out of core, but designing an architecture that supports plugins that have that functionality. To me, this relates to the concept of hooks, perhaps "pre-sync" hooks or "additional sync" hooks, as well as the eventual need for a config file format.

To me, the core architecture is: query language, on disk format, output

We would do well to proceed carefully, because if we do, we can have an ecosystem as powerful as taskwarrior's.


I also think #12 should be considered regarding architectural questions, because I suspect that it will be most elegantly solved by introducing some kind of append-only transaction log directory, or some other metadata that we check in and share among machines. Solving for recurring tasks is an interesting problem that will benefit from careful design, imo

@Dieterbe
Copy link
Contributor Author

Dieterbe commented Nov 15, 2020

We would do well to proceed carefully, because if we do, we can have an ecosystem as powerful as taskwarrior's.

agreed. Although that ecosystem looks a bit like a mess. I do think we can make this project more attractive by including some optional features out of the box (for syncing etc).

Seems like there's plenty of related topics to hash out. Perhaps time to organize a group call and hash out some things, and see if we're aligned on vision etc? @naggie

@dontlaugh
Copy link
Contributor

dontlaugh commented Nov 16, 2020

I took the liberty of starting a channel in the gophers slack and adding you. I'm often online, so I can respond there.

I'll be moving over the next few weeks, so my availability will be sporadic, but I'm happy to chat.

https://gophers.slack.com channel is #dstask

@Dieterbe
Copy link
Contributor Author

Dieterbe commented Dec 6, 2020

well, there isn't anything left to discuss here. We now have github import (#81), a mobile/web app coming possibly, and a productive meeting (#90) that led to me to believe we agree on general philosophy at least for now :)

@Dieterbe Dieterbe closed this as completed Dec 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants