views:

765

answers:

11

I'm interviewing this week for a position at a firm where I would be the sole initial developerplus support the application I am taking over work for. Because positions like this can vary so wildly in the details, I plan to go in advocating a number of specific approaches that would make the job workable.

One thing that I'm considering bringing up is an inclination to move the existing source code out of SourceSafe (where it is currently resident) into a better version control product like Perforce.

I've had a number of bad experiences with SourceSafe causing massive problems like permanent file lock-out and code corruption. Alone, I'm afraid that those anecdotes sound like "I want to change it because I don't like it." If I'm going to bring the subject up, I want to have a slam dunk case.

So, what are the empirical reasons that SourceSafe is viewed as an inferior product?


See also:

+2  A: 

My last experience with Sourcesafe was years ago, so take this with a grain of salt. In my experience, it doesn't scale well as the number of developers touching the same code goes up.

There is no way to have multiple people working on the same code, and then merging their changes together on check-in. Instead, each developer has to lock the files they are working on, while the other developers can't make progress on anything touching those same files.

Chase Seibert
Oh, you CAN. Concurrent checkouts can be enabled. Then much prayer must be offered to the VSS gods that the merge doesn't explode.
Adam Robinson
+10  A: 

There's a long list of problems here (admittedly from 2002 but the product hasn't really changed since then)

Stuart Dunkeld
To be fair, the 2005 upgrade was a little more substantial. But it had been standing still before that. Still +1 for the link. Good ammo.
Henk Holterman
+15  A: 

Empirically, it makes no sense to trust your precious source code to a piece of software that isn't even up to the level of reliability as Microsoft Access. The product should have been dumped years ago. It's just not up to modern standards.

I'd rate it below any open source product like CVS or SVN, and I don't know of any product I'd rate below it, except maybe an older version of VSS.

John Saunders
+1 for being succinct
Adam Robinson
But, why is it considered unreliable and "not up to modern standards?" What is it missing?
Jekke
A reliable data store. It just stores files on a file share. No transactions. Nothing. Microsoft Access is more reliable than that.
John Saunders
This is probably the single best answer, but also the hardest to "prove" to someone unfamiliar with SS (and sadly, even some who are). Thing is, many teams just got "lucky" - SS worked just fine for them for years - and they took this as evidence that it wasn't *all that bad.* Like the program with serious concurrency issues that worked fine for a decade on single-processor machines... until someone tried to run it on their brand new dual Pentium Pro, and all hell broke loose.
Shog9
@Shog9: Unfortunately, these are also the people who aren't bothered by the fact that the most recent release of VSS is 6.0d. The same "6.0" as in VB6 and VC++ 6 and Visual Interdev 6.
John Saunders
@John Saunders. My installed VSS is version 8.0.blah (VSS 2005) http://dl.getdropbox.com/u/1388427/screenshots/sourcesafeabout.PNG
Matthew Lock
Versioning (6.x, 8.x) wouldn't be a problem if there weren't any issues with the product.
Alfred Myers
+3  A: 

SourceSafe is an antiquated technology built upon Windows shares. The storage mechanism (non-transactional "flat files") is a recipe for poor performance and bugs. Its adoption has nothing to do with what it has over other SCM's, and everything to do with the fact that it was "already there".

I can't comment on Perforce, but I can say that VSS compared to, say, Team Foundation Server is a very weak offering and should be used only in circumstances where there is already a large investment in it and NO money can be spent.

Adam Robinson
There are plenty of excellent VCS systems. A migration might cost a bit of time, but your source code is your crown jewels. It should be stored safely.
Kristof Provost
+11  A: 

The big one that I've experienced personally is database corruption. It happens and it is painful. Aside from that, it's pretty slow compared to more modern SCMs.

If I were you, I'd recommend moving to at least TFS. The integration with VisualStudio is just as tight, it is much speedier, and the idiom is pretty much the same. I've had no problems with it in the 4 years I've been using it. Perforce is expensive and that's probably not something to toss around in an interview.

bbrown
I used to use VSS on a team of about 30 programmers, with 2 million lines of code, and database corruption was a way of life. Something we just expected and made sure we could cope with.So nice to work with Perforce today instead.
justinhj
+3  A: 

