Slashdot Mirror


Calling Software Reliability Into Question

phillymjs writes "CNN is running a story on software reliability, and how the lack of it may cost more and more lives as technology creeps further into everyday products. It appears a debate is finally starting amongst everyday (read: non-geek) people about vendor liability for buggy software. Some opponents of the liability push are unsurprising: Says the story, 'Microsoft contends that setting [reliability] standards could stifle innovation, and the cost of litigation and damages could mean more expensive software.' The article also says, however, that consumers' favortism of flashy products over reliable ones is partly to blame for the current state of software."

84 of 412 comments (clear)

  1. Microsoft by Pres.+Ronald+Reagan · · Score: 3, Informative

    I like what Microsoft has been doing qith security these days, quite frankly. The new security features in Windows Server 2003 look innovative and very modern, and quite easy to use.

    Linux may be secure when configured correctly, but Windows Server 2003 looks to be the most secure OS out of the box at the moment.

    --

    Abortion is advocated only by persons who have themselves been born.
    --Ronald Reagan
    1. Re:Microsoft by miketang16 · · Score: 2, Insightful

      This post shouldn't be modded down that badly. I mean, this guy is giving his truthful opinion, albeit a wrong one... ;)

      --
      -------
      "In times of universal deceit, telling the truth becomes a revolutionary act."
      -- George Orwell
    2. Re:Microsoft by djcapelis · · Score: 2, Insightful

      troll? *mumbles something about OpenBSD

      --
      I touch computers in naughty places
    3. Re:Microsoft by Namaseit · · Score: 3, Insightful

      Yah windows NT/2k/XP *looked* secure out of the box also. Then the exploits came.

      --
      75% of all statistics are made up!
  2. But how... by C.Maggard · · Score: 4, Interesting

    ...could reliability standards stifle innovation? How hard is it to design something that works well and is extremely robust, yet, be creative and innovative in its design?

    1. Re:But how... by Tyler+Eaves · · Score: 3, Insightful

      Well, based on all the software I've ever seen, pretty damn hard.

      --
      TODO: Something witty here...
    2. Re:But how... by ctr2sprt · · Score: 5, Insightful
      Look at how much time NASA's programmers spent writing bug-free code. That's a pretty reasonable estimate, unfortunately. The number of bugs in any given program increase dramatically with the size of the program. (I don't know if it's geometric or what, but trust me, it goes up fast.) So while you may be able to whip out 1000 lines of code a day at the beginning, by the end you'll be writing 5 new lines a day if you're lucky. The rest of your time will be spent making sure those 5 lines work correctly with the 150,000 you've already written.

      This is what Microsoft is, quite rightly, afraid of. If I can sue Microsoft for $100k because IE crashed, MS isn't going to have time to do anything except fix bugs. This isn't even entirely their own fault, since the nature of programming makes it impossible to write any large program without bugs. And unless you grandfather all of MS's products, they'd be screwed.

      But this is even worse. Unless the laws are written to special-case free software, we might see Linus sued because Linux crashed one day. RMS might end up $15m in debt because Emacs ate somebody's email. How's that for stifling innovation? If I (personally) might get sued for some bug I missed, there's no way I'm going to give away my programs.

      The guy in the article advocates only a limited sort of liability: you're liable only up to a point, or only if you don't divulge the bugs you know about. But does anyone out there really think the politicians, who are more in the pocket of trial lawyers than of anyone else, are going to make it hard to sue?

    3. Re:But how... by JimDabell · · Score: 4, Insightful

      Where life-critical systems are put in place, there will be an insurance policy. The insurance company should require a guarantee from the software vendor. Therefore, in life-critical systems, the software vendor should always be able to be held accountable. Yes, this will be expensive, but not as expensive as all those lawsuits.

      Most software does not fall into this category. Virtually every business is heavily dependant upon software though, so it is mission-critical. The nature of closed-source software is a massive imbalance between vendor and customer though. The vendor is the only one who can fix bugs; it's the ultimate form of vendor lock-in. Those vendors with monopolies (for example Microsoft) should therefore be regulated in some way, as they can literally hold a majority of businesses to ransom.

      Suppose a defect that only affected a small number of businesses was found in Windows? Microsoft has little economic incentive to fix the issue. The businesses are heavily dependent on the software, yet nobody can help them - the only thing they can do is work around the issue somehow, which may not be possible, or an expensive migration to another platform (expensive in terms of resources; even if the software is free, the downtime is not).

      What can be done to fix this situation? Obviously, if you run a business, you take appropriate notice of this business risk, and plan accordingly. But this doesn't escape the fact that sometimes you have to resort to using software you cannot rely on. I'm a web developer; I have no choice but to test in Internet Explorer. If a bug prevents me from running it, it's a major setback.

      I believe a solution to this is to loosen the grip the vendors have on the software. Copyright is an artificial monopoly on creating copies; it shouldn't be an artifical monopoly on fixing bugs. If you are a software vendor, you should have three options:

      1. Provide the software in a form that allows the customer to fix bugs and rebuild. In other words, provide the source and everything needed to compile it.
      2. License the buildable source code to third parties for free. These third parties should pay the original vendor the retail price + 10% for any copies they sell. Any third party should be able to license the code in this way.
      3. Be unable to disclaim liability for the software.

      This, I feel, is the balance between protecting businesses from having no control over their software, and protecting the rights of the software vendor. Have I missed anything?

    4. Re:But how... by Anonymous Coward · · Score: 2, Interesting

      NASA's designing cutting edge, one-off product for employees fully aware of the dangers. Software companies rely on consumer ignorance, knowing lawsuits aren't as likely against new and unfamiliar tech. They don't know software can be reliable and secure, believing, as another poster wrote, reboots, registry creep and viruses are normal. Get ready to see EULAs overturned once software is seen less like NASA and more like the familiar, necessary and integrated into daily life cars and appliances.
      We don't stand for unsafes car or leaky microwaves today for the sake of innovation, future consumers won't stand for 'feature rich' software capable of billions of dollars in damages. How OSS will adapt is anyone's guess, but you can bet it's coming.

    5. Re:But how... by morleron · · Score: 2, Interesting

      Evidently Microsoft thinks it's very difficult or impossible. Given their track record when it comes to being truly innovative, instead of just buying or stealing the technology, I believe their assertion to be true for MS. This is one area where I think that the Open/Free Software community can make a telling case against MS. Our products are known, anecdotally if nothing else, for being much more stable and reliable than those of the Redmond monopoly. Given the recent study that showed far fewer errors in the Linux kernel TCP/IP stack, we now have some facts to back up our claims.

      I think that it behooves us to push for greater software reliability. I'm sick and tired of the proprietary software concerns that can get away with a warranty that essentially limits their liability, even when the software fails to function, to "we'll replace the CD or floppy if it's defective." It's time that the software industry be forced to live up to the reliability and liability laws that other industries must abide by. I would prefer, given my libertarian leanings, to see this done without resort to new laws and some new government department. However, given the monopoly conditions that most of the industry operates under that may not be possible to achieve.

      Just my $.02,
      Ron

      --
      Impeach Barack Obama for violating the Constitutional requirement to be a "natural born" citizen to hold the office of P
    6. Re:But how... by v(*_*)vvvv · · Score: 2, Insightful

      Since you ask...

      1. Provide the software in a form that allows the customer to fix bugs and rebuild. In other words, provide the source and everything needed to compile it.

      You as a programmer may benefit from this, but most customers will not. Rarely do "customers" know better than the developers. It is most often the case they just have more time. Furthermore, I would say most web developers would benefit little from IE coming with source code. A) they won't know how to fix anything, B) even if they did, microsoft would have to agree to incorporate the fix for it to be worth anything... A fork for every bug is not going to improve any software.

      2. License the buildable source code to third parties for free. These third parties should pay the original vendor the retail price + 10% for any copies they sell. Any third party should be able to license the code in this way.

      The vendor gets 110% for writing buggy software that others need to fix? Or do you mean anyone who calls themselves a vendor can get the software for free?

      3. Be unable to disclaim liability for the software.

      Unfortunately for most developers/vendors, this will read, "Be unable to distribute software". That is, I believe to be, the legal truth.

    7. Re:But how... by JimDabell · · Score: 3, Interesting

      You as a programmer may benefit from this, but most customers will not.

      That depends on the size of the company. For small companies, I agree. For larger ones, hiring a contract programmer for a month or two could be cheaper than the alternative.

      Rarely do "customers" know better than the developers.

      I agree. However, the customer will have more of an incentive to fix the bug that is causing them grief than the original vendor will.

      Furthermore, I would say most web developers would benefit little from IE coming with source code.

      I was using my particular situation as an example of how people must rely on proprietary software for *mission-critical* purposes. I wasn't implying anything about web developers in particular.

      microsoft would have to agree to incorporate the fix for it to be worth anything...

      No. I'm not referring to bugs where a developer has to deal with the lack of, say, attribute selector support in IE. I'm referring to bugs whereby there is a problem with IE that prevents me from relying on it - i.e. it refuses to run on my particular machine. If you'd like a different example, consider before Y2K. An organisation uses a mission-critical application all day long, but when Y2K rolls around, it refuses to work. They can't fix the bug because nobody has the source but the vendor, and the vendor has no reason to fix it, as they are no longer selling the application, made the programmers involved redundant, and so on. They might not even have the source themselves.

      A fork for every bug is not going to improve any software.

      The aim is not to try and graft on an open-source development model. The aim is not to improve the software; it's merely to have a get-out clause when the original vendor screws you. In the Y2K example, for instance, an independent contractor could fix up the application and sell it on at a marked-up price.

      The vendor gets 110% for writing buggy software that others need to fix? Or do you mean anyone who calls themselves a vendor can get the software for free?

      Perhaps this was a badly thought out option. The intent was to provide a way of third-party bug fixing, without giving out the source to every customer, maintaining revenue for copies sold, yet discouraging "forks" where somebody could sell a superior version and take over the original vendor's market.

      [About being unable to disclaim liability] Unfortunately for most developers/vendors, this will read, "Be unable to distribute software".

      That's why the other options exist. I'm not sympathetic to people who claim their business will be hampered by disclosing source code - the expensive part of development is not some radical new way of writing a function, it's the project management - and unless somebody directly violates copyright, disclosing source code will not help competitors.

    8. Re:But how... by spirality · · Score: 2, Insightful

      Doesn't matter, as soon as you click through that EULA you've already accepted that the software is not necessarily reliable. ...could reliability standards stifle innovation? How hard is it to design something that works well and is extremely robust, yet, be creative and innovative in its design?

      Have you ever designed/written software? It's not as easy as it may sound! We try. I try. I do my best at all the design and coding work I do, but sometimes still fall short. I find many of my bugs, I'm entirely sure that there are some I don't find.

      Software is *MUCH MORE* complex than a bridge or many "real" devices. It is likely that it will never be perfect.

      On the practical side though, if people demand "perfect" software the price for software will sky rocket. No one can afford 100% bug free software. Therefore there will always be that chance of unreliability.

      I have to agree with Microsoft here as much as I hate to admit it.

      -Craig.

  3. strange by fjordboy · · Score: 2, Funny

    So...basically people are just finding out now that not all software is as perfect as it is intended to be?

    Great..I'm gonna have to explain this one to my parents...

  4. Re:Wait... by jointm1k · · Score: 2, Funny

    It is, but monday was just not long enough ::)

    --
    You know it makes sense, a little reminder from jointm1k.
  5. It's a vicious circle by Ed+Avis · · Score: 5, Interesting

    The trouble is, the more accustomed users become to bugs, the harder it is to get them reported and fixed. If my computer crashes, I just reset it and get back to work. I don't bother to investigate what caused the bug, to try to reproduce it, to contact the vendor (hah!) and try to work out the problem. Crashes occur much too frequently for that.

    OTOH, if computers were reliable enough to crash only once every few years, then users might report every crash that happens, the vendor can diagnose it, and fix the bug or family-of-bugs so that it never happens again. This is roughly what happens when a mainframe crashes, I believe - it's a big event.

    Imagine if when your microwave crashed, you could call some hotline, they would come and replace the microwave and take away the old one for analysis. Instead, even on complex software systems the standard first resort for the help line is 'reboot and see if it goes away'.

    --
    -- Ed Avis ed@membled.com
    1. Re:It's a vicious circle by jralls · · Score: 2, Insightful

      And yet those IT staffs who run mainframes are quite willing to install NT servers running IIS or SQL-server and put up with Microsoft's poor security and stability. Where's the sense in that?

    2. Re:It's a vicious circle by teromajusa · · Score: 2, Informative

      "
      "OTOH, if computers were reliable enough to crash only once every few years, then users might report every crash that happens, the vendor can diagnose it, and fix the bug or family-of-bugs so that it never happens again. This is roughly what happens when a mainframe crashes, I believe - it's a big event."

      I think that has alot more to do with the critical, often costly, tasks that mainframes are used for than because its an infrequent occurance.

      In my experience, infrequent crashes are much easier to ignore than one that occurs constantly :P

    3. Re:It's a vicious circle by Dark+Lord+Seth · · Score: 5, Insightful

      Because some IT staffs have a higher-up who went to the most recent Microsoft seminar ($25.000,- for entry & attendance, $750,- for the hotel, $2.250,- on the flight) and got amazed by MS. After budget-cutting away the drinks dispenser and replacing it with an old coffee maker (Hey, that $28.000m- is more important then employee satisfaction! *sarcasm*) hte higher up has a great idea, replacing all server with Windows 2003 Enterprise Server! All the crying and complaining from the IT staff wont convince the higher-up, because a shifty, 40b USD company that can throw a flashy seminar is far more trustworthy in his opinion then his IT staff, who worked with the company before he got there. Several budget-cuts later to accomodate the win2k3 licensing costs, the entire department switches to Win2k3. Several more budget-cuts later, mainly used on MS support, the entire company goes to hell. IT staff gets fired, along with the rest of the company while management gets scattered among several other companies, ready to ruin them anew.

      Welcome to the modern economic system.

    4. Re:It's a vicious circle by gmhowell · · Score: 2, Funny

      Ditto.

      BTW, you're down to 66 freaks. I have no idea why I foed you.

      --
      Jesus was all right but his disciples were thick and ordinary. -John Lennon
    5. Re:It's a vicious circle by Arandir · · Score: 4, Funny

      Hmmm, you work for the same company I do, don't you?

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    6. Re:It's a vicious circle by vondo · · Score: 2, Insightful
      Exactly. I have a homebrew machine running my linux firewall/NAT, web server. In 2+ years it has had exactly one freeze not attributable to a power outage. I rebooted it. I don't care what happened; it's not worth my time to try to figure out.

      On the other hand, when I was managing physics reconstruction software, that software, when I started, would crash once every couple of days. Those were repeatable so you track them down and fix them. When that process was done, we could run for months on 60+ machines without an application crash.

      It all depends on how easy it is to track down the problem and what the costs of not doing it are.

    7. Re:It's a vicious circle by sasami · · Score: 5, Interesting

      The trouble is, the more accustomed users become to bugs, the harder it is to get them reported and fixed.

      This is absolutely and shockingly true. Microsoft is almost singlehandedly responsible for the widespread cultural mentality that faulty software is okay.

      You'll find this notion all over the place but the worst part is seeing it in the upcoming generation. I work with teenagers, bright kids who are totally immersed in technology. Yet almost none of them understand why I complain about Windows all the time. If I tell them that a real OS doesn't crash and is not permitted to crash... they laugh -- or glare -- and say, you're crazy.

      --
      Dum de dum.

      --
      Freedom is not the license to do what we like, it is the power to do what we ought.
    8. Re:It's a vicious circle by Ludo.Sanders · · Score: 2, Insightful

      Wanna know ho gets the blame? That same IT staff, that didn't want win2k3 in the first place.

      --
      "It is not because no one sees the truth that it becomes a mistake" (Mahatma Gandhi)
  6. It really depends upon the product by conan_albrecht · · Score: 2, Interesting

    What's wrong with flashy stuff for somethings? I like flashy (i.e. sometimes buggy) software for my laptop. I don't mind if my beta-version browser crashes once in a while because I get the new features.

    My servers, OTOH, are another story. I wouldn't use anything but Debian (for linux, that is) because it is incredibly stable. My two Debian boxes on woody stable run 2+ yr old software. Guess what? They don't crash. I didn't upgrade from potato right away, but waited a little while.

    Consumers are generally willing to accept more buggy software because they don't run servers. So what if Word crashes once in a while? Most consumers are so conditioned to it that they don't think another thing of it.

    I realize that mail servers, electricity systems, and space probes need stable software, but most consumers don't administer these things. They use browsers, email, and cell phones that don't cause (much) physical harm when they crash.

  7. Not just bad for MS, but FOSS too! by supton · · Score: 4, Informative
    Free and open-souce software are threatened by the idea of forcing liabillity on software, This has been discussed on ./ before.

    Remember, one thing M$ does well is pay lawyers.

    1. Re:Not just bad for MS, but FOSS too! by sheldon · · Score: 2, Insightful

      No, the Open Source zealots have an answer for that...

      Their software will be exempted.

      Of course that right there guarantees Open Source software will never be used in government or business climates.

      Most regulations are in place to protect the existing companies from competition by raising the barrier to entry even higher. So I'm actually surprised Microsoft is against this, although maybe it's a Brer Rabbit defense.

    2. Re:Not just bad for MS, but FOSS too! by ispinstr · · Score: 3, Insightful

      I think that there is one large distinction here. In the case of Microsoft and other vendors, people are buying the software. If you are BUYING a product, you SHOULD expect that the vendor is subject to a degree of liability. If you are using a product that you have not "bought", such as OSS, you should NOT expect a degree of liability on the developer. Sure this may stifle the acceptance of OSS, but I hope that lawmakers keep this in mind. On the other hand, I believe that if you have paid for a modification to that software then that is a different story.

    3. Re:Not just bad for MS, but FOSS too! by dogfart · · Score: 3, Insightful
      Or companies would buy OSS from middlemen who would obtain the appropriate insurance. In order to ensure a reasonable profit, the middlemen would have to perform some sort of due diligence to minimize their risk. Even with the insurance (plus other costs plus profit) passed through, the software would be MUCH less expensive than what you would buy from Microsoft.

      Sort of like the RedHat/IBM model for making money from OSS/FOSS - sell the services, give away the software. In this case the service is managing the risk.

      What about free (as in beer) software? In this case, the best solution would be for the user of the software to assume the liability. The software user could either accept the liability for free software, or pay someone else to assume that liability (meaning buy the software from the middlemen).

      The point is we need the ability of software users and producers to rationally cost the risks of software malfunction, then assign these risks to the party that makes most sense. What we have now is a unilateral non-negotiable assignment of ALL risks to the purchaser.

      Why should software companies face multi-million lawsuits for software errors? The same reason that software users ALREADY assume multi-million dollar costs of flawed software. Allowing tort liability does not change the fact that there are real costs to bad software - it only allows a mechanism for allocating these costs (versus the current unilateral buyer-takes-all-the-risks).

      --

      "dope will get you through times of no money better than money will get you through times of no dope"

  8. If they wont let you fix it... by Realistic_Dragon · · Score: 5, Insightful

    IMO if a company is unwilling to supply you with the source code (under whatever license) to let you see and fix problems that exist they should have no possible exemption from litigation, no matter what POS EULA they persuade you to sign.

    They are asking you to place your trust in them that their code is good enough to bet your business on. If their software is not all it's cracked up to be and you had no chance to check their claims (but instead had to take their word for it) then they clearly are responsible for breaking their word.

    Unless they told you that it was a buggy product that you couldn't rely on in the first place... now that would make for amusing adverts.

    (Can you imagine Windows boxes with cigarette-health-warning style labels on them saying "The Computer-General warns that this product may be bad for your business.")

    --
    Beep beep.
    1. Re:If they wont let you fix it... by Steveftoth · · Score: 2, Interesting

      no, but you could at least get a second opinion from a better educated source.

      Right now, with CSS (Closed Source Software) all you have is second opinions based on ancidotial evidence. The evidence that software X will work for you is only as good as what other people have done with it. At least with OSS, you can pay an expert to help you get an educated second opinion, and see if the software can work for you.

      OSS is not the solution to the problem but rather it can help you decide if software can work for you. And probably for the general case, most people can trust the MS verdict on what their software can and can not do. But if you are doing something strange and experimental with say MSSQL, you can't rely on what they say. In that case it might be a better choice to use an OSS product that you can see the source and have a better indicator for predicting what the software will do.

  9. Sad. So very sad... by mcrbids · · Score: 4, Interesting

    The company with the most to gain from this (with its unique cash reserve - Microsoft) is the company most in opposition...

    Yes, I said it. I'll say it again. Microsoft could gain *alot* from this movement.

    With their resources, they are the ones that could easily afford a true source-code audit the likes of which the BSDs are only beginning to approach.

    They could build an operating system that fully, completely, and truly matches the concept of "secure by default" and they have the resources, manpower, and ability to do so.

    But, instead, they oppose it. Building a secure system is against corporate culture, so they won't do it.

    Thanks xBSD!

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
    1. Re:Sad. So very sad... by Ian+Bicking · · Score: 2, Interesting
      They could build an operating system that fully, completely, and truly matches the concept of "secure by default" and they have the resources, manpower, and ability to do so. But, instead, they oppose it. Building a secure system is against corporate culture, so they won't do it.
      I think you dramatically underestimate the work in creating a secure, robust system.

      First, Microsoft's money only buys them so much. You can't just put more money into something and get more out of it. Of course, they can pay to hire the best people and the supporting staff to keep those people focused. But it still takes time.

      But even suppose MS invests not just money, but also time in this. Can they really achieve what you think they can?

      Security isn't as hot as people seem to think it is. Security is usually a compromise -- increased security usually means a system is harder to work with. Maybe there's ways around the difficulties of working in a secure system, but there's no conventional, proven solution. And security is a system, not a single piece of software.

      The same goes for robust operation. You can decrease the complexity of the system through partitioning, but that also makes certain functionality more difficult. Coming up with the right partitioning is difficult -- it's a factoring problem, and factoring a program (or system) is not something that has a Right Way. Factoring depends on backward compatibility, current features, and most impossible to get right, on future features.

      And partitioning is a compromise as well. The more you integrate things, the easier they are to automate and control, the better they work.

      Then there's the extensibility of the system. So long as you don't control the system entirely, bugs can creap in. The deeper the extensibility, the deeper the bugs can be -- including hard crashes and security holes. Microsoft doesn't create an insular system, and that's not just some bizarre corporate culture.

      The problem isn't a lack of resources. It's just a hard problem.

  10. Flash and burn by HanClinto · · Score: 5, Insightful

    Isn't the trend towards "flashy products" rather than reliable ones the same reason why current marketing pushes sex rather than product qualities (Pepsi, A&F, etc), movies flaunt big-name actors and actresses, and people won't go see a movie unless it has a high PG-13 or R rating (PG? It's got to be boring). This is the same reason why Legos now has 3-piece dumptrucks and 8-piece Hogwarts castles. Why is this? Dumbed-down education? Why is it that people have just started to gobble up whatever the media tells them rather than understanding what they need for themselves. *sigh* What's society coming to?

  11. I've thought about this before... by fjordboy · · Score: 4, Interesting

    I've often thought about how many products use simple programs and stuff to run correctly...like traffic light systems...right now they work pretty well and everything goes together properly. However, the day that cities decide to have a central server run the traffic lights so they can...say, control traffic around accident areas...things will go wrong. The "foolproof" software will cause all sorts of problems.

    I don't see this so much as software causing problems as much as the tendency we have to make what used to be simple things really complicated. One example I have in my life is a train system that runs around inside a building by the ceiling at a camp I work at. The system looks really nice..and it could work well. However, having a couple of electrical engineers volunteer their time to make the system made it very different. Now, what could have been a simple on off switch is a whole panel with an LCD display and all sorts of error lights and little IR detectors on the track to make sure the train is in the right place. It is a geek paradise...but the train NEVER works. Despite all the fancy assembly code they have running the whole thing, it doesn't work. An on/off switch would have worked..I'm certain of it!

    As we complicate more and more appliances with complex software, there are going to be more problems. Heck..what's gonna happen next time your toaster oven timer crashes...you could burn down a house!

    The caveman had something going for them...

    1. Re:I've thought about this before... by sheldon · · Score: 2, Insightful

      "However, the day that cities decide to have a central server run the traffic lights so they can...say, control traffic around accident areas...things will go wrong. "

      Actually I wouldn't be surprised if traffic lights aren't already centrally controlled in some urban areas.

      Traffic lights have a human safety factor, in the event of bad instructions they can fail over to flashing red in all 4 directions. Humans are trained to understand that flashing red means stop. So the worst case, that the lights are signalled green in all four directions at once can be mitigated by throwing an exception and falling into the flashing red mode.

      "I don't see this so much as software causing problems as much as the tendency we have to make what used to be simple things really complicated."

      KISS should always be applied. The simpler a system, the more reliable it will be.

      However, as technology improves over the years the barrier which defines simplicity increases. Traffic Lights 100 years ago were manually operated, today they are controlled by sensors monitoring traffice flow.

  12. Two guys are sitting in a bar by ptarjan · · Score: 5, Funny

    And Bill Gates turns to the CEO of GM Motors and says, 'Why is your technology moving so slowly? If you advanced at the same rate as we do, we would have flying cars by now!' Immediatly the CEO of GM turnes to Billy and says, 'Because the government doesn't allow us to build cars that crash 4 times a day.'

  13. Ignorance. by insecuritiez · · Score: 2, Insightful

    I'd say that most non-geek users are completely ignorant of software reliability. A computer just has errors. They have grown to accept that. To them that's why they have a warranty and that's why tech support exists. The typical windows 9x users believes that a restart is the natural second step to every click or change they make. I knew a girl that thought an illegal operation meant she could go to jail (for what she did not know.) So the first step in making software companies more reliable and more accountable is educating the common users. If people know what they are getting is bad their excuse wont be that Dell sold them a shitty computer, it will be that Software Maker X sold them buggy crappy software. Until then companies like Microsoft will run-amuck.

  14. It won't stifle innovation... by Macrobat · · Score: 4, Interesting
    Holding software liable for failure won't stifle innovation. A great deal of (most?) innovation goes on in academic settings anyhow, where results are published and critiqued by outside experts (i.e., from other universities), not hidden away like some Special Sauce recipe.

    Moreover, how innovative has MS (or anyone else) been about reliability? Adding new features like embedding full-length motion pictures into Word documents (apologies to Neal Stephenson) is one kind of 'innovation,' but it comes at the cost of gains in stability. One could argue, and people have, that most commercial software is derivative anyhow, and its mass adoption has stifled opportunities to create more stable products.

    And finally, do we really need that many new twists on things? I'm not saying stop research or trying new things, but mainframes running COBOL code have been hosting most of the world's financial and business information for decades, and they are legendary for their stability, with low incidence of data corruption and uptimes measured in years to decades.

    --
    "Hardly used" will not fetch you a better price for your brain.
    1. Re:It won't stifle innovation... by insecuritiez · · Score: 2, Insightful

      "Adding new features like embedding full-length motion pictures into Word documents (apologies to Neal Stephenson) is one kind of 'innovation,' but it comes at the cost of gains in stability."

      So if you mounted a rocket on your car to help with acceleration but you knew that one out of every ten uses it would completely fail and likely destroy your car are you innovating or are you being stupid? Innovating is when you add a feature and it just works. When Microsoft or any other company adds a feature to their software the end users expect it to work. They use it assuming it does. If it's still an un-reliably "beta" feature than what the companies is really doing is passing off all the testing costs onto the user.

      About the only group of people out there that do accept new features at the cost of stability is the Open Source community. But even then, take 99% of the OSS community and put them in a business situation where real cash rides on software stability and they'll opt to not have that "cool new" feature.

  15. Re:a perfect example... by Acidic_Diarrhea · · Score: 2, Insightful
    Poor programming practice? Apparently you've never done any serious programming. Programming is all about tradeoffs. Sometimes you make sacrifices in order to get the job done. If it comes down to making a sacrifice to get the job done and not getting the job done at all, I figure out how to shoehorn the solution into the system.

    This is part of the reason that much commercial software has so many problems. The consumer wants their programs cheap and they want their programs released two weeks ago. Sacrifices in the development and testing cycles are constantly being made in order to bring the product in at a lower cost and in a shorter timeframe.

    --
    I hate liberals. If you are a liberal, do not reply.
  16. Re:Wait... by destiney · · Score: 2, Funny


    Not to worry, the same article will be posted on Slashdot again tomorrow, possibly sooner.

  17. How to build reliable software by ZenShadow · · Score: 4, Interesting

    10 steps for builidng a successful software product:

    1) Fire half (perhaps all) of your programming staff. Most of them don't know know the difference between a heap and a stack, don't have a clue beyond the Java language, and if faced with the prospect of learning x86 assembly language, they'd faint.

    2) Hire people that *do* know the difference between a heap and a stack, perhaps have written in some assembly somewhere (even if just in college), and have figured out how to use a few more languages besides Java.

    3) When doing #2, ignore college degrees. Whether or not someone has one doesn't indicate whether or not they're a good programmer, at least until our the majority of our school system can actually teach the *relevant* skills.

    4) Plan. Plan. Plan. Document. Plan. Flowchart. Plan. Plan. Discuss. Plan. Discuss. Plan. Document. Plan.

    5) Code.

    6) Discuss. Test. Fix. Discuss. Test. Fix.

    7) Refactor

    8) Repeat 6-7 until all the software has been reduced to the simplest, most error-free possible codebase for its functionality.

    9) QA. (Yup, this happens *after* the testing in (6)!)

    10) Ship.

    --
    -- sigs cause cancer.
    1. Re:How to build reliable software by Rombuu · · Score: 3, Insightful

      Boy what fucking useful advice.

      And if someone asked you how to play a flute you'd say, "oh, just blow in here and move your fingers."

      --

      DrLunch.com The site that tells you what's for lunch!
    2. Re:How to build reliable software by ZenShadow · · Score: 2, Interesting

      I said *have written in* assembly. Not *will continue to write in* assembly.

      The point of knowing assembly on the target platform is not due to some misguided plan to build the project in assembly. Hardly realistic in today's world. The reason for it is because most anyone who has ever successfuly written a program in any assembly-level language, will understand vaguely how the machine works.

      That's the point. As a person who is tasked with hiring a staff to write software, I don't give a damn about a college degree or whether or not you know Java. I want to know if you understand the machine in general -- because if you don't, you're pretty much guaranteed to write crappy software.

      But then, most people that respond with comments like this typically fall into the Java programmer category...

      --ZS

      --
      -- sigs cause cancer.
    3. Re:How to build reliable software by cpeterso · · Score: 4, Funny


      11) Profit?

    4. Re:How to build reliable software by error0x100 · · Score: 2, Informative

      But what's the difference between a heap and a stack who should I care?

      Basically, you need to know the difference if you ever want to write really good, efficient code, particularly in C/C++. Its basically about the fact that in order to do so, you really need to know what is going on "behind the scenes" / "under the hood" etc with the compiler. You can't write "good", highly optimized C++ code without at least a solid understanding of how the compiler turns your code into assembly code, and how the CPU executes that assembly code (e.g. stack, registers, cache etc). If you don't truly understand what is happening 'behind the scenes', you not only end up making design mistakes that impact performance, but you also will never really be able to do as good a job at optimizing the C++ code. (This could be seen as a problem with C++, i.e. that you basically need to know assembly to use it properly, but thats the way it is).

      Stack is temporary storage space where function parameters and variables with function scope are created. When the function returns, the variables are popped from the stack (not physically, the stack pointer just gets incremented). Anyway, the point is, stack memory is rather limited (usually about 1 or 2MB in an application today). So, a fairly common programming error that you see from not-so-clued-up programmers is to use the stack (variables local to a function, function parameters) for thing that really belong on the heap (new/delete/malloc/free). Heap memory is effectively "unlimited", and persists across functions until manually freed by the programmer. Now, the clueless programmer might know new, delete, malloc, free etc, but doesn't understand when he is using the stack or the heap. So they make mistakes like the following:

      void foo() { char toobig[10000000]; ... }

      And next thing they are knocking on your door asking why their program crashes on that otherwise innocent-looking (or so they think) code. The array is allocated on the stack, and the stack basically overflows immediately. They should have used new/delete or malloc/free.

      So why is this so bad? Not because it is bad per se, but because it reveals a fairly deep lack of understanding of 'how to program'. Seeing this mistake is, in a way, a very useful benchmark of a programmers level of knowledge. Basically, if you are seeing a graduate comp sci. student on your team make such a beginner mistake, you know that they are very far behind, and will need a LOT more training and experience to become really good programmers. But more importantly, if a comp sci graduate doesn't know the difference between a stack and a heap, it also usually means that they lazy: they have never wanted to have a 'deep' level of knowledge of programming. And this laziness is an indication that you probably don't want that person working for you.

      This isn't all necessarily that important for many types of applications. For "typical" VB or Java apps, it isn't. But for any serious C++ project, you generally do not want such a programmer on your team; you rather want the sort of person who is actually willing to learn these basics either in university/college or on their own time.

      An analogy: its like a car repair place hiring a mechanic who has a general idea of how an internal combustion engine works, but doesn't understand details (e.g. doesn't understand what distribute timings are about). Its not as if you won't be able to get useful work out of that person -- but you are always going to have to do a fair amount of "hand-holding" in order to get it ("bring that here, put that there, unscrew this" etc).

    5. Re:How to build reliable software by CharlesEGrant · · Score: 3, Insightful

      This is an absurdly narrow view of computer programming. While appropriate to some types of software projects it would be entirely wrong for others.

      Much of what computer science has accomplished in the last 50 years has been to hide the hardware behind abstractions more suited to the tasks at hand. If I'm running a team bulding a web application I'm going to be looking for folks who really understand user interfaces, HTTP, TCP/IP, and security issues. Experience in assembly is not necessiarily going to shed a lot of light on their knowlege in these areas. One of the sharpest guys I ever worked with was a trade school graduate and an absolute wizard with SQL. He had no knowlege of processor architechture. I had to explain floating point number representation to him. However, he had totally internalized the relational database model, and he could crank out efficient queries in minutes that it took me days to understand.

      If I was writing a database engine I would want people who really understood the low-level hardware envirnoment. But if I writing an applications that uses a database engine I'll happily trade that low level knowledge for someone who really understands the abstractions of the engine.

    6. Re:How to build reliable software by arkanes · · Score: 3, Interesting
      A college degree is only as good as

      a) the college who granted it
      b) The degree to which the philosophy of the people who designed the curriculum matches yours
      c) And, most importantly, the student who took it. Since, given the modern US education system (I'm not familiar enough with other countries to judge), a degree at any level less than a Masters or PhD does NOT mean you've actually learned the skills - it simply means you can pass the courses. Those aren't the same thing at all.

      Being a good programmer requires alot more than a dozen classes. There's a mindset involved thats not common and hard to teach.

      On top of that, software is something new. It's not well-defined and proven the way most other disciplines are - it's common, for example, for ground breaking new work in software to be done by amateurs. To cut yourself off from that because you insist on a piece of paper that doesn't neccesarily guarantee skill is stupid.

    7. Re:How to build reliable software by error0x100 · · Score: 3, Insightful

      It really depends what you're writing, how critical speed is, and how much the application needs to be optimized. I'm developing 3D graphics software development toolkit, where you REALLY have to know where every little bottleneck could appear. Something as seemingly harmless as simply having a constructor in your 3D vector class can kill your apps. (Obviously not having a constructor is dangerous, so we provide a version with a constructor and one without, and the programmers need to make sure they know what they are doing). You need to look very carefully at all sorts of aspects, such as possible speed hits of pass-by-copy to functions, where all your inline functions are etc (not having inline functions in crucial spots can also kill your 3D apps), caching aspects etc.

      3D graphics is obviously a relatively "extreme" case, where you simply cannot just rely on a good optimising compiler, but there are others. For example, you might be required to write a text 'search' function for a very large database (e.g. the Oxford English Dictionary 2nd Ed software has a search system that allows text searches on over 600 MB of text data to be completed in under a second or so .. probably not unlike Google's I would guess). So for these systems, you also really need to know what you are doing, you cannot just "throw some code at the compiler" and "hope for the best", that just wouldn't be good enough.

  18. Slightly disingenuous by Timesprout · · Score: 2, Insightful

    "The idea that we depend on something that's inherently untrustworthy is very frightening," he says.

    This is such crap. Software is not inherrently untrustworthy. The fatal incidents cited all appear more due to human error rather than software bugs, as has happened since man started building machines.

    If software was so inherrently buggy no one would get on a plane or dare trust a traffic control signal.

    As for making manufacturers liable, you can but I would expect a negatibe response rather than an improvement. I am in favour of anything that improves software quality but I think what is most overlooked when people talk about 'buggy' software is logic errors, and misinterpretation/misexplanation of user requirements. If the developers/manufactures are to be held liable should we not then turn around and litigate against the subject experts who helped build the use case's?. What about the users who misuse/abuse their software causing unexpected results or loss?

    If developers/manufactures do become liable then the insurance and testing costs will probably drive the price of software beyond the reach of the individual.

    --
    Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
    What truth?
    There is no dupe
    1. Re:Slightly disingenuous by 91degrees · · Score: 2, Interesting

      I agree. Most software is very reliable. More aircraft crashes are caused by mechanical problems than software issues. If there is a life threatening fault in a piece of software, this usually results in a recall. The only software that's really unreliable is consumer level, and you are quite unlikely to die from Word crashing (even that doesn't happen to me much).

  19. Software reliability on NT by Anonymous Coward · · Score: 2, Interesting

    I guess I've had a different experience with reliability than most of the posters here have had.

    Given a piece of software that has both Windows and Linux versions, the Windows version is almost always more reliable/less buggy.

    The Linux version usually seems to have been done as an afterthought, and most of the development work goes into the NT product.

    I'd like to choose the Linux version everytime, but for most software, the Linux implementation just isn't there yet.

    1. Re:Software reliability on NT by YetAnotherDave · · Score: 2, Insightful

      are all those cases programs written originally for win32?

      I've seen it work both ways, usually the original is more stable than the port...

  20. Let's be realistic by phillymjs · · Score: 3, Interesting

    As long as companies like Microsoft are around to pump money into lobbyist firms and election campaigns, we'll never see a software-reliability law that's actually beneficial to consumers.

    I'm pretty much willing to settle for some sort of truth-in-software-advertising law... so when William H. Macy's voice tells us that Microsoft's server software is totally secure and reliable, it also has to tell us that Microsoft's EULA says that if this turns out not to be so, tough shit on you for believing it in the first place.

    ~Philly

  21. Blame the User but... by west · · Score: 4, Insightful

    It is certainly true that users place reliability very low on their list of priorities when buying products, but that does not necessarily means that they don't value reliability. It merely means that they take reliability for granted.

    For example, the last time I filled in a car survey, I didn't put "does not explode when ignition key turned" anywhere on the form.

    The problem is a fundamental one. There are way, way, way too many possible parties to blame. The only logical reaction for MS if such a law was enacted would be to immediately cease running any software that wasn't authorized by MS (with approriate fees, bars for competing programs, etc.), a situation that I imagine they see only in their fondest dreams. Legislation like this would be the perfect excuse. To be honest, even I would barely question their right to secure their system if they are going to be held responsible for its flaws.

    As for the idea that open source software should be exempt - I doubt that you'd accept the idea that cars should be exempt from safety standard if they provided you with the blueprints :-).

    1. Re:Blame the User but... by starseeker · · Score: 5, Insightful

      "As for the idea that open source software should be exempt - I doubt that you'd accept the idea that cars should be exempt from safety standard if they provided you with the blueprints :-)."

      But I would if the car were given to me for free with the blueprints. When I use such a car I am knowingly accepting the conditions that, while the designers may have done their best to make it work properly, I accept the risk of failure. That's where the no free lunch part comes in for free stuff - you don't get to nail hides to the wall if it doesn't do what you want. If you want someone behind it, pay them to take the legal risk. Otherwise, you're at the mercy of the developer's good will unless you want to become an auto mechanic. The difference is - with the blueprints, I can figure my way out. Commercial software sues you if you try the equilivent operations.

      Anyway. Bad analogy. The act of paying someone an agreed upon sum for support is where the responsibility part comes in. Not supplying blueprints.

      --
      "I object to doing things that computers can do." -- Olin Shivers, lispers.org
  22. Is there a downward trend? by bcrowell · · Score: 3, Interesting
    Is there really a downward trend in quality? How should we measure quality?

    I started using computers ca. 1979, when my dad got a TRS-80. I don't remember ever encountering a single software bug on that system, although the hardware certainly had its problems.

    But does that mean that quality is getting worse? The OS on that machine was on ROM, and was about 4 kb. A modern OS weighs in at many, many megabytes. It's possible that the number of bugs per line of code has actually been going down.

    Another possible metric is how often the user encounters a bug. By this metric, non-OSS consumer-level software has certainly been getting much, much worse. I switched to Linux from MacOS, and my average number of bugs encountered per day went from maybe 5-10 to some number less than one.

    Some things have definitely changed since 1979:

    • In the early 80s, software mostly came as BASIC source code. If you encountered a bug, you could fix it.
    • Software houses used to be much more open about bugs. I briefly worked on tech support and quality assurance for Digital Research around 1983. We had a list of known bugs in each product, and we would fax customers the list on request.
    • Performance is much worse. A TRS-80 would boot in a matter of seconds, whereas today the Windows boxes at my work take up to 3 minutes. The first word processor I ever used, Electric Pencil, started up in a fraction of a second, and never had any noticeable delays in handling input. This was on a CPU a hundred times slower than current ones!
  23. Why should... by Uber+Banker · · Score: 5, Insightful

    Why should liability be software or hardwar based?

    If i design a system to move some gears via an operator pressing big electronic buttons as a mechanical engineery, why should an electronic engineer who designs a program to operate the gears be exempt?

    We are both designing a system to do a job. As an electronic engineer, I make my system based on some OS, so either I or the OS manufacturer (which, I add, licences an OS, if it is used against the license terms, it is my liability) has the liability.

    Don't be lazy allocating responsibility.

    1. Re:Why should... by Fulcrum+of+Evil · · Score: 2, Interesting

      why should an electronic engineer who designs a program to operate the gears be exempt?

      • Because none of his development tools are sufficiently accountable to trust.
      • Because he is paid less than a plumber - he can't afford to be bonded on the wages you're willing to pay.
      • Because nobody is set up to bond programmers.
      • Because nobody wants to pay for quality.
      • Because guaranteeing the correct operation of a complex piece of machinery in an uncontrolled environment is idiocy. At least a manual gearbox leaves evidence when it gets overtorqued.
      • Maybe the safety interlock wasn't in the spec.

      As an electronic engineer, I make my system based on some OS, so either I or the OS manufacturer (which, I add, licences an OS, if it is used against the license terms, it is my liability) has the liability.

      What are you really? electronics engineers build circuits and hardware. Programmers build on top of an OS. Unless you got a RTOS, you almost certainly got no claim of correct operation. You really want to warrant that MS or Sun makes a bug-free product?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    2. Re:Why should... by dubious9 · · Score: 3, Interesting

      Programmers build on top of an OS

      Not always. There are alot of embedded applications where there is no operating system at all. Each program would function as its own operating system. There is overhead with OSes and sometimes you don't need the functionality. When you have simple hardware with a simple interface, dropping the OS is a good option.

      Also, I'm pretty sure the software that runs air traffic control or cars has a chain of responsibility going back to the programmer.

      --
      Why, o why must the sky fall when I've learned to fly?
  24. Re:Cutting Edge software - Debian? by egreB · · Score: 4, Informative

    Why can't there be a "cutting edge" in reliability?

    Because software needs to be thoroughly tested before it can be called reliable. "Cutting edge" software tends to be poorly (relativly speaking) tested, since it hasn't had that much time in the real world.

    Therefore, for instance, Debian stable still uses kernel 2.2 by default (alltough there's a 2.4 installation flavour), because it's well tested and reliable. As a result, I've never experienced inconsistency or crashes with a Debian stable release.

    (Now, if you want cutting edge Debian, there's always Debian Sid (also known as unstable)).

  25. Re:Cutting Edge software - Debian? by DietHacker · · Score: 3, Interesting

    "Because software needs to be thoroughly tested before it can be called reliable. "Cutting edge" software tends to be poorly (relativly speaking) tested, since it hasn't had that much time in the real world."

    This is circular. You nearly imply "cutting edge" is not reliable by default. This is a mistake. If there is a market demand for reliability on the consumer level, then it may need a cutting edge solution: New diagnostics or testing mechanisms. Perhaps OSS is that cutting-edge methodology and it simply has not caught on everywhere.

  26. the notion that... by zogger · · Score: 3, Interesting

    ..the notion that vendors would be liable for *bugs they know about* has some merit. Think about it. If the large companies-we'll pick on MS because it's such a good example-were forced to fix bugs in a timely manner, then they would need to accept bug reports. They would also have to release bug reports as soon as they knew about them, ie, they couldn't sit on a critical exploit and let people hang out in the wind for months and months. Once a report was made to them, it would then become an official bug they couldn't ignore. They'd have two choices then, switch to open source to find as many bugs as possible in the shortest time, or keep paying claims forever because they ignored bugs. Either way they would release less of better quality, not really a bad idea. If they wanted to hire professional beta testers, so what? More paid jobs. I don't see that as being all that bad. Nope, I don't.

    Open source -FOSS- is in a unique position because it's "free". There can't be any damages if you haven't paid for it, or at least that could be part of "the law" written into it.

    Normally I'm against new laws, but instituting some sort of consumer protection should be in order, if these companies want to make serious profits all the time. There are very few examples of consumer products out there that have no liability at all attached to them. With just a short time reflection on it, I can't think of any off hand, just *some* software. Eventually it's going to happen, so better to sort it out now, it really should have been sorted out 30 years ago, IMO. I tell you what will cause it too, if it's not done voluntarily in advance and adhered to, the first uber killer mass virus or trojan that makes code red or slammer look like a case of the sniffles, a net-killer. You'll get ten times worse legislation out of washington if the software community waits until that happens.

    I'd say it's bound to happen sometime, too. The article cites 50 some odd billion a year already in losses due to either bad or insecure programs, you have something bad happens that does ten times that in one day or something, you WILL see the mother of all knee-jerk reactions from "the software consumers".

    Well, OK, say that "something" is needed - What would be reasonable, but still not stifle development? One would be outright sales of software, not just renting -licensing of software. You buy it, you OWN it. You get it at such and such a date, as of that date it worked as advertised, after that date, well, up to the vendor then, anything "new" that needs to be added is up to them, from free unlimited patches and updates to pay-for individual bugfixes and exploits as you go, forever. Could be a yearly lease thing, whatever. For-profit vendors would get on the ball pretty quickly then if they charged too much or it didn't work all the time. they'd be forced into auditing as the most important part of production. Hmm, is this a bad idea really? The software is sold as "works on this and this, won't work with that and that". Yes, that would make software developers tend to work around just a few pieces of hardware and one or two OSs max no doubt. It would also be very expensive. Very expensive. Maybe people would go to the no liability but free stuff then? And I can see various versions in between those two extremes.

    Could there be set limits per incident? Perhaps. Max liability, perhaps.

    How about classifications of software?

    "Entertainments" might be of lower criticality (so less liable in terms of maximum cash) then say the pacemaker software, or auto-controlling software. "Communications" like browsers and email and chat would be in the middle someplace in those terms of criticality. If your business depends on UPS or FEDEX to ship widgets, and they constantly don't get there or they are smashed, those companies would be sued out of existence. but if your widgets are electronic, well? It's just your tough luck as the consumer then, the software and the infrastructure has let you down, but they all get to say

  27. Not if they do it right by Sanity · · Score: 2, Interesting
    It sounds like they are proposing that people will only be liable for bugs that they know about and don't disclose - not exactly a serious problem in the Open Source world.

    Forcing companies to disclose bugs in this way could only serve to allow users to make more educated purchasing decisions on the basis of software reliability.

    Imagine that I wrote some software that I *knew* was buggy, and then sold it to a hospital or into another situation where people's lives were at risk. Imagine then that one of the bugs I knew about before selling the software killed someone. Why shouldn't I be responsible for that?

  28. Re:how NOT to build reliable software by blastedtokyo · · Score: 2, Insightful
    This sounds a lot like what companies are doing today. They rank their employees and then cut 50% of them because their sales are in the tank.

    The real right answer is to move that 50% to testing, double project timelines, add diagnostics and plan for quality from the very beginning.

  29. Liability = Regulation? by joab_son_of_zeruiah · · Score: 2, Insightful

    Medical devices controlled by software have stringent FDA approval cycles. Basically you establish the quality of the engineering process, document the heck out of it, and then show clinical effectiveness in random control trials.

    What I find fascinating is that legal basis for this is Food and Drug Act -- for the protection of the public as the reason. But the more important side benefit for the approval process is to protect physicians from liability. It's frightfully expensive. And, BTW, physicians *don't have to do this* if they are involved in active oversight when using an experimental device.

    Conclusion: Most software products should be viewed as experimental devices which are being used by competent individuals and which therefore all liability is absorbed by the user. Check your EULA and GPL.

    Overall this article is regrettably superficial and quite predictable given the history of the quotees, which in the case of Peter Neumann goes back at least 25 years. Not much has changed. Even the examples have the same kind of air about them.

    Don't expect progress any time soon. Usually we need some kind of highly visible public disaster (e.g., like the recent nightclub fires) to motivate action.

  30. Because it would kill the computer market by Sycraft-fu · · Score: 4, Insightful

    You want verified design? Cool, you can get it. You can get a design that is gaurenteed to have no bugs and to never crash. This exists today, however you need to be prepared to PAY for it, in many ways.

    First, say goodbye to the concept of being able to load your own apps or run it on your own hardware. If the company is going to certify that everything will be bug free, they need to know that a 3rd party isn't going to fuck that up. Your system will be verified to run on a certian hardware and using certian software. You will not change any of that without consulting the company first to do a verification of the proposed changes, or you'll invalidate the gaurentee and service contract. After all, you can have 100% stable code, but if a peice of hardware has a dodgy kernel mode driver it doesn't matter, that can being the system down.

    Second, you will have the access restricted. You won't be able to just put this system on teh Internet to be accessed in any way you like, it will be accessed only through verified channels. You cannot potentially have the integrity compramised by clients sending unforseen data to it so all access must be controlled.

    Finally, you will pay in terms of price. IF you want a system of this level you are not getting it for under a thousand dollars. Think 6 or 7 figures, plus a yearly matenence contract since you yourself aren't allowed to maintain it.

    We have systems of this level in the real world. Like the AT&T/Lucent phone switches that run most of your phone network. We have one at the university and know what? IT never goes down, it didn't even go down when they upgraded it from a 5ESS to a 7R/E. It is 100% reliable. However, it is totally inflexable. We can't mess arnound with new technologies with it, it does phones and it does them only one way. We don't even work on it directly, it came with two technicians as part of the service contract. Oh, and it cost nearly 20 million dollars.

    Look, if you want to have a computer market where anyone is free to build hardware and assemble it how they like, and you can freely use whatever software you want, you have to accept that there WILL be problems and you won't get verified design. The big part of a verified design is just that, verification. You check EVERY part of the design and make sure it works properly with the other parts and has no errors. Well the problem is that hardware, software, and user interaction are all a part of that and all have to be restricted. Once a design has been tested and verified, it can't be changed without reverfying.

    So, if you really want 100% reliability, and can afford it in terms of monetary cost and teh sacrafices you have to make, then don't whine, go and get it. Talk to IBM, EMC, Dell or the like. They'll design you a system to do what you need that will never crash ever. However you'll need to decide what it needs to do and be happy with that, because you won't be able to change it, and you'll have to pay a real cash premium for it.

  31. No liability for defects? by nomadicGeek · · Score: 5, Insightful

    I disagree about the article's assertion that there is no liability for defects in software.

    I deal with embeddeded controls in industrial control equipment all of the time. I just had to change my insurance company last year and my rates went up because companies are being held accountable and insurance companies are paying out when people screw up. Many companies don't want to insure programmers anymore. Sounds like the hammer is coming down to me.

    You may not be able to sue MS the next time Excel craps out on you but I assure you that you could sue a programmer because the system that he programmed dumped 1000 gallons of a toxic substance into your containment area or because you just released a toxic cloud of ammonia from your plant.

    When the stakes are high, programmers tend to have to test a lot more. You still have to remain economically viable though. Three lines of code a day may work for NASA but the rest of us can't afford to be that inefficient. Of course the stuff that I can blow up is at most worth 10's of millions of $, not billions.

    When it comes to embedded control apps, I don't think that things are much worse than they are for our physical counterparts. Yeah a plane crashed because of a bug in an altitude control system but they also crash because of other design problems in the mechanical, electrical, and materials engineering areas. I don't think that programmers are any less aware that lives depend on their work than any other type of engineer.

    If you are doing number crunching types of applications, you also tend to run the code through a battery of tests. You can definitely be sued for screwing that stuff up.

    Now little controllers in your dishwasher and your run of the mill desktop apps are held to a lower standard, I agree. You are rewarded by the market for getting new stuff out the door cheaply and quickly. You can certainly argue that it shouldn't be that way but the masses have spoken. If your stuff gets too far out of hand then the market will let you know. MS is definitely feeling the pressure from OSS and rightly so. I can bet you that they are atleast trying to respond. I can definitely see a big improvement between the Windows XP that I run on my notebook and desktop and the NT 4 that I ran a few years ago. I can also see that Windows 2000 is much better than NT 4 was on the server, but it isn't good enough yet and that is why a lot of people are moving to Linux for things like web servers, DB machines, etc. The market is speaking.

    I would say that programmers are ultimately held accountable. I would hate to see things swing too far out of hand as I do think that it would ultimate stiffle innovation.

  32. Re:Cutting Edge software - Debian? by lsdino · · Score: 2, Informative

    Circular thinking. Find the golden tool required to reduce (dramatically) the time and expense to "debug it, redesign it, retest it, certify it, and release it". If you think it can be done, then you may not be the person to do it. I'm not either but problems should be seen as opportunities. How do I open all these cans quickly...

    There is no golden tool, or to quote a more famous source (Frederick P Brooks, Jr) there's no silver bullet.

    The article discusses the magic tool idea saying the Sustainable Computing Consortium "wants to create automated tools that analyze software and rate its reliability." But the problem with reliability is it's BIG. Not only must your program not crash, not leak resources, not have race conditions, and not degrade in performance over time, but it also needs to be doing the right thing during all of this (you know, what the software was written for in the first place). Finally the software has to be able to do all of this in the face of all the possible failures the system could throw at it. That's no small feat. Now what type of tool will work across the board? I won't stand in the way of someone trying to make one, but honestly I don't see it happening.

    There are a lot of different testing techniques that solve different parts of these problems. And each application is going to need it's own unique testing methods in addition to tried and true techniques. But all of this testing is going to take time to develop and/or adapt to the product at hand and finally run. And as you discover reliability bugs you may be blocked before you can find (and fix) more. So it will take a long time to work through the issues.

    But your original question is "Why can't there be cutting edge reliability?". And the answer is that there can be, but it has to be what the consumer demands. If the consumer will choose features over reliability that's what the market will deliver. This is simple - if you spend time doing all of this testing and improvement to your product someone else will ship the unreliable product first and everyone will use that. They may curse the developers name while they're using it, but they'll use it. Meanwhile they're improving their product AND getting revenues, and you're just improving your product. They end up having more money to improve their product, and they win.

    In cases like NASA the customer demands it, and they get it. A magic tool is a long way off - our code needs a lot more metadata before a magic tool can even begin to tell what's going on.

  33. Re:WTF not? Vote with your feet! by Ian+Bicking · · Score: 2, Insightful
    This is a problem best left to free markets.
    The free market only works when all parties are informed. You're right, just opening up the source doesn't mean the consumer is informed, though it does imply they can become informed, or at least that they have an opportunity to confirm claims made on that software.

    Of course, EULAs make further restrictions intended to keep consumers uninformed -- barring benchmarking, sometimes barring other criticism (does Frontpage still have that clause?), not allowing security flaws to be published, etc.

    Even with source, false advertising is quite possible, and should be punishable if we are to have a free market. It is now, but not done with great vigor.

    Anyway, I guess my point is that this isn't a free market, and that the free market cannot be achieved with laissez faire policies.

  34. Well it's the good old trade-off by Kjella · · Score: 3, Insightful

    Price, features, speed and reliability. Pick some but you can't have all.

    To write almost bugfree software, like DoD / NASA (just be sure to check the specs for metric or not), the price is astronomical. Despite the obscene profit margin, Windows would be *much* more expensive if written by the same standards.

    Also, adding features is another reason for instability. Not only commercial software, but also OSS software has been accused on focusing too much on adding features. In the commercial world because features sells, and OSS I think mainly because adding features is more fun than debugging an elusive bug that only happens on friday 13th under a full moon.

    Another thing is speed. Particularly games are running the latest beta drivers on a tweaked and retweaked engine for speed. This is happening both in the high-end (pushing eyecandy) and in the low-end (pushing playability for low power machines). Don't expect perfect stability from that.

    In short, I think the market would normally work this one out by itself. When delivering appliances I feel you should have the same liability as for the rest of the car. I mean whether the brakes fail because of a mechanical or electronic (software) design flaw, is not very relevant. However, for a typical software program that operates only on your computer processing information, I don't see this as very useful. Requiring some kind of standard would not change the basic trade-off, and it's not the producers' fault that the consumers aren't valuing reliability and security. They aren't willing to pay the price in form of money (How many complain about the price of Windows already), features (Go Linux. More stable, less features though) or speed (How many complain about the speed of Java that tries to abstract away from bugs related to not properly terminated strings, pointers arithmetic and array indexes out of bound?). So what did you expect?

    Kjella

    --
    Live today, because you never know what tomorrow brings
  35. And even worse... by raehl · · Score: 4, Interesting

    Lots of people don't even WANT reliable sofware - at least, they don't want to pay for it. I'll happily accept my software crashing once a week if it saves me $300 on the cost of what would otherwise be $100 software. The last thing we need is to have the software industry start to look like the healthcare industry, where everyone pays 3x what they should to cover the insurance in case someone needs to sue someone else.

    If you need absolutely, positively reliable software for some purpose, than contract with a company who is willing to provide it, and pay the price it takes to get it. But Joe Blo software user should have to foot the bill because someone ELSE wants to force ALL software to be reliable under penalty of multi-million dollar lawsuit. If I sell an operating system designed to let you play MP3s and video games and browse the internet for $99, and you use it you run your mission-critical application that causes you to lose $100 million when it crashes, why should I be liable because you used my (albeit buggy) tool for a $100 million mission critical ap? It's YOUR job to assure that you are using the correct tools for the job, NOT the guy who makes the tools!

    It's like cars - just because your transmission goes out doesn't mean you get to sue the manufacturer. You get your transmission fixed if you've purchased a car with warranty terms that allow it to be fixed, and otherwise you pay for it yourself.

  36. Time for another regulatory body! by silverhalide · · Score: 3, Insightful

    This isn't really a huge issue, it's just illustrating the need for another certification program. Look at the semiconductor market: There's semiconductors that you can use in everything, then there's semiconductors rated MILSPEC and Hospital grade, which have been tested and are approved in critical situations. Same damn semiconductor more or less, just has been exhaustively tested. They usually cost many times that of the other part, but you KNOW it will work, 'cause whoever made it is going to stand behind it.

    We need the same thing for software. Someone to set up some guidelines, and provide certification to software that is going to be used in a critical application. Hell, maybe even the UL could open a division and do it. It is plain stupid to assume authors have liability over all software written, especially in the open source world. However, if I buy a product, and its software has been certified by a trustworthy organization, I'd feel better about myself.

  37. Re:Cutting Edge software - Debian? by alext · · Score: 3, Informative

    Because software needs to be thoroughly tested before it can be called reliable.

    This is not strictly true. I know that my Java program will never have a buffer overrun because it is impossible for me to produce JVM instructions that corrupt buffers or alter pointers. Therefore, I can download and run any Java program to my Java smartphone without invalidating the phone's network certification.

    Throughout this discussion, I've noticed that /. contributors have consistently ignored the role played by trusted components such as VMs and safe compilers. Bottom line is that we all need to get away from the mindset engendered by years of Unix and C hacking and recognise that not all problems are going to be solved by employing programming whizzes or spending a fortune on testing.

  38. Depending on unreliable systems by dpuu · · Score: 5, Insightful
    "The idea that we depend on something that's inherently untrustworthy is very frightening," he says

    If something is inherently unreliable then you don't need to fix it: you find ways to live with it. A perfect example of this is the internet itself. TCP is a reliable transport provided over IP, an unreliable internetworking layer.

    Make no mistake: IP is explicitly and deliberately unreliable. This keeps it simple, and allows upper layers to choose appropriate quality of service parameters for their application.

    How this relates to the issue of unreliable application software is fuzzy: but its pretty obvious that humans have adapted to the reality of the situation: the power-cycling protocol is just one example of the ways in which we cope.

    If a situation is life-critical, then I'd be happier knowing that the system is designed to cope with glitches then if the system assumes these glitches have been tested out of existance. Cosmic Rays really do exist, so some level of unreliability is guarenteed!

    --
    Opinions my own, statements of fact may contain errors
  39. Free software and special cases by Anonymous+Brave+Guy · · Score: 4, Insightful
    This just means that the laws should special case free software.

    In most places, free-as-in-beer stuff is already fundamentally a special case, because unless something of value changes hands in both directions, you don't have a contract.

    Of course, free-as-in-speech software neither deserves nor should get any special privileges. If you make money by selling me an OS that happens to be GPL'd, open source, or otherwise "free", that's still something you're selling me. "Oh, you should have looked at all the source code for Linux and spotted the critical bug for yourself" isn't much of an excuse at that point; I'm paying you to have done that for me.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  40. What they should do... by Anonymous+Brave+Guy · · Score: 2, Interesting
    All this will do is make them add a clause to the shrink-rap EULAS "I accept responsibility for any loss off blah blah as a result of software defects"

    What they should do is remove any legal weight from clauses along the lines of "This software comes with no warranty of any kind, including fitness for any particular purpose..."

    If you're taking my money for it, it should be fit for something, just the same as any other product, and just the same as any other sales pitch, I should be given a fair and accurate description of what the software I'm paying for is or isn't fit to do.

    Part of the problem here is that most people on this thread seem to be thinking in absolutes: "if Word crashes, I can sue MS for [evil grin and pinkie finger to mouth] one million dollars!" It's not about 100% reliability, it's about reliable enough. A word processor doesn't need to be bug-free, it just needs to be reliable enough to write my documents under normal circumstances. MS might reasonably be expected to pay some compensation for excessive downtime due to their carelessness with the recent product activation issue, but not if Word crashes because of some incompatibility with other software on your machine about which they can do nothing.

    Surely it should all come down to fair and reasonable marketing claims (don't say it's 100% reliable if it ain't) and fair and reasonable compensation when those claims are found to be erroneous (if you said it was in good faith, but it turned out not to be, you give me back some reasonable amount in compensation, depending on how effectively you addressed the problem once it was discovered).

    If you want 99.99999% up-time for your server, you can buy from someone who claims to provide it, paying whatever the going rate is for it, and expect to get it (or compensation). However, you aren't entitled to assume that WinXP is suitable for running operating theatre laser surgery algorithms "just because" and then sue MS when it doesn't live up to the job you've foolishly given it.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  41. what is the price of features and speed? by zoftie · · Score: 2, Insightful

    reliability. further, we expect more and more features and expect it at a low price. People who design software, do so on language that is backwards compatible with ones 20 years ago, namely C++, which carries some of the many failures on many levels into living applications. Now the language is not wrong, but how many people really considered writing their applications, say in Lisp, Scheme or Forth. Each language has its advantages, yet economics of software development demand that people should use most widespread language, so that it would not be as hard to hire decent software developers. What most managers do not realize is that by choosing a language they meddle in the affairs of those who know the field much better... The is whole stigma with using software tools, languages being the core. And often it is decided by managers who do not carry responsibility for development and manintenace of the software. And even if they do common fallacies used to justify imposition of specific tools onto software teams.
    However sometimes teams are fortunate enought to have choice in matter of tools, yet they never really have the way to verify that something they have created is exactly what a customer needs. Scrutiny by expert users is often absent from software development ... except games! So what do you expect? Incomplete requirements, unfit tools ... list goes on and on. Very few people are able to cut through the bullshit, and crap in general to get a very good software package out. Nevermind treat their employees right. Bugs is corporate software are just some of the sysmptoms corporate world bearing off, core of the problem being, is sheer miscommunication in way public companies are handled - which is what most of software companies are.

    In the end it is all about compromises and vision. Software bugs are just side effects, that will exaterbate any main problems a software company has. (that is bugs in tested and released software).

    Plus something that was not tested for and does not have fatal outcome on the program is not a bug, i'd rather qualify it as a glitch...
    my 2c.

  42. Re:a perfect example... by arkanes · · Score: 2, Insightful

    Choosing high level languages does NOT remove potential faults. It simply delegates those faults elsewhere. In some cases thats a reasonable tradeoff for the performance hit of a VM, in some cases it isn't.

  43. Re:Cutting Edge software - Debian? by PostItNote · · Score: 2, Insightful

    True-ish.

    But what about the many bugs in most JVM's? Are you sure that your java code won't tickle these bugs and bring the whole system down? What about bugs that aren't just buffer overflows? What about it dropping a fork bomb on the system? What about memory leaks (harder with Java, but still very possible)? What about running out of memory?

    As far as I can tell the only way to get code that doesn't flop over in these situations is by "employing programming whizzes or spending a fortune on testing".

  44. Take a look at Ada by RussP · · Score: 2, Informative

    Yes, Ada was designed from the ground up for reliability, and experience has shown that it substantially reduces bugs, particularly post-deployment bugs, the most expensive kind. I'm amazed that nobody else mentioned this. Oh well, nobody will read this comment anyway.

    --
    I watch Brit Hume on Fox News
  45. Re:WTF not? Vote with your feet! by Ian+Bicking · · Score: 2, Insightful
    My point was that this is not a free market, that we do not have informed consumers. It's harder to misinform with open source, but not impossible -- nor is it impossible to have informed customers and closed. But there is a definite attempt in the use of EULAs, as well as use of the DMCA and trademark laws, to keep consumers uninformed -- to keep people from communicating with each other about the flaws in a product. That's not a free market.

    However, it is still questionable whether closed source -- as it is typically sold -- really leads to informed consumers, even without restrictions Software is not particularly transparent, and its flaws may not be readily apparent. Buyer Beware is not the free market.

  46. Re:Wait... by mythr · · Score: 2, Funny

    Actually, Microsoft software is quite reliable. Reliability does not, however, imply security or stability. My friends' MS software crashes quite reliably. ;)