关注了就能看到更多这么棒的文章哦~
Managing tasks with todo.txt and Taskwarrior
June 26, 2020
This article was contributed by Martin Michlmayr
原文来自:https://lwn.net/Articles/824333/
主译:DeepL
Douglas Adamos(道格拉斯-亚当斯)的一句话一直让我记忆犹新:"我喜欢最后期限,我喜欢它们飞逝时发出的嗖嗖声(I love deadlines, I like the whooshing sound they make as they fly by)"。我们都过着忙碌的生活,很少有人能看到我们长长的to-do list被清空。很讽刺的是,我的to-do list上最古老的任务之一,就是找到一个更好的系统来管理我所有的任务。任务管理系统能否让我们提高工作效率,并且减少因许多任务未完成而带来的压力?本文将探讨todo.txt和Taskwarrior。
任务的管理是相当个人化的一件事,人们有完全不同的方法和理念。当然,这也反映在对任务管理器的要求和期望中。随着我们与计算机交互方式的改变,需求也会发生变化。例如,过去我非常强调通过命令行管理任务,而现在我更感兴趣的是一个好的手机应用(在旅途中添加任务并接收提醒)和需要支持网络(获得所有任务的概览)。
需要有好方法来过滤任务。使用任务管理软件的原因之一是为了让你不再担心未来的这些任务,而是等到确实需要推进这个任务的时候才显示给我。这就需要有一种方法在需要的时候能找到相关的任务,比如due date(到期日)马上就要到了的那些任务,或者因为你在相关的环境或地方(在任务管理系统中通常称为 "上下文")时自动跳出来。例如,去超市会是一个很好的时机来提醒你有个购物清单。任务管理系统提供了很多种组织信息的方法,这些方法可以用于过滤,比如tags(标签)、上context(下文,通常以@tag的形式存储为标签,比如@home)和list列表等。
在两篇系列文章中,我们将试用一下四个管理任务和待办事项(to-do item)的系统。这些系统都已经形成了开源的生态环境。
Simple task management with todo.txt
Todo.txt是一种简单的纯文本方式,用于指定任务(task)。每一行都描述了一个任务,任务可以有优先级,如(A)、一个project(项目),如+LWN;和一个context(上下文),如@home。规范中还定义了tag:value语法,但只特别提到了due,用来指定到期日。有一些自定义的标签,人们很常用,比如用t表示threshold date(即开始日期),rec表示需要重复发生的任务。任务通过在行首添加一个小写的x标记就表示已经完成了。举例来说可能是这样的:
(A) Proofread article +LWN due:2020-06-25 Revisit task managers @home t:2025-01-01 x Provide todo.txt examples +LWN
todo.txt网站(http://todotxt.org/ )列出了许多围绕这种格式建立的工具。不幸的是,给我的第一印象并不是特别好,因为很多工具都是过时的或者无人维护了的。Todo.txt Touch是该项目的iOS官方应用,被放在网站的显著位置,它的最后一次提交是在2014年,由于与Dropbox不兼容,2017年就被苹果从App Store中删除了。Android应用也因为同样的原因从Google Play中被删除了。
尽管如果网站提供的软件列表能都是非常活跃的,那就更好了。但是仔细遍历了一下这些链接后,确实可以看出,围绕着todo.txt是有一个活跃的生态系统的。它支持多种编辑器,其中包括一个可以进行语法高亮并且可以将过期任务按照出错来显示的Vim插件。此外,todoTxtWebUi可以让你通过浏览器来添加任务,并且支持基本的过滤功能,但没有办法定义和存储更复杂的过滤条件。
Simpletask是一款开发者很活跃的Android应用。添加新任务的过程很简单,而且该应用可以创建复杂的过滤条件。支持Dropbox和Nextcloud。使用云服务,似乎是在todo.txt生态系统中最推崇的任务同步方式,但没有解决冲突的问题,毕竟任务在多个设备上都进行编辑的话,可能发生合并冲突。
Markor(见上图)是在此生态系统中另一个有趣的Android应用。它不是一个任务管理器,而是一个支持多种格式的编辑器,可以支持Markdown、YAML和todo.txt。借助于Markor的语法高亮显示,添加任务是一种乐趣,从截图中可以看出。Markor不允许用户对任务进行分组、排序或搜索,但正在讨论如何改进这个方面。
总的来说,todo.txt是一个简单的系统,其目的希望能尽轻量级,不要对你有很大影响。该系统反映了创始人Gina Trapani的理念,她说:"对我来说,todo.txt是一个任务列表,而不是一个提醒工具,或者一个日历"。虽然我个人想要一个任务管理器提醒我即将到来的任务,这样我就可以不必自己去想了。不过,简单的方法有它的优势,肯定可以吸引不少人。
Fighting tasks with Taskwarrior
Taskwarrior是另一款任务管理器,也同样有一个很活跃的社区。与todo.txt相比,Taskwarrior支持丰富的功能和属性,包括各种日期(如start、end和due date)、依赖关系、项目和标签。也可以添加用户定义的属性。Taskwarrior会根据情况自动设置虚拟标签,比如TODAY,或者可能谁都逃不过的OVERDUE标签。它甚至还支持文档对象模型(DOM,Document Object Model),可以通过DOM来访问数据。
虽然任务是存储在人类可读的文本文件中的,但所有的交互操作都是通过命令行工具task来进行的。这样一来,任务的添加、编辑和查询会变得很简单。Taskwarrior支持过滤,可以自动计算优先级,并集成了日历视图和统计功能。它并没有规定用户的工作流程或任务管理方法,但有一篇关于用Taskwarrior实现流行的Getting Things Done (GTD)系统的文章很不错(https://taskwarrior.org/news/news.20150627.html)。
有许多工具建立在Taskwarrior的基础上。例如Tasksh,这是一个交互式的shell,它可以轻松地列出任务或者进行编辑。尤其适合定期进行任务审查。VIT(Visual Interactive Taskwarrior),是一个基于curses库的前端程序,对于那些使用Vim和Mutt的人来说都会觉得很熟悉。通过这些工具,Taskwarrior生态系统提供了一系列基于文本的附加工具。
对于那些喜欢在网络浏览器中管理任务的人来说,TaskwarriorWeb值得一试。它有一个简单但是很现代的界面设计。不幸的是,它并没有提供Taskwarrior所支持的全部功能(比如依赖关系就不支持),并且对任务进行分组和过滤的能力很有限。此外,项目目前的状态不是很清晰。虽然在2018年就同意将其转移到官方GitHub的Taskwarrior官方组织下,但目前此项目仍然没有移动;许多拉请求仍未得到处理,包括一个实现了重要功能的pull request::通过tag来进行过滤的功能。
安卓系统上有两个选择。TaskwarriorC2,是Google Play上提供的Taskwarrior跨平台GUI客户端。尽管使用了Taskwarrior的图标,但该应用并不是来自Taskwarrior proeject。此外,TaskwarriorC2虽然有源码,但其资源库中并没有明确指出license。虽然该应用提供了许多过滤和报告功能,但我感觉界面并不是很直观。Foreground,这也是一款Android应用。界面看起来更吸引人,也更容易使用。它承诺会实现许多功能,但目前来说实现的还相当有限。例如,你无法按项目进行过滤,也没有通知功能,这是一些用户对移动设备上的任务管理器期望必备的功能。
当然,如果有人想在多个设备上使用Taskwarrior的话,就会碰到数据同步的问题。与todo.txt不同的是,Taskwarrior以Taskserver的形式提供了整体解决方案。对于那些不想运行自己的服务器的用户,有几个托管服务可供选择。FreeCinc就是一个开源、共享的Taskserver,用户可以免费在上面存储task。Inthe.AM是另一个免费提供的开源在线系统,但它不仅仅支持同步任务,还提供了几个对Taskwarrior扩展的功能,如RSS和iCalendar feed,同Trello(一种专有的项目管理工具)集成功能,以及通过电子邮件或短信添加任务。Inthe.AM还提供了一个很有现代感的Web界面来管理任务(如下图所示),尽管不是所有Taskwarrior的功能都可以支持的。
Taskwarrior有一个健康的生态系统,还有很多其他有趣的工具,这里无法详细介绍了。Bugwarrior可以从一些错误跟踪(bug tracking)系统中导入任务,taskopen是一个用Taskwarrior做笔记和打开URL的脚本,kanbanwarrior是一个简单的脚本,可以配合Kanban这种工作流程( https://en.wikipedia.org/wiki/Kanban_(development)
)。还有GNOME Shell的扩展(Taskwarrior Integration和Taskwhisperer)。
Summary
Todo.txt和Taskwarrior,展示了不同的任务管理方法。todo.txt采用简单的方法来记录和处理任务,而Taskwarrior则提供了一个功能丰富的系统,可以实现不同的任务管理工作流程。这两个系统都在广泛使用,并有一系列工具提供出来。特别是Taskwarrior具有很棒的基于文本的处理工具。对于这两个系统来说,目前针对网络和移动设备的解决方案都比较有限。接下来,我们将调查使用Org mode文件格式和iCalendar标准的工具。敬请期待...
全文完
LWN文章遵循CC BY-SA 4.0许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~