March 28, 2012
This article was contributed by Koen Vervloesem
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.
Easy to learn
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.
Advanced functionality
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/.
Configurable and extensible
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.
Development
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.
Polished and frictionless
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.
Comments (2 posted)
Brief items
In any case, I feel that I have succeeded in constructively
disrupting an aspect of my work culture that made me
uncomfortable. This is the first personal project I’ve ever thought
of, coded, and made public, and I am pretty excited about it! It
makes me so happy every time the other bot says “that’s what she
said,” and my bot responds with something like:
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
--
Jessamyn Smith
There's a lot of code in glibc that I think could be very validly
worked on by "random" people, and I suspect that glibc is a project
that would really do rather well by itself with "drive-by
contributions" from developers who really have no interest in glibc
itself, but that were bitten by bugs or just performance issues
while they were working on whatever project that they are really
associated with.
That's certainly how I personally sent in a patch or two to glibc.
-- Linus
Torvalds (in the comments)
Comments (3 posted)
Version 1.12.0 of the
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.
Full Story (comments: none)
Version 1.4 of the Django web framework has been
released.
Improvements include proper time zone support, various security
improvements, and more; see
the release
notes for details.
Comments (none posted)
GCC 4.7.0 is out; it is being designated as a celebration of GCC's first 25
years.
When Richard Stallman announced the first public release of GCC in
1987, few could have imagined the broad impact that it has had. It
has prototyped many language features that later were adopted as part
of their respective standards -- everything from "long long" type to
transactional memory. It deployed an architecture-neutral automatic
vectorization facility, OpenMP, and Polyhedral loop nest optimization.
It has provided the toolchain infrastructure for the GNU/Linux
ecosystem used everywhere from Google and Facebook to financial
markets and stock exchanges. We salute and thank the hundreds
of developers who have contributed over the years to make
GCC one of the most long-lasting and successful free software projects
in the history of this industry.
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.
Full Story (comments: 50)
Version 1 of the "Go" programming language has been
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.
Comments (44 posted)
The GNOME 3.4 release is out. "
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.
Full Story (comments: 122)
As a sign of the approaching GNOME 3.4 release, version 3.4.0 of the GTK+
library is now available. Improvements include menu support in the
GtkApplication class, a new color chooser, improved touch support, smooth
scrolling support, a better Wayland backend, and more.
Full Story (comments: 61)
Roland McGrath has sent out
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).
Comments (32 posted)
Version 2.15 of the GNU C library (glibc) is available. Some new functions
have been added, a number of bugs have been fixed, and quite a bit of
optimization work has been done.
Full Story (comments: 79)
Version 11.0 of the XBMC media center application has been
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).
Comments (2 posted)
Newsletters and articles
Comments (none posted)
The H has posted
a
look at the OpenBTS and OpenBSC projects. "
The next stroke of
genius came in [OpenBTS's] approach to engineering the air interface. In a
proprietary base transceiver station (BTS) this would typically be done via
a heady mix of analogue and digital circuitry that takes cares of things
such as time division multiplex, complex modulation and high accuracy
timing. However, in OpenBTS these and many other tasks are handled in the
digital domain and by software running on a commodity processor. This move
massively simplified hardware requirements and made just about everything a
software problem, as opposed to one of reasonably advanced electronic
engineering involving many specialist parts."
Comments (14 posted)
Page editor: Jonathan Corbet
Next page: Announcements>>