Is SourceSafe for Newbies?

This is one of the most common common questions I see and I’ve always intended to create a polished, scenario-driven, reusable answer for my FAQ library.  Here’s a first stab.  If you’ve seen better, please provide links.  Ideas for how I can improve this? Please leave your comments.  For a great list of VSS-specific FAQs, see Mark Michalis’ amazing

Q:  Just wondering what any of you think about VSS – Should I use this product or not? If so, how will it help me as a newbie? Thanks for any feedback!


A:  SourceSafe is primarily designed for and used by software development professionals. In collaborative development environments, it can be used to enforce code access control: allowing only one person at a time to check out source files in order to limit editorial conflicts.  On the flip side, many teams use VSS to facilitate ‘parallel development’, where two or more developers work on the same source file(s) at the same time.  In the latter case, when each developer checks in their local changes to the SourceSafe database, SourceSafe automatically merges their changes, if possible.  If two or more developers change the same line of code, SourceSafe prompts them and gives them tools to manually choose which change they want to keep.


Even if you work alone, VSS can help immensely.  Let’s say you write the canonical ASP.NET datagrid app called ‘Library’ that displays a picture (from Amazon, of course) and other information about the burgeoning number of technical books in your personal programmer’s library.  Like any good experimental programmer (ahem, newbie), your primary purpose in writing this app is to explore different coding techniques, technologies, and developmental processes. You code for what seems like 100 hours and in the end your library app is a perfect thing of beauty.  Thinking that you might even be able to market it online as shareware, you email your code to a friend [BRANCH]* for code review and informal beta testing.  Fifteen minutes later he responds,


“Dude, cool app but SQL Server is *way* overkill. Unless you set this up as a hosted Web service or something, your end users won’t be able to afford it. Convert the back end to XML.”


You consider this directive for a long, long moment [SQL Server hums contentedly in the background] and you think, ‘Well heck, I have been meaning to dive into XPath and the XML DOM.  Let’s do it.’ 


Two days later your Library app is in shambles, you wish you’d never seen the word ‘Exception’, and ctrl+z can’t turn back the clock.  You freak out, bare your teeth, scream like a banshee, hurl small objects at the wall, and inadvertently spill your diet Coke on your petrified cat. You just experienced an uncontrolled moment. [‘Got Source Control?’]  If you had been using SourceSafe, checking out your project files for edit and checking in your changes every so often, you would have been able to rollback to a specific version in time or better, to a specific labeled version.


*[BRANCH] – Branch is a source control term that indicates a break in the continuous development of a codeline.  The most common reason that developers branch a codeline in a source control database is to create a patch for a specific version (eg, bug fixes for a released Beta 1) that they can test in isolation, deploy to end users, and later integrate into the main, evolving branch (eg unreleased Beta2).


If you email code to a friend, you don’t literally branch your application’s codeline as you would in VSS; you do so informally.  Now imagine that you continue to work on your version of Library while simultaneously and unbeknownst to you, your friend starts to work on it as well.  After two weeks, he proudly emails you his version of the Library Web app. It rocks. You decide to blend some of his enhancements into your version of the application but discover that it’s nearly impossible to do so without completely overwriting your most recent changes.  You just experienced an uncontrolled moment.  SourceSafe could have helped.


For more blog posts about source control in general, click Source Control.  For more blog posts about VSS in particular, see Visual SourceSafe or VSS Tips and Tricks.  You can also visit the SourceSafe home page.  If you’re really desperate, you can visit the microsoft.public.vsnet.vss newsgroup 24×7 to ask some of the world’s foremost experts on source control questions about VSS and source control integration for Visual Studio .NET.

