****************************************************************************** README - The WTimer Web Application ****************************************************************************** ============================================================================== Description ============================================================================== WTimer allows you (and your group) to enter time sheets, to store them into a database, and to retrieve reports of them. What can you put into a time sheet? These sheets are organized by days, and every day has several rows. The rows contain the clock time when the activity starts, when the activity ends, how long it lasts, a project identifier, and a description (free text). I am using WTimer to write up how long I work for certain project activities, and to add the activities to project sums. WTimer is a web application. This means that the interface is accessible through a web browser, and that the real program runs on a server that can be reached over the internet. As I am working at different places it is important (and comfortable) for me that I can work with the application from all sites that have internet access. WTimer is a groupware program. It is not (only) personal software, but it can be used by a group of people at the same time. Every user has his or her own account, and can store one or several time sheets in the database. For every time sheet the owner can determine who can see and read it, and who can modify it. All groupware functions can be controlled over the web browser interface. Most administrative tasks can also be done via the web interface. This includes the addition and removal of user accounts, changing passwords, the creation and deletion of time sheets, and changing access permissions. Although some users may be administrators, many of these tasks can be performed by unprivileged users, as far as this is reasonable. Of course, there are still some tasks that need shell access to the server, e.g. database backups, checking the log files, etc. ------------------------------------------------------------------------------ Software requirements ------------------------------------------------------------------------------ The server part of the application must run on a Unix/Linux/BSD system (sorry, little chances that I port it to Windows). As further major software components a web server, and a database management system are needed. The detailed requirements are listed in the INSTALL file. The browser, however, can be almost any product. It is tried to support both older browsers and the newest CSS2 features of modern browsers. The start page of the application asks for a so-called "grid style", which selects one of five fundamentally different ways to lay out text and graphics on the browser display. Four of these ways are dedicated to CSS2, but the fifth selects a classic style that should work everywhere. I have tested these styles for a number of current and older browsers, and at least the classical style worked. Of course, it is better to use a browser that supports one of the CSS2 styles, because the application runs better, and it looks fancier. It is not necessary that the browser supports scripting. This means that even users can run the application who do not trust the security mechanisms of the browser. Without scripting, the essential functions still work, only some comfort is lost. For example, it is no longer directly checked whether entered text has the right format, but these checks are defered until the next button is pressed (now these checks can be done on the server side). Cookies are another browser feature that have a bad press. WTimer uses cookies only to store the grid style the user has selected the last time the application was started, and for nothing else. The user is even asked if he or she wants to enable cookies for the current session. ------------------------------------------------------------------------------ Technical Innovations ------------------------------------------------------------------------------ As far as the end-user features of WTimer are concerned, the application is a simple but robust product. I have written it not only because I need it for myself, but also to show innovative techniques how to program web applications. The application uses the framework WDialog to do all the little processing steps that finally make the user interface. WDialog incorporates a number of principles that distinguishes it from other such frameworks: - There is a strict separation between the definition of the user interface, and the program that controls it. The user interface consists of a number of dialogs that are defined by HTML elements interspersed with special "links" to the program, but almost no algorithmic elements. This improves the maintainability, as you can change the user interface with only little knowledge about what the controlling program really does. On the other hand, the program can be optimized without needing to touch the user interface definition. - The framework checks all incoming and outgoing data, and performs the necessary coding changes. For example, the programmer cannot forget to escape unsafe HTML characters, because the framework automatically performs this step (unless it is explicitly told not to do so). This eliminates many error sources of web applications. - The framework defines the basic control and data flows. As fundamental service, it provides persistent sessions that contain data over a longer series of user interactions. The programmer needs not to program database queries only to store the dialog state between subsequent HTTP requests, the session service does this already. The data stored in the session is organized as so-called dialog objects that define the ways the data can be accessed. The framework also defines that the dialogs can get program control in two phases, one preparing the next displayed page, and the other processing the previously visible page. This helps the programmer to structure the code. And the best is that this is not only an academic approach, but a working technique of realizing applications. It has already been used in corporate environments, and WTimer is only the first application that is released as free software. WTimer is written in Objective Caml, a programming language that is not widely known. O'Caml is somehow what Java wants to be: it allows a modern way of programming, and is executed very efficiently (both in speed and RAM requirements) at the same time. You can think of O'Caml as a strictly typed version of Scheme with a new syntax. O'Caml is currently leaving the small academic circle who have used it for years, and faces a larger group of users from both universities and industry. ============================================================================== Download ============================================================================== You can download WTimer as gzip'ed tarball [1]. ============================================================================== License ============================================================================== WTimer is distributed under the terms of the General Public License. See the file COPYING coming with the distribution for details. ============================================================================== History ============================================================================== - Version 1.0: Initial public release -------------------------- [1] see http://download.camlcity.org/download/wtimer-1.0.tar.gz