Saturday, March 01, 2008

Sloth v0.1.1 beta released

Hey "all".

So it is time for another beta, this time we're talking about Sloth v0.1.1 - an exciting new version which again has improved a lot of the internal design in Sloth. This means more unit tests for verifying that code changes does not break existing stuff, optimized code, and a cleaner, more maintainable design. This is of course a great benefit as it makes adding new exciting features a lot easier. But what visible changes does Sloth v0.1.1 give you, the user?

Works on Vista "out of the box"

Vista has gotten a lot of heat, but it won't disappear any time soon, so I thought it was important to support it properly. Sloth now puts log- and configuration files in proper places so that Vista does not go ballistic because it tries to write to Program Files etc. This also means Sloth works well in terminal server environments.

Alert changes

You can now tell Sloth to alert you when a particular show is on - no more tagging or creating a rule manually. Just point to a show, right click, and choose "Notify me of this show". When the time comes, Sloth will let you know. Also, there is now an option (on by default) to tell Sloth not to display alerts while a full-screen application (presentation, video, game) is running.

If your screen resolution or screen working area changes, Sloth will now rearrange any open alerts to reflect this; No more alerts all over the place. When an alert is closed (automatically or manually by the user), any remaining open alerts will be moved to fill the open slot.

Rule handling changes

Rules are now handled in their own unit-tested section of the configuration. Quite a lot has been done internally to work with "delta rules" - i.e. when there is a rule change (a rule has been added, deleted or modified), Sloth will only update with the changes, not all rules as before. For users with significant amounts of rules, this should be noticeable. There is also a new search subsystem, which is currently only used for rule matching. Not yet optimized, but almost as fast as the old system, and vastly more flexible.

Community functionality

There is quite a lot being done to support community functionality; Show ratings, discussions etc. Not a lot of this is visible in the current beta, but more will be seen soon. It is now possible to rate shows in the community, but that won't show up for anyone else yet. The community functionality also includes a simplistic news system and a better Sloth Updater feature.

Better tools for helping me debug problems

A new program - SlothBetaInfo - is now included in the start menu. This will make it easier to locate logs etc. Also, if Sloth should crash somehow, you will now get a window with exception info that I would highly appreciate on the forum along with an explanation of what went wrong.

Other changes

Loading the XMLTV data file is now a lot faster. The notification and installation of newer versions is a lot more robust. A lot of old code has been cleaned up and refactored. TV data grabbing is less error-prone. Sloth also handles new TV channels showing up in data files without problems.

More statistics

As a follow-up to last time, where we had 92 passing unit tests, we now have 355. Does this guarantee that there are no bugs in Sloth? Of course not. But it means that if I change some code that is covered by a unit test, and break something, I'll know right away. And as I mentioned after v0.1, if a new bug is found in this code, I can add a unit test to check for it - if it comes back, I'll know immediately. Another important metric here is code coverage - how much of the library code that is actually tested by unit tests. The current numbers are:

SlothCommunity 40%
SlothCore 65%
SlothUtil 73%
SlothConfig 76%

While 100% code coverage would be nice, it's not necessarily realistic. However, I will work to improve the testing, making sure it is harder and harder for bugs to slip by.

Summary

Well, perhaps no revolutionary new features, but all of the above contributes to make Sloth a much more mature, stable application. I will try to move into quicker-iteration mode now, adding some nice new features and releasing both alphas and betas at a quicker pace. Happy testing!

No comments: