Friday, February 11, 2011

TimeLogNG

As a consultant, it is important to be able to track your time spent on different tasks and projects. This is necessary to be able to report everything accurately in your time sheet or invoices you send to your clients. Tracking time can be a tedious process, however, and there are different tools available to help you with this.

A long time ago, I found a tool called Timelog. I can't provide a link to this software, because it seems dead at the time of this writing. You should be able to find it again if you google for Timelog and kclee. Anyway, the tool did a terrific job and was written in Java. The only problem I had, was its inability to cope with different clients and projects. You were just able to track time spent on tasks, regardless of clients and projects. So my solution was to keep different files for different clients. This worked just fine, but consolidating all the different files into one time sheet was error prone and not so easy once I started to work for a lot of different clients. Since it was open source, I decided to assist the original author in redesigning (rewriting) the original application. As a result, the TimeLog NG project was founded.

A few years later, I discovered a new tool that did exactly what I wanted, called Stopwatch. At that time, this little application was still free and open source and hosted on java.net. Since it did exactly what I wanted it to do, the rewrite of Timelog got postponed again (no need to reinvent the wheel right?).
That same year, I started developing Eclipse RCP applications for a client I was working for. I also switched to a different employer and I was asked to give a not so short presentation on Eclipse RCP. As a demo, for this presentation, I wrote a Stopwatch version in Eclipse RCP. This was basically Stopwatch's model, with an Eclipse RCP UI on top. Writing this took a day or so and was ideal to demo most of Eclipse RCP's features.

In 2009, I think, the Stopwatch project on java.net got commercialised, so the TimeLog NG project was reinstated. The demo application I once wrote was uploaded in subversion and mavenized. If you checkout the project from subversion, you should be able to build it with maven 3. Tycho now works more or less and is capable of building an RCP product. Currently it only builds on Linux, but it's fairly easy to compile this on other platforms.

TimeLog NG is more or less stable, but the model is crap, it does not adhere to the ddd principles and it still has some bugs. The model is also serialised using XStream to persist it to disk, which tends to slow down the bigger your model gets. So, again, a rewrite is necessary. It also lacks some features which I think are must haves for a time tracking application. A simple start and stop button, for example, to record work on a task.

So, once again, I will try to rewrite this little application, help is appreciated.