背景介绍

一张贴纸,上面有人名和电话号码,如果加上三个字“请回电”,那么这就是 todo 列表了。在公司,如果你不幸坐在电话旁边,不幸接线生又是你,不幸被叫又玩失踪,那么给被叫留张条,等他回来看到咱留的条,属于丫的一项 todo 就开始了。

自由软件开发者对 todo 列表肯定不感到陌生。自由软件通常会有一个 todo 文件,里面记录的,都是软件作者对软件下一个版本的改善期望。不仅是作者给自己的记录,也是作者给其他潜在开发者,传递自己的开发计划。

把下一个阶段将要做的事(自己要做的事,以及和自己相关的事)记录下来,就是我们这里讲的 todo(列表、文件)。

日常工作中,像软件开发中的功能实现、障害修复、用例测试、文档整理、事项确认等等,琐碎的事、重要的事、紧急的事、临时的事互相交织,脑细胞压力很大。为了减少脑细胞的非正常死亡,事务入栈出栈的工作就交给 todo 吧。

需求点滴

  • 命令行方式操作
    • 添加、删除、查询、编辑等
    • 支持 mutt
      • 添加一封邮件为 todo
      • 根据 todo 定位到邮件
  • 纯文本方式记录
    • 记录的自然编号,非uuid
  • 支持分组
    • 按项目分组
    • 分组自定义
  • 支持父子依赖
  • 满足个人对管理的简单理解,支持
    • todo: 记录
    • done: 已完成的记录
    • doing: 正在执行的记录
    • issue: 突发问题的记录
    • name: 其他人的标识
    • cycle: 周期性的记录
  • 提醒功能
  • 事务的计时

效果说明

  • 从上往下看,02一直到04开头的,表示已经被记录的但是还没有行动的 todo。
  • 紫色的16和14的(I)ssue,表示这两个 todo 是实施其他 todo 时产生的突发问题。
    • 其中的 note:foo,表示有一个备注文档与之对应。
      执行一个命令,可以在当前终端打开 vim 编辑该备注文档。
    • 其中的 by:8、by:10,表示这个突发问题阻塞了相应编号的 todo。
      一旦创建一个突发问题,与该突发问题有关的 todo 会成为 (B) 状态。
      一旦完成某个突发问题,被该突发问题阻塞了的 todo 会成为 (F) 状态。
  • 蓝色的12(F)ixed,表示曾经有过突发问题,但突发问题已经解决。
  • 下面的11(C)ycle,表示这是一项周期性的 todo。
  • 橘黄的08和10的(B)lock,表示这两个 todo 产生了突发问题。
    • 其中的 @xxx,表示其他人,自定义内容
    • 其中的 +xxx,表示项目分组
  • 绿色的三行(A)ction,表示这是当前正在实施的 todo。
  • 最后一行的(星),表示这是一项提醒任务。
    • 其中的 Message-ID:xxx,表示有一封邮件与之对应。
      执行一个命令,可以在当前终端打开 mutt 并定位到该邮件。