History of Software Patches?
NinaBeth asks: "I'm
interested in the history behind software patches for an academic
paper I'm writing. In particularly, I'm wondering what motivates
shrink-wrap software companies to release patches? Why send out
'broken software'? Is it purely financial? Has anyone done a
cost-savings analysis of QC prior to release versus user-reported
problems? Any stats on the average number of patches an application
will require? Is any one particular company more patch-happy than
others? I don't need much, just a reference or two would be
helpful. Thanks for any suggestions!"
Why send out 'broken software'?
Usually because you don't know it is broken at the time. The real world is a much harsher test environment than internal or even beta testing.
Hogsback
To answer your question on if patches are finacially motivated: yes and no. Yes as in you have to release a product eventually, but no because you will never write a perfect software program the first time around. There are so many things that can effect your software from hardware, drivers, other software, etc. You can not possibly test every single configuration out there, so at some point you have to rely on feedback from your customer to find problem areas.
That being said, there are times when products are rushed out the door before they are ready. I had experience with that at my old company, and the reasoning was purely finacial. I really can't fault them for releasing early though since we had to play a delicate balance of releasing something good and going under, and eventually had to split the middle.
The wording of your question makes it very easy to think of you as a troll, though you're probably not.
A good example of a company rushing software is Funcom's Anarchy Online. It was released in spite of huge, unresolved problems with the beta tests. However, they felt they had to go to market ahead of competitors.
Other products are simply doomed by diminishing returns. An alpha of a new MS OS might have tens of thousands of bugs. Internal testing will get a lot at first, but the bug finding rate will wind down quickly as time goes on. After a certain point, it's more economical to let the public find the bugs than it is to hire more testers.
There will always be some equilibrium here, though I'm guessing MS will likely try to do more testing in future releases - as the talk of insecurity is actually starting to get through to the general public.
Let's not stir that bag of worms...
Well I can't say it authoritatively, but patches have probably been out since the very beginnings of programming - at the very least since the beginning of UNIX.
When you think about it, all the Unices, commercial or free, have always released patches. In Linux and the open-source BSDs these are released as source code (diffs or checked out of CVS), in the commercial world binary patches that either replace or edit a portion of the files on your computer are often released to address security or functionality problems. I honestly can't think of any other major piece of software (OS, app suite, windowing system) that hasn't released at least one "apply this today or your computer may explode" patch.
As for the "why" of releasing broken software, I can personally attest to the fact that most companies probably DON'T know about the problems until they come up in the real world. When my company tests software we try to think up extreme or improbable cases along with the mundane, but invariably we miss something.
IMHO the releasing of buggy software isn't necessarially bad - but on the other hand if you KNOW a bug exists and it is fesable to resolve before a release, that should be the prefered solution (as opposed to a patch later).
As for the average number of patches a piece of code requires, the codebase for the larges application I am currently working on has had well over 100 internal patches (things which didn't cause functionality problems but still should have been fixed). These fixes were sent to customers in 10 seperate external patches (a patch that increments the z in x.y.z versioning) which also fixed functionality problems that we discovered in additional testing or that the users reported.
For larger-scale examples, check out the lists of patches for solaris (www.sun.com) and MS Windows (windowsupdate.microsoft.com - assuming it's back up)
Hope this helped a little.
/~mikeg
You should refer to the article http://www.fastcompany.com/online/06/writestuff.h
"Most people choose to spend their money at the wrong end of the process," says Munson. "In the modern software environment, 80% of the cost of the software is spent after the software is written the first time -- they don't get it right the first time, so they spend time flogging it. In shuttle, they do it right the first time. And they don't change the software without changing the blueprint. That's why their software is so perfect."
Ouch! The truth hurts!
If you dropped Larry a line, I'd bet he'd be willing give you some perspective, at least from the Free Software point of view. He used to release patches directly on USENET, now that was a great way to keep customers happy...
The rest of your question can probably be answered by the first three words in the subject of my comment. If it builds and runs on the announced shipping date, and there are no (or very few) show-stopper bugs, then most companies will cut CDROMS and ship.
Not that I am a business major, but patch levels make sense to me.
Time is definite issue. First of all, you want to get your product out the door.
Second, you want development to be as fast out of development and as feature rich as possible. This doesn't always allow for perfect code.
Third, you don't want your team to burn out.
Therefore, most (smart) software companies will release patches to their software. Also, releasing patches gives the consumer the impression that you are actually maintaining your code (whether you are or not).
Think about trying to write Windows XP or KDE or GNOME from the ground up-- in one release. Not going to happen, unless you have a lot of dedication and a lot of time. And by the time you finish, it might well be outdated, or even unliked.
On that note, an additional benefit of releasing software in patch levels (or SPs), is you get a large showing of customer feedback. If there are major bugs, they will be found. If your software is "good enough", you might be willing to distribute it. I suppose that's what makes Dilbert's "It compiles! Ship it!" so funny.
Granted, this is all opinion.
"Is any one particular company more patch-happy than others?" In my professional experience, I have found that two names stand out as the "patch kings". Not to Microsoft-bash, but there is a good deal of patches released for nearly all of their software and components. You may want to try looking at recent patch histories at Microsoft for IIS, and critical updates for Windows 98 and Internet Explorer. I spend maybe 2 days a month doing a full probe and catalog of the knowledge bases and product areas looking for updates, especially for Outlook. My other favourite is HP. Out OfficeJet T45 needs new driver pack downloads with every release of Service Packs for Windows 2000. The original Win2k T45 drivers worked OK on Vanilla and SP1 systems, but when you upgrade to SP2 - BANG! 100% CPU usage. This is just one example of many. Their VL400 series and Brios have had many, many revisions and updates. One of the really annoying things with HP Brios is the vast difference in the product model numbers and video/chipset drivers. Most irritating, especially when I want to do a GHOST rollout. Yes, this is hardware, but DAMN - it's annoying. No doubt here come the "Then why are you using MS?" and "why not standardise your user desktops for GHOST rollout" replies. Fact is, in the real world of support, it isn't always that simple. I am trying to get everybody on the same VL400 workstation, but you gotta justfy the cost savings against IT support time!