Comments (18)

  1. Bob N says:

    Do yourself a big favor and start using some kind of version control, even if it is not SourceSafe. The more software you develop, the more times it will bail you out in a variety of different ways. It is a very small dose of discipline that will pay returns many times over in long run.

  2. Hmm.. Bob, I’d suggest a rephrase "Do yourself a big favor and start using some kind of version control, even if it IS SourceSafe."

    There are a lot of better source code control systems out there, but source safe is better than nothing.

  3. After reading that title, I thought this post was going to be a defensive, "It might seem like it’s just for newbies, but in fact some actual professional developers do use SourceSafe!"

  4. Martin says:

    >>Q: Just wondering what any of you think about VSS – Should I use this product or not?<<

    Well, Korby, that’s a interesting question…

    OK, I ask you directly.

    Is there in development a completely new source version system which should be delivered with Whidbey VS.NET Enterprise (as mentioned for example at or not?

    And if, how it is related to VSS and to version controlsystem used in GotDotNet workspaces.

    Pretty please, be (just for once) honest with us.




    I apologize for tone, but I am really tired from all this mess with regards to "MS strategy around VSS".


  5. Martin,

    I really hope and believe that I’ve always been honest and straighforward in my blog and I apologize if you feel like you’ve been yanked around in any way. The Visual Studio, VSS and .NET Framework teams are really working hard to be more open and transparent and include our customers directly early in the product development process. Regarding your question, are we developing a "new source version system which should be delivered with Whidbey VS.NET Enterprise"? We are planning to roll out some fairly major improvements to Visual SourceSafe in the Whidbey timeframe, including remote access over http/https, way better performance, Unicode support for differencing and merging files (yes, even in Russian!), and a few other little features that I’m not at liberty to discuss. I’ve been writing and debugging the docs for the remote access feature for the last few days. Maybe that’s what Mark was talking about? You should definitely ask him.

    About the GotDotNet source control provider, I know who to talk to if you encounter problems with it. The GotDotNet team is always trying to improve their user experience (and they have lots of users!) Therefore, if you discover an issue with it, please contact me offline and I’ll forward your email along to the right person to make sure it gets addressed as soon as possible. Thanks, Korby.

  6. Mike, you’re right. I should’ve chosen a different title like, SourceSafe is a Great Source Control Tool for Newbies and Professional Developers Alike.

    Jerry, You write a mean blog and I respect your opinions greatly. You had some good points about source control integration in VS.NET in But I think you’re wrong in this case and here’s why (needless to say, this is my own opinion, not my employer’s … as everything in my blog unless otherwise stated):

    In many different areas including setup, documentation and localization, UI (yes, UI), support, continuing improvement, and soon web access, VSS is orders of magnitude better than almost all of the alternatives in its price range. Sure, it’s not as scalable or as feature rich as PVCS Pro or ClearCase or even Perforce. But c’mon, most developers don’t need floating labels. VSS is not as sexy as Vault and there’s certainly nobody on the SourceSafe team as sexy as Eric in his corn field centerfold 😉 But SourceSafe has filled an important niche in the storage, management, and facilitation of collaborative development of software applications and other IP since I graduated from High School. Does it have competition? You bet! And I personally believe that this is healthy. I also believe that the wide range of quality competitors is both a tribute to VSS as a pioneering product and to Microsoft for bending over backwards to make applications like VS.NET as easy for competitive partners like Vault and PVCS (and many others) to plug into it as for internal customers like VSS.

  7. Korby –

    Thanks for the response. When I talk about Source Safe, I understand that there is a team of talented people working to make the product better for us all, and I respect the effort that goes into this. While I may criticize VSS, I mean it as constructive criticism. I’m glad that you take it as such.

    I’m also impressed that you referred me to my own blog as a rebuttal!

    Please do keep us posted on all that is VSS. I’ve enjoyed reading your blog.

  8. I think SourceSafe would get a lot less flack if it actually kept source code safe. A lot of developers are very annoyed with Microsoft because a product with huge design flaws hasn’t been updated for a long long time.

    At an absolute minimum, a new version of SourceSafe would need to have a proper server to be useful. With out a sever, one PC or network problem can corrupt a database, losing code. As there is no server, there is no security. As there is no server, vast amounts of data needs to be transferred over the network to complete a simple command killing performance (and why does SourceSafe access the network each time the mouse is moved over the file list?). With out a server, there is no way of adding correct time stamps to files (so if one PC has its clock incorrectly set, it can break the history off all the files checked in from it).

    It shouldn’t be necessary to spend five hours each night analysing a SourceSafe database to make it even get close to being stable (and accept that it occasionally losses file histories).

    To add insult to injury, Microsoft don’t document the file format SourceSafe uses and the automation interface is flaky so it is hard to move a database away from SourceSafe. Scripts that try and extract data from a SourceSafe database into a working source control system have to jump through numerous hoops to avoid bugs in SourceSafe (

    Lets hope the next version is better.

  9. Mevrick says:

    Which version of sourcesafe is under discussion here? i have been using sourcesafe for a long time onw, first 6.0 and now 2005. i found 2005 version to be a very goood version and really helps me and my coding partners in many ways.

  10. Mortgage Loans Information is proudly powered by WordPress MU running on Handy- entsperren. biz. Create a new blog and join in the fun!