Microsoft does not use it internally. Instead, they got a source license to Perforce, and they've hacked it up to suit their needs. This is telling, since Microsoft proudly dogfoods their other products, like Windows and Office.

Michael Donohue
Interesting. Do you have a citation?
Bevan
You have some proof of this? See http://blogs.msdn.com/bharry/archive/2009/07/17/a-dogfooding-milestone.aspx for a counterpoint.
John Saunders
While this may have been true at one time, I believe they've now moved on to Team Foundation Server.
Gregory Higley
Gregory is right, and when TFS was released they had import options for ClearCase (marketleader) and Perforce.
Henk Holterman
My information is a bit old, but neither SourceDepot (the internally hacked Perforce SCM) nor TFS are Visual Source Safe, so the point stands that Visual Source Safe is not used internally. TFS appears to be a huge improvement, which Microsoft does use internally.
Michael Donohue
Microsoft still uses SourceDepot (aka Perforce) for the Windows source. I have no cite for this other than personal experience. No idea what gets used outside of the Windows team, but I'd bet there's virtually no one at Microsoft using VSS.
Michael Burr
+4  A: 

Back in 2002/2003 in a former job, I ended up being the guy who had to babysit our VSS installation.

We gave VSS it's own dedicated server - real physical hardware - in order to minimize disruptions, and still we had regular problems.

Once a week I had to go and fix broken locks - locks that couldn't be released by the developer who placed them.

Around twice a year I had to recover from a corrupted repository - there seemed to be some kind of built-in limit at around the 1G mark, whenever the repository grew much past 1G things went bad pretty quickly.

Given that there are better tools - with better integrations - that are now available at zero-cost, switching from VSS (to me) is a no-brainer.

Bevan
+3  A: 

I agree that VSS is a horrible piece of software but other than the possible database corruption problem, it seems like your situation will be a difficult one to sell people on. For example, you can't say VSS has terrible merge support because, well, you're the only developer. You can't complain about locking checkouts for the same reason. Unless your app is pretty good sized, you can't argue from the suggested 1 GB maximum database size that VSS suggests.

I personally think that in an interview like you're suggesting, you'd be better off looking for lower hanging fruit to suggest like iterative development, TDD or a wiki for documentation. I have fought the good fight to move from VSS to Perforce in an enterprise situation and that was hard enough. I can't imagine trying to convince management of a major source control change on an application that has one developer. YMMV.

Brett Bim
Yeah. If you're the only one using it it's not so bad. It _probably_ won't trash your files too often. You _probably_ won't need any decent branching and merging functionality too often. I actually found the UI halfway decent. It didn't originate at MS, so the command-line interface wasn't so bad either.
Marsh Ray
Yeah, but the dialog boxes were created for 640x480 monitors, and most were not resizable! Though I have a vague recollection that the final release allowed some of them to resize?
John Saunders
+1  A: 

See also Better SCM Initiative: Version Control Systems to Avoid.

One of the issues that I have read there, and I haven't seen mentioned so far in the answers, is that VSS has no support for deleted then recreated files: either you purge history of file (and can never recover old version), or you can create file with the same name as some deleted file had. Even CVS (which is also file-based) tried to did this right by using 'Attic' area.

Jakub Narębski
+1  A: 

Because it makes your source unsafe even when in repository.

User
+1  A: 
  1. Code Corruption (including your entire history stack)
  2. Binary file corruption (we had this issue specifically with PDF templates)
  3. Poor integration into Visual Studio IDE (very buggy)
  4. Constant file lockouts
  5. Did i forget to mention repository corruption...eeek
  6. No branching

I can go on and on. The bottom line is to absolutely avoid this product. I think it may go well with smaller projects, but developing enterprise level applications should not involve dealing with constant codebase repository issues.

Sergey
As per http://msdn.microsoft.com/en-us/library/aa302175.aspx it supports branching.
Alfred Myers
Better link: http://msdn.microsoft.com/en-us/library/aw4a9dsx(VS.80).aspx. It shows how to branch, merge and perform other tasks.
Alfred Myers
There is a fix for the PDF corruption issue. http://support.microsoft.com/kb/923434
Catherine
I believe we tried this patch for PDFs, which did not seem to fix anything.
Sergey