Inspired Software Development::VSS Performance Improvements

With all the hubbub around Visual Studio Team Foundation--which will be available for download for the first time, later this week (!)--you might be wondering what's happening with Visual SourceSafe. Well, the SourceSafe team is hard at work on the next version, which will be released with Visual Studio next year. For details, see The [new] Future of Visual SourceSafe or The Roadmap.

What's going on behind the scenes in SourceSafe-landia? 
Shortly after we shipped Visual SourceSafe 6.0d, the SourceSafe program managers sat down to read and cull a feature list from your many, many emails, newsgroup posts, blogs, articles, voice mail messages, handwritten letters, online chat transcripts, and messages in bottles about the product. They decided, quickly and unanimously, that performance is an issue of universal concern. Additionally, they decided that performance was one user concern that we could reasonably and cost-effectively improve. Aaron Junot's recent post about SourceSafe performance is typical,

"If you have ever worked through a vpn using vss, you know the pain it can cause.  I still have a bald spot from where I hit my head on my desk one to many times waiting to check something in.  Something like a 1 line change, where you wonder how it could take literally minutes. 

So after some searching, I found a little app that seems to be working extremly well.  Vssconnect from VoxCode software has server bits that runs as a service on the VSS box, and client bits.  Server is pretty simplistic, and offers a couple options over the normal vss server, but nothing to cheer about.  The client, on the otherhand, is a very fresh perspective on vss.  Make to look like vss with a facelife, the ui does everything the normal vss ui does and a few extras.  It also seems much faster then the normal ui.


Anyway, check it out here."

Six months ago, the indefatigable and ever-resourceful GPM of the SourceSafe team convened a meeting to kick off the team's perf improvement effort. As usual, he had a cool gimmick: beer, pretzels, and Monster Garage. I've said it before and I'll say it again: if you want people to come to your meetings, Just Add Beer. ;-). If you want to sell them on an idea or cause (like, 'You CAN make [your product name] scream like a Maserati'), show them a motivational HowTo video.

In the months since that seminal meeting, the walls of our offices here in Redmond have been festooned with flame-covered cars and street signs like "Performance Alley". We have 'performers of the week', flaming beverage containers, and Monster Garage paraphernalia (air fresheners, etc). Heck, the SourceSafe GPM even ate chocolate covered grubs to settle a bet that the team wouldn't be able to improve LAN performance beyond a certain point. The results of this effort have been phenomenal and you won't be disappointed. In fact, the SourceSafe team's perf improvement project has led to some killer, outside the box innovations such as asynchronous project loading in the Visual Studio IDE.

What sorts of "gimmicks" has your team used to build excitement around a project and inspire great thinking and productive excellence?

I'm reminded of one very cool idea that I heard about at TechEd: using an Ambient Orb to track build quality: This gimmick is a spin-off on Rule #1 from the puppy obedience handbook: immediate discipline is more effective than a delayed response. When a developer's checkin builds without error, the ambient orb stays or turns green. When a checkin causes the build to break, the orb turns RED. While the ambient orb gimmick is limited to geographically co-located teams (pair programming shops and those in cubicle offices, for example), the lesson it holds (Rule #1...) probably applies to your team as well.
Comments (4)

  1. I’m not sure if I should laugh or cry about Jesse James being the Microsoft Poster Boy of performance. Is the next version of VSS going to come with a flame thrower? Although I think it is amazing what a team of guys can turn a car into in a week, I had never thought of the show as inspirational. Now I am going to sit through the reruns with a whole new view point.

    I guess there is a lot to be taken in on how to work under an extreme deadline. It makes it much clearer that it is never too late to scrap something and start over if it just isn’t working.

    Just one question to clarify the flaming beverage containers. Is that beverage containers with flames on them or is it containers for flaming beverages such as sambuca?

  2. Jason Mauss says:

    Most people administrating VSS don’t seem to know about setting the CP_OnSelection value to NO. This is incredibly useful for users accessing VSS over a remote connection. Why? Normally whenever you click on a folder (a project or project grouping level) VSS performs a selection operation, which can take a while over a slow remote connection. By setting CP_OnSelection to no, users can drill down in the project hierarchy and just double-click or hit Enter when they find the folder they want to actually select, not having to wait a while for each level they expand. I’ve found this to solve half of the remote connection slowness issue for me.

  3. Jerry Pisk says:

    Users can set that project selection behavoir themselves, it’s in Tools -> Options -> View -> Make selected project the current project. That way you can let your users choose, instead of forcing them to double click even when they don’t want to double click each time they select a project.

Skip to main content