Until a few months ago, I hadn't found a good tool to handle a task list and track my time. Several were tried, but none of them could handle all the requirements to my satisfaction: the tool should be usable on the command line with straightforward commands that are easy to memorize, it should be able to use the same task data on different machines without having to install and maintain a dynamic website, the tool should be able to track the time I spend on tasks and projects, and it shouldn't force me to follow a specific time management philosophy such as Getting Things Done or the Pomodoro Technique.
At the beginning of this year, during my annual and always unsuccessful New Year's resolution to manage my time more efficiently, I tried a beta version of Taskwarrior 2.0. While it isn't perfect, it turns out that Taskwarrior is right for my use case. This command-line task list manager maintains a list of tasks that you can add, remove and annotate at will. It has a rich list of sub-commands to do advanced things with your tasks, including reports, charts, time tracking, and so on, and it is extensible with Lua scripts. After a year of development, version 2.0.0 has now been released.
Version 2.0 still has to trickle down to the repositories of various Linux distributions, but you can download the source and compile it (it has been tested on various Linux distributions, the BSDs, Solaris, Mac OS X, and Cygwin) or use the binary packages for i386 Debian 6, Ubuntu 11.10, or Fedora 16. Older versions are available in many repositories, but Taskwarrior 2.0 has added significant changes and changed the command-line syntax, so it's probably worthwhile to temporarily use a 2.0 downloaded from the project's web site until your distribution's repository updates its Taskwarrior package to 2.0.
The first time you enter task in a terminal, it prompts to create an initial ~/.taskrc file, which has default settings and comments. After that, a task help command gives you a daunting list of sub-commands, syntax, and examples, but despite this apparent complexity the basics of Taskwarrior are quite easy to grasp if you follow the project's excellent documentation. The place to start is the 30-second tutorial which teaches you how how to add, list and delete tasks, set a specific priority to a task, and to mark it as done. These are easily memorizable commands like task add, task ls, task <ID> delete, and task <ID> done.
While the 30-second tutorial teaches you the most important Taskwarrior sub-commands, there's a lot more to the program, which would be difficult to find out on your own only from reading the man pages. Luckily, there's a long tutorial as well. After the basic usage, it explains projects, priorities, tags, undo and delete, information about tasks, statistics, annotations, due dates, calendars, and so on. For instance, when your tasks have due dates, you can see them highlighted on a calendar with task calendar. The program even provides sample holiday files for a couple of countries. If you include the holiday file in your ~/.taskrc, holidays are shown in another color on your calendar.
The second part of the tutorial handles some advanced uses of Taskwarrior. Some of the topics are tasks that are recurring weekly, monthly, or yearly, waiting tasks (tasks with a due date far out into the future that remain hidden until a certain date to not clutter your task list), dependencies between tasks, reports and time sheets, monthly and yearly charts, a summary showing your progress in all projects and sub-projects, filters, and import and export in CSV, YAML, vCalendar, or JSON format. It pays to follow both tutorials and try their examples before you start using Taskwarrior, and you should probably read them again after having used Taskwarrior for a while. There's also a gallery with some video tutorials, as well as some HOWTOs about specific functionality.
One particular interesting feature of Taskwarrior is the built-in synchronization functionality, which lets you backup, restore and synchronize task lists using ssh or rsync to share the same task list on multiple machines. So you can backup your local task list to a remote machine with a task push command, restore it with a task pull command, and merge a local and remote task list with task merge. Of course you can configure Taskwarrior to store its data (by default in the directory ~/.task/) in a Dropbox folder or any other directory that is synchronized between your machines, but the advantage of Taskwarrior's built-in synchronization feature is that it doesn't require you to install any third-party synchronization software; ssh access to a remote machine is enough. Note that the ~/.taskrc configuration file isn't synchronized by this method, just the data in ~/.task/.
Taskwarrior is highly configurable. A task show command shows more than 200 configuration variables you can set in the ~/.taskrc file with their current value. Variables that you have changed from the default values are highlighted in color. The colors for many types of information can also be changed in the configuration file, or you can use one of the several standard color themes.
You can also add your own variables to the configuration file, for instance to create custom reports with specific columns, labels, sorting order, and filters. The custom reports you add even show up in the help output of the task command and you can run it as a sub-command, just like the default reports. Taskwarrior 2.0 also adds the possibility of extending the program's functionality with Lua scripts, but unfortunately this is not documented yet.
Beginning with version 2.0, Taskwarrior has been re-licensed from GPLv2+ to the more permissive MIT license. One of the reasons the developers cite is that using the MIT license won't require that all plugins that ship with Taskwarrior be GPL compatible, which had to be done in the past. Another reason they cite is that "certain app stores don't accept GPL licensed software".
The developers welcome changes and give an overview of how you can contribute. There's a big issues list with feature requests and bug reports and the project has some big-picture architectural plans. For instance, they are working on a task server that will support synchronizing task data and later group collaboration. This task server will also be able to send out reminder notices for tasks that are due.
There's also a lot of development happening on Taskwarrior extensions and external scripts. One example is Taskhelm, a graphical interface for Taskwarrior. Other ones are VITtk, which is a vi-like interface for Taskwarrior, the web interface Taskwarrior-web, as well as some conversion tools.
As a nice illustration of the development activity, the development of Taskwarrior 2.0 has been visualized by the software version control visualization tool Gource. The data was extracted and visualized from the project's Git repository and converted to a YouTube video.
Taskwarrior will not appeal to everyone, but if you're spending a lot of time at the command line, it offers a frictionless window to your task list. It's always available because you don't have to switch to another window or open a specific web site. With an alias t=task in your ~/.bashrc, a couple of key presses are enough to view your current tasks and track your time. Of course it requires some time to get to know the right commands, but they are straightforward and the documentation and man pages (task, taskrc, task-color, task-faq, task-sync and task-tutorial) are excellent and comprehensive.
Our struggle today is not to have a female Einstein get appointed as an assistant professor. It is for a woman schlemiel to get as quickly promoted as a male schlemiel. ~ Bella Abzug
That's certainly how I personally sent in a patch or two to glibc.
-- Linus Torvalds (in the comments)Cairo graphics library is out. "The major feature of this release is the introduction of a new procedural pattern; the mesh gradient. This, albeit complex, gradient is constructed from a set of cubic Bezier patches and is a superset of all other gradient surfaces which allows for the construction of incredibily detailed patterns." There is also an X XCB backend, a lot of performance improvements, and more. released. Improvements include proper time zone support, various security improvements, and more; see the release notes for details.
New features include software transactional memory support, more C11 and C++11 standard features, OpenMP 3.1 support, better link-time optimization, and support for a number of new processor architectures. See the GCC 4.7 changes page for lots more information.released. "Go 1 introduces changes to the language (such as new types for Unicode characters and errors) and the standard library (such as the new time package and renamings in the strconv package). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the rpc package, into subdirectories of net." Lots of details can be found in the Go 1 release notes. GNOME 3.4 is the second major update of GNOME 3. It builds on the foundations that we have laid with 3.0 and 3.2 and offers a greatly enhanced experience. The exciting new features and improvements in this release include a new virtual machine and remote access application, a completely revamped web browsing user experience, integrated document search, first-class web applications, better graphics tablet support, application menus, and many more." See the release notes for information and screenshots. an announcement that the glibc steering committee, which oversaw development of the GNU C library, is dissolving. "With the recent reinvigoration of volunteer efforts, the community of developers is now able to govern itself. Therefore, the Steering Committee has decided unanimously to dissolve. The direction and policies of the project will now be governed directly by the consensus of the people active in glibc development." Joseph Myers, one of the volunteers who has helped to pick things up again, has added: "Everyone is welcome to join in the development, working in accordance with community-agreed practices and GNU policy, and commit access is routinely available for people making good contributions." He has also suggested that, over time, the eglibc fork may be merged back in to glibc. (Thanks to Michael Kerrisk). released. "XBMC 11.0 Milestones include Addon Rollbacks, vast improvements in Confluence (the default skin), massive speed increases via features like Dirty-region rendering and the new JPEG decoder, a simpler, better library, movie set scraping, additional protocol handling, better networking support, better handling of unencrypted BluRay content and structures, adjustable display refresh rate in OSX (to match the already available feature in Windows and Linux), AirPlay support, an upgraded weather service with geoip lookup, and much, much more. " (LWN reviewed this release in February).
Newsletters and articles
Page editor: Jonathan Corbet
Next page: Announcements>>
Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds