• akatherder (cs)

    I wonder how he would react if someone got so fed up that they shit on his shingle.

  • Andy Goth (cs)

    "As their app neared completion, a whole new set of requirements came in."

    <tmbg>But that's when all my troubles began.</tmbg>

  • Math is hard Barbie (unregistered)

    Sounds like most DoD contractors I know and/or work with. Unaware of modern tools, modern development practices, or even common sense approaches on how to develop things. And this is 10 years later. Heck, at least those guys are allowed to check into source control. Have it, can't use it.

  • java.lang.Chris; (cs)

    This is bullshit - if you don't update before a commit and your working copies are out of date, then CVS will abort the commit. The almost unprecedented mention of something positive about VSS, and the fact this came from an MS related forum suggests this is some form of astro-turfing.

    Addendum (2008-06-17 10:21): And having checked the CVS docs, it supports file locks as I thought.

  • Overthinking (unregistered)
    Unfortunately, Source Safe was so painful to license and manage
    No it isn't.

    I'm no fan of VSS but I'd worry about someone who found that part of the system to be the obstacle!

  • snoofle (cs)

    The Shingle notwithstanding, in 1986, I worked on something that automated scanning pages of (military) technical documents, programmatically decomposing each page into its component parts, reconstructing it via (SGML) markup, and storing the whole thing elctronically. It worked pretty well, and using the best hardware at the time, fully scanned, analyzed, disected and stored the source page image into a DB in about one minute.

    The military contractor I worked for was doing massive F15 upgrade contracts, and would not let us market the product because it was outside our charter. Our contract was winding down, and at the time, the government had said no more massive contracts to one vendor.

    The government representatives wanted my product as it would save months of lead time for document upgrades. No matter, it was outside our corporate charter. Three years later, the contract ended, we had no new work, and the place collapsed.

  • Chucara (unregistered)

    Bah, at my workplace we have the shingle implemented in Oracle Forms. Just 20 or so easy steps, and you have an (unenforced) lock on any file!

  • snoofle (cs)

    If they had to plan out several projects, each requiring its own shingle, would they then have a case of the shingles?

  • Chochos (cs)

    Exactly how the hell does UPDATE before COMMIT delete everything? I always update before commit, to avoid partial commits when a file is out of sync (although that is much less of a problem since I use SVN).

  • jtl (unregistered) in reply to Overthinking
    Overthinking:
    Unfortunately, Source Safe was so painful to license and manage
    No it isn't.

    Perhaps 8 years ago...

  • Ie (unregistered)

    Losing your code through an "oops" of source control is a rite of passage.

  • Sebastian (unregistered)

    The story's second half is nonsense. I don't know how the developer managed to wipe his local changes, but it doesn't work in the way the story suggests. On the one hand, CVS doesn't allow checking in if the repository version is newer than the local version. On the other hand, uncommitted local modifications are retained during update.

    Or was 1998's CVS that different/broken compared to later versions?

  • Rune (unregistered)

    A load of crap, that's what this is.

    Let's just assume that you CAN do an update on newer files and revert them to the old ones in the repository, how would issuing a commit directly after the update mess up everyones files? Since there are no changes to commit since the update, there would be no change in the repository. And even if you would be able to recommit the data with a new version number, people could not overwrite the stuff with older stuff, since it would then be outdated.

    It's just a bunch of nonsense. It contradicts the 'CV' part of 'CVS'.

  • Code Slave (cs) in reply to java.lang.Chris;
    java.lang.Chris;:
    This is bullshit - if you don't update before a commit and your working copies are out of date, then CVS will abort the commit. The almost unprecedented mention of something positive about VSS, and the fact this came from an MS related forum suggests this is some form of astro-turfing.

    I said the same thing when I read that. The only way I can see that sort of thing happening is if Mark were to have edited the file before doing a "cvs edit" on it first. On a unix system he would have had to ph*ck with file permissions to do that (which is sometimes ok, if you know what you are doing - I'm running with scissors). On a windows system, who knows?

    Still the WTF is at the root of the tree (Mark).

  • The.Jxc (unregistered)

    Gotta agree with the "bullshit" call on this one.

    If you have local changes waiting for commit, an update will either:

    • Do nothing (if nobody changed the code), or...
    • Merge the changes cleanly (if it can), or...
    • Merge the changes but mark conflicts with >>> <<< markers

    Under no circumstances will CVS delete your local changes.

  • Vicky (unregistered)

    I did work on a project once where the "source control system" was a bunch of post it notes. They were stuck on a whiteboard and each one had the name of a file written on it.

    When you wanted to edit a file, you took the post it off the board and stuck it on top of your monitor. When you were done, you put it back.

    It actually worked surprisingly well, although there were only two developers so it wasn't stretched. And of course it gave us no revision control or anything else helpful.

  • gabba (cs)

    Oh, I see the WTF. A shingle, especially a used one, is rather unwieldy, and would have a tendency to crumble when picked up. Plus, it's rather easy to counterfeit -- just go to Home Depot and buy another one. Well, that is, if it's an asphalt shingle -- that crucial piece of information was left out of the story. A cedar shingle might work better.

  • MadJo@Work (unregistered) in reply to Chochos
    Chochos:
    Exactly how the hell does UPDATE before COMMIT delete everything? I always update before commit, to avoid partial commits when a file is out of sync (although that is much less of a problem since I use SVN).

    I think he meant that the developer had forgotten to do that. Thus all updates in between were lost after dev#2 committed his work to the CVS.

  • real_aardvark (cs)

    Wait ... you mean there's no source control plug-in available for Notepad?

    Damn -- another business opportunity lost.

  • Matt (unregistered)

    TRWTF(tm) is that they're using CVS.

  • Andy Goth (cs) in reply to Code Slave
    Code Slave:
    The only way I can see that sort of thing happening is if Mark were to have edited the file before doing a "cvs edit" on it first.
    I believe it's possible to configure CVS to not require "cvs edit". Clearly this isn't a recommended mode of operation. Still, "cvs update" will gripe if it sees that it's being asked to stomp on a locally modified repository. So yeah, this article smells a little FUDdy--- "this is what you get when you use Open Source!" I'm not saying that this is intentional, just that this is how the article comes across.
    Still the WTF is at the root of the tree (Mark).
    Mark was doing just fine until the goalposts were moved. True, he should have either planned ahead for such an eventuality, or--- since he didn't--- he should have ceased development until he and Dave agreed on a new plan. But the originating problem was changing his requirements before he could finish the first release.
  • SkittlesAreYum (unregistered) in reply to MadJo@Work
    Comment held for moderation.
  • GettinSadda (cs)

    This is nothing but Microsoft funded anti-CVS propaganda!

    CVS was designed to specifically prevent this sort of thing happening

  • real_aardvark (cs) in reply to The.Jxc
    The.Jxc:
    Gotta agree with the "bullshit" call on this one.

    If you have local changes waiting for commit, an update will either:

    • Do nothing (if nobody changed the code), or...
    • Merge the changes cleanly (if it can), or...
    • Merge the changes but mark conflicts with >>> <<< markers

    Under no circumstances will CVS delete your local changes.

    Ah, the wonderful innocence of youth.

    Of course CVS won't delete your local changes (although you're missing out the cvs mangle -- oops, "cvs merge" -- command).

    Once you bring in Source Control, though, you bring in Process. All sorts of unexpected things can go wrong with Process.

    My last (web) project involved working from home. "How would that work?" they asked. "Um, Subversion," I said. "I'll help you set it up."

    Now, ignoring the minor glitch that the Sysadmin insisted on installing it on a server behind the firewall and not giving me direct access to it, this worked quite well. Two or three times a day I'd have to field calls as to why "Subversion is broken!" and demonstrate that, in fact, it wasn't. The other programmer was an excellent human being, and we finally got The Process working.

    Right up to the point where they hired an external auditor who "corrected" the Subversion configuration, to the point where it didn't work.

    "Subversion is broken!" a hysterical series of calls ensued, all the way up to Upper Management. (Upper Management in a ten-person company is a Big Deal.)

    It took us two days to figure out between us that the external auditor had copied the entire repository to one side and disabled all access bar HTTP/Apache, because that's all he was used to.

    Figuring out how to get everything back together again was a bit of a pain, and while we were doing that the project collapsed, because we weren't delivering agiley code fast enough. Which, incidentally, was the one thing that the external auditor was brought in to ensure.

    Oh for a shingle. Or at least a knobkerrie to beat the useless dingbat auditor to within an inch of his miserable little consultant life.

  • jnareb (cs)

    Well, shingle is no better than any version control system with locks, be it VSS, RCS or CVS. That said, from the horror stories about Visual Source (Un)Safe[1], and from experience with painful merging and branching in CVS (unless wrapped in tons of script like OpenOffice.org development[2]) version control systems in 1999 were not very easy to use.

    Nowadays it is much better (Subversion, Bazaar-NG, Mercurial, Git,...)

  • Patrick (unregistered)

    Everybody, at some point, accidentally stomps out new code with some sort of user error by way of source control. The real WTF was that Mark was too much of a d'bag to let anybody use source control when they clearly needed it.

  • NiceWTF (unregistered)
    Comment held for moderation.
  • dkf (cs) in reply to java.lang.Chris;
    java.lang.Chris;:
    This is bullshit - if you don't update before a commit and your working copies are out of date, then CVS will abort the commit.
    It's not quite as straight-forward as that. CVS will commit in that situation if you use the -f(orce) option, which is occasionally useful (e.g. when cleaning up someone else's mess). If some bonehead put that in their .cvsrc (or used it explicitly; there's no accounting for stupidity) they'll cause the effects described.
  • obediah (cs)
    cvs lingo gibberish

    Auditioning for that writer spot on 24? "The image contained a worm-virus!!!!!, Everyone reboot your ports and unplug your sockets! I'll normalize the router!"

  • Anonymous (unregistered)

    I think "Mark" was actually SpectateSwamp.

    Doesn't know what he's doing.

    Prefers to use "Simple" software

    Uses stones to solve his problems.

  • Stilgar (cs)

    Gentlemen, please check if you have the shingle before posting.

    Thank you.

    P.S. I am a fan of locks (not a fan of VSS though) and I am scared to death of merge.

  • Grovesy (cs) in reply to dkf

    Anyone ever used Serena Dimensions? The way if was configured on one very large project I worked on, an Update would wipe all local changes, even if you had explictly checked a file out... (so yeh, even though dimensions knew you had checked the file out, it would still overwrite it for you)

    It also couldn't do Delta updates... Subversion was out of the question as it was 'open source' and potentially buggy (unlike the heap of junk we had to use)

    Ohh and updates / commits were not transactional either, being the network was slow and the lack of delta updates it would take 1-2 hours to do a get-latest... during which, you might get 1/2 of another developer's commit (with 70 developers on the project, this was highly likely)

    And this wasn't a tin pot company that couldn't afford decent change control software, chances are if you live in the UK you shop there on a regular basis.

  • real_aardvark (cs) in reply to Stilgar
    Stilgar:
    Gentlemen, please check if you have the shingle before posting.

    Thank you.

    P.S. I am a fan of locks (not a fan of VSS though) and I am scared to death of merge.

    tar zfc the whole directory structure first, then. If necessary, check out from the head in a separate directory and do the same thing there.

    At least that way, you get to use worthwhile tools like emacs ediff, rather than relying on CVS for a 10,000 file project, some of which has been created on Windows, some of which has been created on Unix, and (for all I know) some of which has been created on Macs.

    I speak from experience, here.

  • Jack Bauer (unregistered) in reply to obediah

    Damn it Chloe, What have I told you about opening personal emails at work?

    Upload the coordinates to my PDA and I will deal with him within the hour.

  • heise (unregistered)

    Actually, you HAVE to update before commit in CVS. And no, update never deletes any local changes - the worst thing that can occur is lots of merge conflicts.

    Sounds like made up story for me.

  • Steve (unregistered) in reply to GettinSadda

    You might have missed where the article bashes SourceSafe much worse than CVS.

  • real_aardvark (cs) in reply to Grovesy
    Grovesy:
    Anyone ever used Serena Dimensions? The way if was configured on one very large project I worked on, an Update would wipe all local changes, even if you had explictly checked a file out... (so yeh, even though dimensions knew you had checked the file out, it would still overwrite it for you)

    It also couldn't do Delta updates... Subversion was out of the question as it was 'open source' and potentially buggy (unlike the heap of junk we had to use)

    Ohh and updates / commits were not transactional either, being the network was slow and the lack of delta updates it would take 1-2 hours to do a get-latest... during which, you might get 1/2 of another developer's commit (with 70 developers on the project, this was highly likely)

    And this wasn't a tin pot company that couldn't afford decent change control software, chances are if you live in the UK you shop there on a regular basis.

    What, Ann Summers?

    How dare a purveyor of quality adult rubber knick-knacks screw me around like this?

    Oops. That was "Serena Dimensions," wasn't it? I'll go back and check the label.

  • Outlaw Programmer (cs)

    The Real WTF is that there was no need to get rid of the shingle in the first place. In fact, the shingle is probably the most scalable form of source control known to modern man. Here's how it works:

    Each library gets its own shingle. Preferably made of a different material but you can paint them unique colors if you want. When you want to work on a library, you see if its shingle is available and pick it up if it is.

    Each library gets its own bell, too (maybe a gong, depending on region). After you're done with a library, you walk its shingle over to the bell, and strike it once. Each bell has a unique sound, and over time the other developers will know which sound corresponds to which library. The bell lets everyone know you're done with a library, so everyone needs to get latest from the file server.

    Of course, shingles and bells are fragile things, so it's recommended that at least 1 "backup" shingle and bell be stored in an off-site facility in case of emergency.

  • webhamster (cs)

    They should have told Mark that CVS was the "Concurrent Versioning Shingle" ...or the "e-shingle". Maybe he would have accepted it then. :)

  • Zonkers (cs) in reply to java.lang.Chris;
    java.lang.Chris;:
    This is bullshit - if you don't update before a commit and your working copies are out of date, then CVS will abort the commit. The almost unprecedented mention of something positive about VSS, and the fact this came from an MS related forum suggests this is some form of astro-turfing.

    Addendum (2008-06-17 10:21): And having checked the CVS docs, it supports file locks as I thought.

    Indeed bullshit. As a longtime user of CVS, I spend a few times re-reading this trying to figure out how Mark could have lost his changes. Then it dawned on me that this is unfortunately a common piece of FUD that is associated with CVS but it would never actually happen in practice.

  • Pecos Bill (cs)

    Oh the pain and itch of shingles......

  • Al Gore (unregistered) in reply to Outlaw Programmer
    Outlaw Programmer:
    The Real WTF is that there was no need to get rid of the shingle in the first place. In fact, the shingle is probably the most scalable form of source control known to modern man. Here's how it works: ...

    What happens when two developers get to the shingle at the same time and there is a fist fight over custody? :)

  • Grovesy (cs) in reply to real_aardvark
    real_aardvark:
    What, Ann Summers?

    How dare a purveyor of quality adult rubber knick-knacks screw me around like this?

    Oops.

    Oddly enough, I worked at a company a while back that was pitching to do some consultancy work with Ann Summers....

    Other than the hilarity of a large box in sitting in the corner of the board room labeled' COCKS' in marker pen, it turned out that their best selling product is AA batteries, they make an absolute ton of cash from AA batteries...

    An expensive ecommerce guided search / nav engine to do all the cross selling turned out to be pointless, you could pretty much hard code the product pages 'Also recommended, 48 pack AA batteries'.

  • thomas (unregistered)

    We definitely need a photo of the shingle.

  • dmh2000 (unregistered) in reply to java.lang.Chris;

    Not being a CVS user, I wondered why they would have lost data. The story implied CVS doesn't actually work.

  • dmh2000 (unregistered) in reply to Overthinking

    painful in the sense you have to pay for it, I guess.

  • RPJS (unregistered)

    Single-track railways use shingles to make sure head-on collisions don't occur. OK, they don't call them shingles but the driver of a train entering a single-track section has to be in possesion of a physical object before he/she can proceed. It's worked well for 150 years or so!

  • dpm (cs)

    IHNTA,IJLS "the source-control shingle was pushed to its limits"

  • Zonkers (cs)
    The Source Control Shingle was originally published in Alex's DevDisasters column in the April 15, 2008 issue of Redmond Developer News. RDN is a free magazine for influential readers and provides insight into Microsoft's plans, and news on the latest happenings and products in the Windows development marketplace.
    How could this possibly be FUD? It came from Redmond Developer News. ;)
  • Al Gore (unregistered) in reply to Grovesy
    Grovesy:
    real_aardvark:
    What, Ann Summers?

    How dare a purveyor of quality adult rubber knick-knacks screw me around like this?

    Oops.

    Oddly enough, I worked at a company a while back that was pitching to do some consultancy work with Ann Summers....

    Other than the hilarity of a large box in sitting in the corner of the board room labeled' COCKS' in marker pen, it turned out that their best selling product is AA batteries, they make an absolute ton of cash from AA batteries...

    An expensive ecommerce guided search / nav engine to do all the cross selling turned out to be pointless, you could pretty much hard code the product pages 'Also recommended, 48 pack AA batteries'.

    Should be featured :D

Leave a comment on “The Source Control Shingle”

Log In or post as a guest

Replying to comment #:

« Return to Article