So I have been working on a little side project on and off for a year or two. Basically I wanted to experiment with different BOINC User Interfaces.
Anyway to make a long story short the project name I started using awhile back is BOINC Monitor. I didn’t announce it or advertise it. I just wanted to sit on it and work on it until I had something to show for it.
At the time I started it the only project that was close was called boincmon on SourceForge, but it was more or less abandoned. Since then Igor Bushin has release a few versions of an application he has named BOINC Monitor. Congrats to Igor!
So now I need to come up with something different.
Well I believe I have found and fixed the screen saver issue that has been plaguing the BOINC community since shortly after the 6.2 launch.
This bug wasn’t easy to track down, and was something of a perfect storm as far as the code was concerned.
The prerequisites for this bug were:
Graphics application window gets created behind the screen saver curtain window
Graphics application gets stuck in an infinite loop or deadlocks on startup
We had some backup code in the screen saver to check for keyboard and mouse activity separately from the project application but after the graphics application deadlocks that code was no longer being executed.
The reason that code was no longer being executed stems from the fact that the BroadcastSystemMessage() Windows API waits for a success/failure return value from the application to which it was sending, since the graphics application itself was deadlocked it caused the screen saver to lock up.
I didn’t realize that the BroadcastSystemMessage() API would not timeout on a hung application. So I learned something new this weekend.
If all goes according to plan I’ll be releasing a new 6.4 client as well as a 6.6 client with the screen saver fixes today.
I’ve been giving some thought recently to overhauling the BOINC Manager user interface.
The original GUI was a carry over from an MFC based version of BOINC Manager that was created even before I was hired on as an employee. The original didn’t even have the buttons off on the left hand side, the user would have to have guessed that they could right-click on something to bring up a context menu.
So, here we are four years latter and we are talking about adding more tabs to an interface that is already overly complicated.
My goals were as follows:
Combine the simple and advanced GUIs.
Reduce information overload. (The less information somebody sees right off the bat the less they have to parse)
Use icon based buttons instead of words to describe actions. (Reduces required screen space and simplifies localization)
Use icons people are going to recognize. (VCR/DVD Player/CD Player/iPod)
Provide a way to drill down into the complicated information. (My grandmother wouldn’t ever need to worry about resetting short term and long term debts for instance)
Include context sensitive help in the interface.
I haven’t thought through the multi-host scenarios yet.
The graphics were generated in MS Paint, these would not be used in the actual manager should we ever implement this.
This might not go anywhere, David wasn’t to keen on the idea. He wants to get a formal usability study of a few prototypes before investing in a new user interface.
This by no means should be thought of as a comprehensive specification, I think of this as a scratch pad.
If there is interest in the community to see something more formal I will go ahead and spec it out and submit it for review.
After a clean install, the client area should display a quick blurb that BOINC in and of itself is just a task execution engine and needs to be attached to a project/account manager before it can actually process work.
At the bottom of the blurb should be an attach to project and attach to account manager link.
Working User Interface
Clicking on would bring up a dialog specific to each section.
In the mock-up on the right hand side the ‘News’ section would disappear unless there are new news items. The news section is supposed to be a summary roll-up of various RSS feeds for each of the projects. It would also contain messages generated in the messages area for things like disk space warnings and the like. Another possible use for it would be the number of new messages for a thread you are watching in a projects forums.
Active Tasks, when expanded, would list the active tasks on the system in the format:
Both <Task Name> and <Transfer Name> would be truncated and an ellipse (…) added in the case where the names are to long for the display area.
Projects, when expanded, would list the projects the client is attached too.
Each project, when expanded, would have a section for the following areas:
The main window should have a vertical scroll bar for when everything is expanded, but it should not have a horizontal scroll bar.
[Update 28/08/2008 9:37am]Apologies to Michael Tughan, while I can’t recall seeing his designs for a Mac specific GUI it doesn’t mean I didn’t. I don’t know how much overlap there is, but I thought I had drawn my inspiration from a combination of Outlook 98, MSN Messenger, and Yahoo Messenger.