最近使用 MS Todo 的感觉居然还不错,成功帮我克服了电子 GTD 恐惧症。虽然也许只是因为这次定的 task 比较 manageable,但在查看一个月前待办事项时发现自己已经写下详细步骤的那一刻,我承认心中有泛上一丝(来自自己的)温暖。我想,有些笔记的确需要以轻量 todo task 的形式存在。它们存在于日常工作流和知识体系之外,但又是不可或缺的参考。

美中不足的是,MS Todo 不会给你任何导出选项。而我理想中的 todo app 最好是由两部分组成:结构化数据 (data) +显示数据的应用本体 (view) 。按我的理解,这应该算是 JAM 架构,但不确定理解得对不对……

因此,在这里结合 MS Todo 的使用体验和 runic 的语法,自行设计一个 todo app 的草稿。

Data

Markup

  • Indent matters!
  • 本来想用 project 和 tag 两个维度,但好像没什么必要,project 只是个自定义视图而已。
  • Project 使用 conjunctive normal form 而不是正则来做筛选。
  • It’s really not meant for a tree structure, so don’t expect sub-tasks. We only have steps. Maybe I’ll change their runes later to distinguish those from tasks.
[ ] Task Name
	- Note for task
	- A second note
	% url://attachment
	@ 2020-02-20 09:00 (due time)
	@ person
	@ location
	! 2020-02-20 08:00 (alert time)
	# hashtag
	# another tag
	[ ] step
	[x] done step
	; TODO repeat scheme
	/ TODO is there a need for projects?
	*
	**
	*** (priority)
[-] Archived Task
[/] Cancelled Task
[x] Done Task
[.] WIP (steps finished)
[:] WAD (work-almost-done)

/ Project Name
	| include1 & include2 ~ exclude & etc
	| another CNF clause
	> 0000-00-00 00:00 start time TODO dynamic date?
	< 2020-02-20 12:00 end time

Json representation

This part is very specific to implementation (e.g. in js, godot, …), so I’ll just provide a few examples. In addition to the fields listed above, we might have:

  • hashes / id system unique to each task
  • add “modality” – whether this task pertains to a certain aspect of sense or perception, like visual, audio, textual, …
  • calendar – link tasks to dates / a period of time
  • custom productivity records

View

  • ⭐ basic CRUD of tasks and fields
  • ⭐ smart views / scopes (day, month, week, future x days, …)
  • link to another task (so we need to give them hashes!)
  • add to calendar
  • statistics and charts
  • ⭐ sorting, searching, etc.
  • ⭐ list by project and optimize that at runtime
  • custom productivity calculator

⭐ – MVP features

Reference