Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Taskwarrior - Philosophy and Ecosystem

Dirk Deimeke
December 09, 2016

Taskwarrior - Philosophy and Ecosystem

Background of Taskwarrior.

Dirk Deimeke

December 09, 2016

More Decks by Dirk Deimeke

Other Decks in Technology


  1. It is as easy as this example . . .

    > task add Prepare Talk > task list > task 1 done
  2. But it can be more . . . > task

    add \ project:private.birthdays \ +anniversary \ due:2017-01-11T10:00:00Z \ scheduled:2016-12-24 \ wait:soq \ until:due+7days \ Send birthday card to Alice > task add \ project:tngtech.administration \ due:eom \ priority:M \ +boring \ +important \ recurr:monthly \ Prepare Meeting More sophisticated usage in the workshop this afternoon.
  3. Background Project founder Paul Beckingham: I started out using Gina

    Trapani’s todo.sh, which was great, but I soon wanted features that would have been difficult to implement in a shell script, so I wrote my own.
  4. Motivation Project founder Paul Beckingham: It stemmed from the fact

    that a todo program needs to be simple to use, and unobtrusive, otherwise it’s a hassle. But it can’t be too simple.
  5. History – Some milestones 2006-11-29, v0.0.1 Project began as enhancement

    to todo.txt. 2014-01-15, v2.3.0 Task Server support. 2015-10-21, v2.5.0 Improved command line parser. 2016-02-24, v2.5.1 bug fix, code cleanup, performance release – no features. near future, v2.6.0 overhaul recurrence and add more flavors of recurring tasks. https://taskwarrior.org/docs/history.html
  6. Taskwarrior is developed using a philosophy that explains a lot

    about why certain decisions have been made, and will continue to be made.
  7. Openness The source code, plans, bugs, testing, docs, website are

    all free and open source. Your data is kept as plain text, and never held hostage by a proprietary format.
  8. Low Friction There should be no login authentication, lengthy launch,

    or interactivity getting in the way of simply capturing information.
  9. No Penalty There should be no penalty for features that

    exist, but you don’t use. But that also means the features are there if you need them.
  10. Methodology Agnostic While methodologies are important, Taskwarrior doesn’t impose or

    prefer any methodology, and instead acknowledges that everyone works differently, placing different emphasis on things like priorities, due dates, dependence and so on.
  11. Toolkit Supporting all methodologies and workflows means there are a

    lot of features, but you are not expected to use them all. Think of Taskwarrior as a toolkit that lets you follow any methodology you choose, and any methodology will only use a subset of the features.
  12. Extension Friendly Import/export using industry-standard JSON allows you to move

    data into and out of Taskwarrior, so you can provide a front end, or higher-order feature.
  13. Focus Taskwarrior carefully limits the features it supports, in order

    to focus on doing one thing well. It does not offer reminders and time tracking, because there is other software dedicated to implementing those features well. If a feature improves the way we manage task lists, then it belongs in Taskwarrior, otherwise it belongs in some other software.
  14. What you keep out of a project is just as

    important as what you allow in to a project.
  15. manpages > man task # 1187 lines > man taskrc

    # 1182 lines > man task-color # 330 lines > man task-sync # 164 lines # total: 2863 lines of information # (close to 50 printed pages)
  16. task help > task help Usage: task Runs rc.default.command, if

    specified. task <filter> active Active tasks task add <mods> Adds a new task task <filter> all All tasks ... # 241 lines of adhoc-help
  17. Guides – easier to read Lesson learned: Man pages are

    too densely crammed with information, and too lengthy, for most modern humans to ingest. We offer PDF guides and presentations: https://git.tasktools.org/projects/ST/repos/guides/browse
  18. The need! With people running Taskwarrior on several machine the

    need rises to sync the task data between machines.
  19. Why Do I Need a Taskserver? You may not need

    a Taskserver. You may be content with using Taskwarrior on a single device. But if you wish to share tasks between several clients, the Taskserver is the only option that properly syncs data.
  20. One feature does it all With a Taskserver, you can

    share tasks between clients/devices, eliminating the need to keep your data up to date on multiple clients, reducing data entry. One nice side effect of using a Taskserver is an automatic backup of your tasks.
  21. Short history, long time 2010-09-22 Project began. 2012-09-26 Project restarted

    using GnuTLS. 2014-01-15, v1.0.0 Sync Protocol v1. Compatibility with Taskwarrior 2.3.0. 2015-05-10, v1.1.0 Improved security, logging, portability, documentation, quality, setup, PKI scripts. IPv4/IPv6 support. Many bug fixes. Short: Everything is better now. https://taskwarrior.org/docs/history_td.html
  22. Time tracking People – at least some – like to

    use Taskwarrior for time tracking. This does not match our philosophy “improves the way we manage task lists”, so it has to be another software.
  23. What does Timewarrior do? Timewarrior is a command line time

    tracking application, which allows you to record time spent on activities. At its simplest, you tell it to start and stop tracking time: > timew start ... > timew stop
  24. Why do I need Timewarrior? You will be able to

    track your time intelligently, then generate useful visual or tabular reports of that time. An extension API lets you do anything you want with your data.
  25. Example Suppose you start the clock at noon on a

    Friday, then you stop the clock at noon on Tuesday. Did you really just spend 96 hours on a task? More likely you only spent 16 hours, or perhaps 8 hours if Monday was a national holiday. Timewarrior supports you in solving that riddle.
  26. How does Timewarrior work? Timewarrior records time, and associates blocks

    of time with tags. The recorded data can be exposed as JSON for any app to consume. Built-in reports, as well as a set of extension reports will give you plenty of options. A Taskwarrior hook script provides integration with the matching start and stop commands, thereby enabling proper time tracking for Taskwarrior users.
  27. tasksh – https://tasktools.org/projects/tasksh.html Tasksh is a shell command that wraps

    Taskwarrior commands. It is intended to provide simpler Taskwarrior access. Tasksh implements a review feature, and integrates libreadline. It is on it’s own release schedule that is unhampered by lengthy Taskwarrior development cycles. Future Tasksh releases are being planned now. Features currently being designed include: • Pomodoro Timer • Notifications
  28. taskopen – https://github.com/ValiValpas/taskopen Taskopen allows you to link almost any

    file, webpage or command to a Taskwarrior task by adding a filepath, web-link or uri as an annotation. Text notes, images, PDF files, web addresses, spreadsheets and many other types of links can then be filtered, listed and opened by using taskopen. Some actions are sane defaults, others can be custom-configured, and everything else will use your systems mime-types to open the link. Arbitrary commands can be used with taskopen at the CLI, acting on the link targets, enhancing listings and even executing annotations as commands.
  29. vit – https://tasktools.org/projects/vit.html VIT (Visual Interactive Taskwarrior) is a lightweight,

    curses-based front end for Taskwarrior that provides a convenient way to quickly navigate and process tasks. VIT allows you to interact with tasks in a Vi-intuitive way. A goal of VIT is to allow you to customize the way in which you use Taskwarrior’s core commands as well as to provide a framework for easily dispatching external commands (both user scripts and Taskwarrior’s many External Scripts).
  30. Android – https://bitbucket.org/kvorobyev/taskwarriorandroid/ • Because Android application uses task binary

    for all manipulations with tasks, in general, you can expect exactly same behaviour with original Taskwarrior • Synchronisation with taskd server works! • Features below are unique to Android version: • Create shortcuts to reports and new task templates to Home screen • Multiple profiles support • Auto-syncronisation by configurable intervals • Following features are not implemented at present moment: • UDAs • Dependencies https://play.google.com/store/apps/details?id=kvj.taskw
  31. Contribute to Taskwarrior Want to contribute? – https://taskwarrior.org/docs/contribute.html How to

    become an Open Source Contributor We have some information for you on how to become an Open Source Contributor for the first time (http://taskwarrior.org/docs/first_time.html – applies to the second and third contribution as well).
  32. Getting Help There are several ways of getting help: •

    Submit your details to our Q & A site, then wait patiently for the community to respond. • Email us at [email protected], then wait patiently for a volunteer to respond. • Join us IRC in the #taskwarrior channel on Freenode.net, and get a quick response from the community. • Even though Twitter is no means of support, you can get in touch with @taskwarrior. • We have a User Mailinglist which you can join anytime to discuss about Taskwarrior and techniques. • The Developer Mailinglist is focussing on a more technical oriented audience.
  33. Taskwarrior is platform independent • Most flavours of Unix and

    Linux, including macOS • Windows 10 Linux Subsystem (Other Windows versions with Cygwin – unsupported, but known to work) • Android with Termux • Third-Party Apps (Android-Client, GUI based on NodeJS, . . . )
  34. Conclusion Taskwarrior . . . . . . is easy

    to learn. . . . grows along with the work. . . . is unbelievably powerful. . . . is very fast. . . . is easily extensible. . . . is actively developed. . . . can be influenced by users (feature requests). . . . has excellent and very friendly support.