Note: This page is still in progress.

At the moment, my focus has been to use emacs-wiki.el as the basic data engine, and planner.el to add planning capabilities on top of it. There is also integration with timeclock.el for tracking time spent on projects and tasks, and schedule.el for estimating when the day's tasks will finally be complete.

Below is the old text of this page.


The intent of the Emacs Scheduler Project is to provide a time/life management environment within Emacs that is sufficiently capable to handle the needs of most people.

There are several parts to this project; some of them represent new code, and others rely on facilities already available. They are:

There are a few new modules required for this project, while other parts are available use existing technology that is either already part of Emacs itself, or freely available. There still remains some integration work to be done, but it should require little to no modification of the packages themselves.

Below is a more detailed description of these modules — both new code that is being planned, and old code that is currently available.

The scheduler system for Emacs utilizes a few new modes, and integrates several others that are already fully developed and available. They are:

The basic relationships of the modules are as follows:

tasks
Reads and writes the task data from a text-based database.
schedule
Uses the diary, calendar, timeclock and other scheduling variables to compute when tasks will be done, according to the time available. Thus schedule is essentially a time projector.
timeclock
Provides a simple interface for tracking how much time the user spends on each task.
todo
A visual interface for examining and changing task data. From this interface, you can view the information hierarchically, according to a query, by importance, by urgency, etc.
status-report
Presents the task data in a format more digestible by human readers. It takes two contiguous time periods, and shows the work that has been done for the former period, what slipped in that period, what will be done during the next period, what should have been but can't be gotten to now because of slippage, etc.
timecard
Like status-report, but this module reports on time spent and how it was spent, rather than being task-oriented like status-report.

Tasks is a module soon to be written which records all of the task data used by the scheduler.

Schedule mode is a minor mode that expects a specially marked up outline buffer that contains all of the tasks you intend to complete, or have already completed. The amount of data recorded is growing steadily, so it's possible that this may move into a database/view arrangement, rather than the flat text format currently in use.

schedule.el can be integrated with timeclock.el so that updating of progress metrics is not so cumbersome.

timeclock.el is not designed only for keeping track of the time you spend at work; rather, it's a general time-event recording mechanism. However, in this context, it is being used to record the time that you spend on various tasks, so that your progress toward completion can be displayed.

Although not written yet, this module will use the data from schedule.el and timeclock.el to generate a full status report that can be sent to your manager, or filed away for future reference.

Also not written yet, this module will use the data from timeclock.el, and will integrate with cal-tex.el (the TeX printing system used by the Emacs calendar) to create weekly, biweekly, or monthly timecards, based on a format that can be easily tailored to your own working place's requirements.

If the data recorded by schedule.el gets too cumbersome, I will write this mode as a display/editing engine, to facilitate access to the data recorded and managed by schedule.el.

From the Emacs Info manual:

Emacs provides the functions of a desk calendar, with a diary of planned or past events. To enter the calendar, type M-x calendar; this displays a three-month calendar centered on the current month, with point on the current date. With a numeric argument, as in C-u M-x calendar, it prompts you for the month and year to be the center of the three-month calendar. The calendar uses its own buffer, whose major mode is Calendar mode.

The scheduler system uses the Emacs calendar to know when holidays are; also it can mark up the calendar based on the tasks you have left to do, so that you can see "at a glance" on which dates things will be completed. (not yet implemented)

From the Emacs Info manual:

The Emacs diary keeps track of appointments or other events on a daily basis, in conjunction with the calendar. To use the diary feature, you must first create a "diary file" containing a list of events and their dates. Then Emacs can automatically pick out and display the events for today, for the immediate future, or for any specified date.

The scheduler consults your diary to know when meetings and other appointments are going to come up that would disrupt its projected completion estimates. However, you must annotate your diary entries in order for the scheduler to know how long they will last. Use a time duration string in parentheses at the end of the appointment description for this purpose, such as 1h for a one hour long appointment.

From the Emacs Info manual:

If you have a diary entry for an appointment, and that diary entry begins with a recognizable time of day, Emacs can warn you, several minutes beforehand, that that appointment is pending. Emacs alerts you to the appointment by displaying a message in the mode line.

Appointments provide reminders of when time-critical events are fast approaching. This feature is standard with Emacs.

BBDB is the Insidious Big Brother Database. It works as a powerful address book with many convenient tie-ins to other modules within Emacs. Once you've collected some data in your BBDB database, you can quickly visit home pages, complete e-mail addresses when composing mail, notice changes in people's addresses while reading mail, etc.

From the Info manual for bibl-mode, by Bryan O'Sullivan:

Bibliography mode (bibl-mode) is a subsystem of GNU Emacs which allows you to keep track of information on the World Wide Web and elsewhere. It is primarily intended for storing information about software packages, Web pages, mailing lists, and other data of interest to users of the Internet, but can also be used to keep references to books and papers, and can be extended to hold a heterogeneous database of most any sort of textual information.

Commands are provided to simplify the task of creating and maintaining records in the database, to access information over the Web, and to move easily through medium-sized databases. Other commands exist which allow information to be grabbed from mail and news articles, and to allow records to be pasted into other buffers.

Bibl-mode is an attempt on my part to speed up the process of adding to and searching through databases without going to too great an effort in this direction. However, if you can think of any features which could do with improving, or any useful features which are missing entirely, please get in touch with me.

Comments and suggestions are most welcome. I loathe seeing software written that functions only according to the work habits of its creator. If you have ideas, or experiences that you would care to relate, please send them to me at johnw@gnu.org.