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.
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.
Hats off to the staroffice teams for a nice job well done.
- This sig deliberately left blank. Nothing to see, move along.
It seems that Microsoft does not use Visual Source Safe for Windows source code.
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.
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.
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!
Comment removed based on user account deletion
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.
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...
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.
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.
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...
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
Maybe some folks are using it there, but in product development it was not considered an acceptable option for source code control.
Today's Sesame Street was brought to you by the number e.