SlimTune: UI Improvements

I’ve been doing some work on SlimTune quietly, and now it’s to the point that I have to decide what the next phase of things should be. There are essentially three major groups of work to tackle: UI improvements, memory profiling, and instrumentation. I’ll spend this post explaining what I’m looking at with the UI.

One of the ideas I had with SlimTune was to make the front-end pluggable, so that you or I could develop various views of the data that are neatly customized to focused goals, or provide cool new features. That has worked out fairly well, with the caveat that no one except me is writing visualizers. (That’s fine, the database format isn’t that stable yet.) However, there turned out to be a number of problems with how the views are actually managed.

Each visualizer is attached to a particular connection, which represents an underlying database and potentially a running application being profiled. That’s fine, except that all of the connections and visualizers are jammed into the same window. That’s fairly confusing. So step one is going to be to separate each connection into a separate window, and let them all function separately. The transition to a single document, multi-window user interface should be a lot easier to organize and keep track of what’s being profiled and where the data is available.

I’m also looking to make the visualizer organization within each window more cohesive. Right now the approach is tab based, and the only way to tell tabs apart is whatever text fits into the caption area. My inspiration for this change comes from an Apple tool called Instruments. The basic idea is to assign a section of the window to be an overview of all the visualizers that are active, possibly with some type of very simple summary graph. The goal is to improve how much information you can see at-a-glance, and to enable you to get to the information you want more quickly.

I’m also going to be trying to clean up the individual visualizers a little bit, since it seems like they have some rough edges. I’m hoping to integrate at least very basic snapshot support, for example, and repair some general interface problems. The “dotTrace” style will probably get more work done, because honestly I just like that one more. I know some people prefer the NProf view, and I think you’re maybe a bit crazy — but this is exactly why the whole visualization system is pluggable. Everybody doesn’t have to work with the exact same UI.

Honestly, how many profilers have you guys worked with where the interface was better than “workable”? My experience has been that the best of the bunch are merely alright, and it goes downhill from there. I don’t think SlimTune is great right now, but I feel like the core ideas are there and it’s just an organizational problem right now. I’m hoping that with the next release branch, 0.2.x, users will enjoy a much better overall experience.


6 thoughts on “SlimTune: UI Improvements

  1. Just a word to say that your efforts on SlimTune are really appreciated. I’m looking forward to try v0.2’s UI. Memory profiling is another cool thing I’m eager to try.

  2. Since it sounds like you’re about to redo the whole UI, maybe you could make it in WPF instead of WinForms? That’ll open the door to using more tools on the UI, including Expression Blend. It’d also be easier to maintain in the future, and more future proof in terms of continued improvements from MS as well.

    1. I specifically chose not to write it in WPF; because of the cross platform aspirations, I figure simple WinForms 2.0 is a more common baseline. You can host WPF controls inside a WinForms window, so I figure that maybe a couple visualizers will be written in WPF. That’s where it will come in most effective anyway.

        1. It’s quite possible — but I don’t see a very compelling reason to bother. The visualizers are really the only sophisticated parts of the UI, and those can already host WPF.

          Oh, and Silverlight 4 isn’t actually out yet, which is a bit of a roadblock.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s