Robust job scheduling lives in TaskForest

By

TaskForest is a simple job scheduler that requires few resources to run. You can configure it using text files or control it completely via the command line, though it also includes a bundled web server and corresponding web interface. Because it uses text files for configuration, you can manage its configuration with common source control tools, and use utilities like grep and diff to analyze job dependencies. TaskForest recovers gracefully after server outages and resource shortages.

The software is the brainchild of Aijaz Ansari. He says, “For the past 15 years I’ve been volunteering with schools, community centers, and nonprofit organizations in the USA, helping them with their web sites and, more recently, web applications. Managing networks and servers is an important chore, and I wanted to minimize the time I spent on tasks that could be automated. After having to troubleshoot a server using an SSH client on a BlackBerry while in line at an amusement park, I began to appreciate the need for a powerful job scheduler that could be accessed from the most spartan of clients. As a volunteer, I couldn’t afford the expensive schedulers, and every open source one I saw had a heavy footprint. After years of hesitation I finally decided to write my own scheduler in early 2005.

“The hardest part of the development was done with paper and pen – drawing out different job dependency scenarios and trying to come up with an intuitive, expressive textual representation of the relationships between jobs. Once that was done, my favorite editor and Perl on my laptop were enough for all the development since.

“Initially, the software really wasn’t robust enough to make public. As I became more satisfied with how it worked, I realized that I had to submit it to a repository where people like me could go to look for it. SourceForge.net was the obvious first choice, because it was the first place where I went to look for job scheduling software before I decided to write my own. A secondary reason for submitting it to SourceForge.net was that for a long time I was only acting as a consumer in the world of open source software. I wanted to be a more complete participant and give back to the community. Submission to SourceForge.net gave my project a sense of legitimacy: It was more than just a set of Perl files on my machine, it was a real project. Just its presence on SourceForge motivated me to keep working on it. I didn’t want the project to become stagnant and die off with neglect.”

Like several projects profiled here recently, TaskForest pays special attention to providing good documentation. “The same way that test cases are part of the project, all documentation (and there is a lot of it, I’m glad to say) is also part of each release,” Ansari says. “I’ve also recently started using the screencast applications Jing and Camtasia to create little videos that document individual features.”

Ansari is particularly excited about one feature added to the most recent release: automatic e-mail when a job fails, is retried, or succeeds after being retried. “Every aspect of the e-mails, from the SMTP envelope information to the MIME headers to the e-mail body, is configurable based on the characteristics of the job. Combining that functionality with good e-mail filters can give you a very powerful workflow where, for example, only developers could be alerted every time a job fails and is automatically retried, but downstream clients could also be alerted when a job fails after multiple retries and the scheduler finally gives up on it.”

Ansari says two major enhancements are in the works for upcoming versions. The first is a major overhaul of the project’s bundled web site, to make it slicker and more like a desktop app. “I find it interesting that even though TaskForest is completely usable from the command line, I am now in the situation where I almost exclusively use the included web server and use TaskForest via its HTTPS interface,” he says. The second enhancement is support for multiple machines, so that TaskForest can work in a client-server mode. The developer expects each of these features to appear in releases about eight weeks apart, with perhaps a few minor releases in between.

Like most project leaders, Ansari would appreciate feedback from users on what they like and disklike about TaskForest, how they use the application, and what features they would like to see.

Comments are closed.