Slashdot Mirror


Software Engineering at Microsoft

an_mo writes "A link to a google cached document is floating around some mailing lists containing some info about microsoft software engineering. In particular the document contains juicy bits about the development of a large project like NT/2K. Some examples: Team size went from 200 (NT3.1) to 1400 (Win2k). Complete build of win2k time is 8hrs on 4way PIII and requires 50GB of hard drive space. Written/email permission required for checkins by the build team." The HTML version on Usenix's site is much nicer than Google's auto-translated version.

21 of 461 comments (clear)

  1. Re:What a waste of time and money! by JPriest · · Score: 4, Interesting
    "trying to co-ordinate anything would be a managerial nightmare!"

    Imagine how hard it must be to co-ordinate a project that big without "management". I think Linux could gain by creating a kind of unofficial management structure to better co-ordinate some of the projects.

    --
    Saying Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
  2. Re:Found the original ppt file for those of you wi by popoutman · · Score: 2, Interesting
    Actually works quite well with OpenOffice..

    Hats off to the staroffice teams for a nice job well done.

    --
    - This sig deliberately left blank. Nothing to see, move along.
  3. SourceDepot = Perforce != VSS by Anonymous Coward · · Score: 5, Interesting

    It seems that Microsoft does not use Visual Source Safe for Windows source code.

    1. Re:SourceDepot = Perforce != VSS by Anonymous Coward · · Score: 1, Interesting

      They are not. Two of my friends works for Microsoft. They don't use VSS. Even for development, they use 3rd party IDE. They use Visual Studio only for debugging.

    2. Re:SourceDepot = Perforce != VSS by BitGeek · · Score: 3, Interesting


      And when I worked there we used "Slime" for version control, VisualC as the IDE (Though some people chose to use another IDE).

      MS has good people but a completely fscked development process.

      One of only two jobs where I've been criticized for commenting my code. (Not lack of comments, but too many.)

      --
      Yeah, and you guys panned the ipod too: http://apple.slashdot.org/article.pl?sid=01/10/23/ 1816257
    3. Re:SourceDepot = Perforce != VSS by Anonymous Coward · · Score: 3, Interesting

      Yes, we use Source Depot on my team at MS. It's very Unixy in its syntax (likes a lot of filtered output piped to it from other cmdline tools), and it's also a bit obscure in its details. It has a GUI client, but the bulk of it, other than the client mappings (which server stuff to sync) is all cmdline. It's not great, but at least it scales, which is more than you can really say for VSS.

    4. Re:SourceDepot = Perforce != VSS by Otterley · · Score: 2, Interesting

      Just because your code is stored in CVS does not make it automatically fall under the GPL. That's like saying that because your code was compiled under gcc that it falls under the GPL.

      Only if you include CVS code in your project does the GPL apply to it.

  4. Re:God help them... by cant_get_a_good_nick · · Score: 4, Interesting

    If you think Visual SourceSafe is bad...

    I had a contract project, a porting job. The platforms were Win32 (where it originated) UNIX/Linux (our port), Novell, and OS/2. We had the command line version because the Linux GUI core dumped every 5 seconds. But the command line version stull sucked, and of course didn't know shit about line endings. We could script it with some extension mapping to try to do dos2unix/unix2dos, but good luck, cause the command line version wouldn't have any useful exit() values. I have no idea what the Novell and OS/2 guys did.

    Joel Spolsky (he's been on here before) wrote about sucky SourceSafe a bit and how Microsoft really doesn't use it. Doens't give me a lot of confidence using it. He also had the link to the UseNix verion of the talk given in the story.

  5. ...kernel, your chosen libc, other libs... by dpilot · · Score: 3, Interesting

    But here is part of the whole point...

    The Linux system I'm running when not booted to the Dark Side (My daughter was running Age of Empires - more Dark Side software.) isn't a single chunk that has to be built as one unit. The kernel's one piece, and each lib is another. To be sure, some libs won't work without specific versions of others, so the pieces aren't all independent. But it's still not all one giant chunk.

    They're essentially making the RedHat distribution into one giant build. Kind of like Gentoo, which someone else brought up, and is a very appropriate comparison for build times.

    But even with RedHat or Gentoo, it's not one giant chunk. I've upgraded pieces of my RedHat for years, and to be fair, Microsoft issues fixes. But there's still a difference, in that I have a better understanding of what RedHat's doing with an update, and better understand what parts of my system are affected.

    While there may be modularity inside Windows, it appears to be intentionally hidden from the end user. I wonder if that's part and parcel of proprietary software, or if it's a side effect of the legal team arguing that Windows is "integrated" and IE can't be unbundled.

    --
    The living have better things to do than to continue hating the dead.
  6. says it all by 0WaitState · · Score: 4, Interesting

    From the presentation:

    "Anything that crashes the OS is a bug. Very radical thinking inside of Microsoft considering Win16 was cooperative multi-tasking in a single address space,..."

    So the BSODs were caused by the old-timers? Were they also the ones who designed in the feature that every fucking install of an application requires a reboot?

    --

    Remain calm! All is well!
    1. Re:says it all by BlowCat · · Score: 2, Interesting
      Shall we dig up the Linux Kernel 1.x series and point and laugh?
      My first Linux kernel was 1.0.9. I don't remember anything funny about it. I'm sure I didn't have to reboot the system to change the IP address. That kernel could not boot on one of my computers, but once it was running, I could not crash it. Kernel panic was usually caused by new hardware. I don't remember any sudden panic during e.g. compilation.

      What was your first kernel and what was so funny about it?

    2. Re:says it all by JaredOfEuropa · · Score: 3, Interesting
      Were they also the ones who designed in the feature that every fucking install of an application requires a reboot?
      Most applications worked fine if you'd click "No" when it asked you to reboot. The reason for most applications asking for a reboot is the way installer tools like InstallShield work under Windows 95/98/NT At the end of an InstallShield script one can insert a statement that handles te reboot. IIRC the Installshield manual suggested a number of cases in which case you will need a reboot (some of these cases did not in fact require rebooting).

      So what happened? Most developers did not bother finding out whether their install process requires a reboot at the end; out of lazyness they just assumed it always does, and they made the user reboot every time "just to be safe".
      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
  7. Comment removed by account_deleted · · Score: 1, Interesting

    Comment removed based on user account deletion

  8. Re:A recipe for disaster by startled · · Score: 4, Interesting

    We have an automated script to take your changed files and copy 'em over to a share. Then we send out an e-mail to the team (small) and say it's going to be committed soon. One person is assigned "primary", and must look at it; everyone else can optionally.

    It doesn't take much time, but it's only the smallest CRs that get away without at least a few changes. Sometimes it's just comments, sometimes it's a better way to do something. At the least, everyone has a better idea what's going on in code they're not in right now, but very well might be in the near future. An added benefit is that people who see CR coming clean up their code a bit more than usual.

    I agree-- formal CRs suck in most cases (although some critical apps developers like them for some bits of code that might, say, kill someone if they malfunction, or that take $10,000 to test). But the e-mail deal works really well for our team. But we don't have any assholes or know-it-alls, so that helps.

  9. Requisite Karma Whoring... by wrinkledshirt · · Score: 2, Interesting

    Full text of Proudly Serving my Corporate Masters here...

    Just in case you wanted some more insight into working for the company. Fascinating stuff.

    --

    --------
    Bleah! Heh heh heh... BLEAH BLEAH!!! Ha ha ha ha...

  10. Re:Yep. by jesser · · Score: 2, Interesting

    ideally, the build will only break if two changes on the same night contradict each other

    Another reason a change might break the build is if the software builds on multiple platforms. I think this is one reason Mozilla has dozens of computers continuously building it rather than one nightly build that may or may not compile the first time. This doesn't catch all checkins that make Mozilla unusable (we have a "smoketest" team that make sure each nightly works well enough to test it), but it does give everyone immediate feedback if a checkin stops the build from compiling or makes it fail some automatic tests.

    Of course, it helps that compiling Mozilla takes less than an hour.

    --
    The shareholder is always right.
  11. Re:Can't pull IE from Windows, huh? by Anonymous Coward · · Score: 1, Interesting

    The point is that everything is put in libraries, that are shared throughout the system. The help system uses HTML-renderer, even the (active) desktop uses HTML-renderer (although I don't think anybody actually has that turned on)... so yes, of course you could do without IE in the OS. That'd be like deleting iexplore.exe, since the rest is common code for the rest of the systems.

  12. 1400? Try 3100! by Queuetue · · Score: 4, Interesting

    Take a look at slide 19 - 1400 devs, but 1700 testers. Do you suppose that means that Win2k had 3100 people working full-time on it? Lowballing the numbers (55k per dev, 45k per tester):

    1,400 * 55,000 = 77,000,000
    1,700 * 45,000 = 76,500,000
    153,500,000 a year * 3 years (from slide 3) = 460,000,000

    Include an overhead multiplier
    460,000,000 * 2.4 = 1,105,200,000

    And we wind up with a rough US$1.1BB.

    This suggests that win2k represents 20 million SLOC, Just slightly higher than RH 6.2, at 17 and change.

    His cost estimates place RH 6.2 at US$614,421,924.71

    I suspect MS probably pays more per dev, but I have no proof, so I'll stick with the industry averages. Also, testers may have been shared across projects, MS can pool resources and bring overhead lower, etc...

    I'm not drawing any conclusions, just compiling data...

  13. Showstopper versus this Info by zero_offset · · Score: 5, Interesting
    (Yes, user johnjones already posted about Showstopper, but I have more to say than "this book was funnnneee..."). So, as johnjones pointed out, there is a book related to this subject: "Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft" by G. Pascal Zachary.

    What's interesting is comparing what Showstopper says to the claims in these slides.

    The slides suggest early NT development was done by a small team of super l33t c0d3rz who took care of business and frowned upon slacking. However, the picture painted by the book is dramatically different -- people were forced to work around the clock, the team was dominated by a small gang of guys who were basically complete assholes, everybody walked on eggshells for fear of pissing off Dave Cutler, The New Savior, and NOBODY in the group ever knew what was really going on. The whole project was shrouded in mystery, even to people on the team, because basically everything existed in Cutler's head.

    The only thing I see where Showstopper and the slideshow firmly agrees is the slide labeled "Goal Setting".

    I personally have a lot of other opinions about why some of the statistics may pan out the way they do (for example, how much hardware did you REALLY have to test with in NT 3.1 days, versus Win2K?) but I want to stay focused on the Showstopper/slideshow discrepancies, so I'll leave it at that.

    The thing to realize about Showstopper is that it was based almost entirely on interviews with the people who were involved with the initial NT coding effort.

    By comparison this slideshow was written by one guy, Mark Lucovsky, who gets lightly flamed in Showstopper (at best). Oddly, I grabbed Showstopper off my bookshelf and opened it straight to the page describing Lucovsky. Weird. Anyway, here are excerpts from a single paragraph: "...smart but immature... nevertheless angered teammates with his skepticism and self-serving judgements... relentlessly critical of others, constantly probing for weaknesses... 'Until you prove otherwise, you're wrong and he's right.'" Whew, hate to be THAT guy. It gets worse. One page later, a paragraph opens by simply saying, "Many people felt that Lucovsky was a jerk."

    Given that, it wouldn't surprise me if Lucovsky was still just trying to justify the fact that the early NT dev team was comprised of a bunch of flakes who had to burn the candle at both ends to actually deliver anything.

    Please understand I'm not necessarily defending any current MS practices, or even Win2K (which is still vastly superior to NT3.51). I've personally worked VERY closely with groups inside MS at different times (a couple times on-campus in Redmond), and I'll be the first to tell you the company is bureaucratic and packed to the gills with people who don't know what the hell they're doing -- just like every other company that employs tens of thousands of people.

    What I *am* saying is that this slideshow is looking at the past with "rose-colored hindsight" and I believe the motives are suspect at best. Draw your conclusions with a grain of salt. (Enough metaphor-abuse for today.)

    Do like johnjones suggested -- go buy or check-out Showstopper and read it. It's interesting, informative, and it IS kind of funny. It's amazing they were able to produce anything at all. How's THAT conclusion for contrast with the slideshow? ;)

    --

    Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  14. Source Safe not used much in Redmond by Genus+Marmota · · Score: 2, Interesting
    I can confirm this. When the dev who had been doing trivial bugfixes on it handed me the project (actually the "reference machine" if you can believe that shit) he said "Source Safe isn't." It got pretty much zero attention while I was there.

    Maybe some folks are using it there, but in product development it was not considered an acceptable option for source code control.

  15. Re:Actually quite strange by Zordak · · Score: 2, Interesting
    but most MS people I know hail win2k as the best microsoft OS ever.
    I use UNIX and its clones when I can, but I have to say that when I am forced to use a Microsoft OS, Win2K is refreshingly good. It's still Windows, so there are some design aspects that really bug me still, but it is quite stable and usable otherwise. It's also probably the only decent OS they ever will make, since XP is crap from the UI down and now they are into all of this .NET subscription services and Palladium crap. Win2k just happened to fall into that tiny slot between when MS finally figured out how to make a semi-functional OS and when they got beyond paranoid with their IP. Still, given a choice, I'd much rather use UNIX or Linux.
    --

    Today's Sesame Street was brought to you by the number e.