Slashdot Mirror


MySQL & Open Source Code Quality

dozek writes "Perhaps another rung for the Open Source model of software development, eWeek reports that an independent study of the MySQL source code found it to be "in fact six times better than that of comparable commercial, proprietary code." You can read the eWeek write-up or the actual research paper (reg. required)."

446 comments

  1. Six times better? by pyite · · Score: 5, Insightful

    Six times better? I didn't know it was possible to quantify code quality in that matter. Interesting.

    --

    "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

    1. Re:Six times better? by Anonymous Coward · · Score: 0

      RTFA. You'll see how they come up with the numbers and the 6* math.

    2. Re:Six times better? by Anonymous Coward · · Score: 0
      RTFA to see what metrics they are using to quantify the statement.

      Reasoning performed its independent analysis using defect density as a prime quality indicator.

    3. Re:Six times better? by doowy · · Score: 3, Insightful

      It was based purely on "defect density" - the number of errors per throusand lines of code.

      MySQL had a defect density of 0.09 and the industry standard was found to be 0.57 defects per thousand lines of code.

      The MySQL development team has since fixed all of the 'defects' that were found in the study. (which ranged from a few uninitialized variables prior to usage to memory leaks).

      --
      ..mork
    4. Re:Six times better? by keester · · Score: 1
      I didn't know it was possible to quantify code quality in that matter.

      What matter? Electrons?

      I think the manner in which they tested it, and this is just from reading the article, was defect density.

      --
      Take it easy? I'll take it anyway I can get it . . .
    5. Re:Six times better? by dtfinch · · Score: 1

      Not really. Just an independent company hired to inspect the source calculated a visible defect rate that was 1/6th the average of the other products they had inspected, or 1 bug found per 10000 lines of code.

    6. Re:Six times better? by man_of_mr_e · · Score: 3, Informative

      Sadly, this isn't what most people assume it means. Reasoning's software only finds "obvious" defects, such as null pointer assignments. It doesn't (and can't) determine if a bit of code does what it's supposed to do, only that it does whatever it does without any danger of crashing.

      Basically, it's no different from running your code through BoundsChecker or CodeWizard, or any number of other such tools that check for obvious errors (Null pointers, obvious buffer overflows, dangling references, etc..)

      While I have no doubt that MySQL's code is perhaps "cleaner" than your typical unpublished code, I have plenty of doubt that MySQL's code is "better" than unpublished code in terms of efficiency, logic errors, etc..

    7. Re:Six times better? by Anonymous Coward · · Score: 0

      who the hell modded this crap up? the guy clearly didnt RTFA, otherwise he'd be able to answer his own question.

    8. Re:Six times better? by Anonymous Coward · · Score: 0

      #include <stdio.h>

      int main(int argc, char *argv[])
      {
      printf("Hello world!\n");
      return(0);
      }

      ..... and there I've beaten them with 0.00 defects per KLOC. For the dense: that measure is pretty useless if your code doesn't do much.

    9. Re:Six times better? by B'Trey · · Score: 1

      I think it's rather difficult to make the claim that MySQL's code "doesn't do much." If you think otherwise, YOU write a database engine with all of the features MySQL has and see how many lines of code you have.

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    10. Re:Six times better? by B'Trey · · Score: 1

      While it's no different in principle, the test programs used by Reasoning are much more thorough than BoundsChecker or CodeWizard. They'll catch a great many errors that common lints will completely miss.

      And this is a valid metric. Studies have shown a positive corelation between clean code and fewer errors. (Incidently, null pointers and the like ARE logic errors.)

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    11. Re:Six times better? by sinserve · · Score: 1

      #include

      int main ()
      int argc,
      char **argv,
      char **envp
      {
      (void) printf("Hello World!\n");
      return;
      }

    12. Re:Six times better? by Anonymous Coward · · Score: 0

      Stupid moderators with mod points to burn.

      He posted 1 minute after the article was, so obviously he didn't read it, or maybe he has a subscription, but I doubt it. The key to getting karma on slashdot now is post a comment as soon as a article is posted, make up a question on the article short, and not come across as a total retard.

    13. Re:Six times better? by Anonymous Coward · · Score: 0

      Who did these reviews... how can they compare mysql code to proprietary closed source code?

      Did they violate DMCA and disassemble the code?

    14. Re:Six times better? by MagicBox · · Score: 1

      You asked my first question

      second, if they compared it to *closed source* databases, how would they know that it is in fact *six times better*? I thought the whole point of proprietary databases was that you couldn't see the code. Plus, even if they somehow saw the code (impossible) how long would it take you to compare? And how would you compare them? Line by line? Function by function? I want MySQL to be 6 (or more) times better, but I think more reasearch is needed on this

      --

      The phaomnneil pweor of the hmuan mnid. Fcuknig amzanig eh!
    15. Re:Six times better? by krow · · Score: 1

      It should be made clear though that MySQL did not hire this company. Nor did we have any time to do a release or even look at these issues before they did their review.

      --
      You can't grep a dead tree.
    16. Re:Six times better? by Ed+Avis · · Score: 1

      They've obviously been taking lessons from SCO on how to extract 'facts' from source code.

      --
      -- Ed Avis ed@membled.com
    17. Re:Six times better? by Anonymous Coward · · Score: 0
      The MySQL development team has since fixed all of the 'defects' that were found in the study.

      So MySQL now has zero bugs according to the criteria of the study, and is therefore infinitely better than the code it was compared against.

  2. Hmmmm by Anonymous Coward · · Score: 1, Interesting

    Woot. Pretty amazing, but with so many eyes and not at all confined by the "9-5" grind, it is almost expected.

    1. Re:Hmmmm by Anonymous Coward · · Score: 0

      But how much revenue does it generate compared to the propietary ones?

      That question is quite relevant in the economic climate we are experiencing now.

  3. Just wait... by cableshaft · · Score: 5, Funny

    ...until I release my MySQL source code to the open source community. Then that 6x multiplier will drop down to 2x.

    Yeah, it's really that bad. Gets the job done, though. Hell to maintain. Probably would've helped if I documented any of it.

    Maybe I should read that Code Complete book I keep meaning to read sometime.

    --
    Creator of the popular web game Proximity
    1. Re:Just wait... by Anonymous Coward · · Score: 0

      > Code Complete

      MS book. Any open source equivalents?

    2. Re:Just wait... by I8TheWorm · · Score: 0, Offtopic

      You should wait until I release my version of Code Complete, titled Code Imperfect. Available soon on shady websites near you.

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    3. Re:Just wait... by eddy · · Score: 1
      --
      Belief is the currency of delusion.
    4. Re:Just wait... by I8TheWorm · · Score: 2, Informative

      Good practices nonetheless, and not really win32 specific. Another fairly good one is The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, David Thomas.

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    5. Re:Just wait... by I8TheWorm · · Score: 0, Offtopic

      Hey, that's pretty cool, I'll have to read up. Then I'll sue!

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    6. Re:Just wait... by Anonymous Coward · · Score: 0

      Get over it. The book is excellent. Buy it used or check it out from the library if you're so worried about giving MS a few shekels.

    7. Re:Just wait... by BigLinuxGuy · · Score: 1

      Actually, if MS followed the practices outlined in Code Complete, they wouldn't have anywhere near the number of issues (defects, whatever) that seem to keep biting them. The book is actually a pretty good "best practices" guide. Regardless that Microsoft Press is the publisher, it's not Windows-specific but rather is more focused on general best practices. Definitely worth a read (or two or three) in my opinion. Of course, I remember Steve Ballmer's public call to Microsoft development teams to return to solid software engineering practices a few years ago. Maybe they don't read his press releases?

    8. Re:Just wait... by Anonymous Coward · · Score: 0

      > Maybe I should read that Code Complete book I keep meaning to read sometime.

      Why? The publishers haven't (if memory serves the author was a member of a Mac development effort).

    9. Re:Just wait... by Anonymous Coward · · Score: 0

      No, I have the book - and `writing solid code`. I have no problem with MS. I mean, they do a lot of stupid/evil things, but some of their stuff is great. I love VB and DirectX. They must have some top people working for them.

      I was genuinely just wondering if there was an open source equivalent - either free (as in beer) or related to writing OS programs.

  4. Don't rest on your laurels. by grub · · Score: 5, Insightful


    Perhaps another rung for the Open Source model of software development

    Uhh... no.

    It's is a glowing report for this particular open source project but that brush shouldn't be used to paint all open source. That will just lull open source developers into a false sense of euphoric contentment. Code quality didn't get this far by having a fixed target, that target should be a carrot on a stick that will never quite be reached.

    --
    Trolling is a art,
    1. Re:Don't rest on your laurels. by MartinG · · Score: 3, Insightful

      The point is that for some folks it's still unfortunately the case that open source software is automatically worse the proprietry software, despite some of us knowing how outdated and wrong their ideas are.

      The "rung" in question here is the one where open source progresses in those peoples minds from "must be worse" to "can be as good or better"

      There's no suggestion of "all open source is better" anywhere.

      --
      -- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz .@adgimnoprstu
    2. Re:Don't rest on your laurels. by Urkki · · Score: 1

      Except if the carrot is a bonus for company employees, and they never get the carrot, they learn soon that actually there is no carrot. Of course if the ones who realize this just change jobs, this won't be a problem...

    3. Re:Don't rest on your laurels. by grub · · Score: 2, Insightful


      it's still unfortunately the case that open source software is automatically worse the proprietry software

      All software sucks, the degree of suckiness is what matters. :)

      --
      Trolling is a art,
    4. Re:Don't rest on your laurels. by Anonymous Coward · · Score: 0

      You've watched Office Space too many times. Stock options and cash bonuses aren't a relic of the 90's. Stock options and cash bonuses to lazy slackers are. Which is fine by me.

  5. Reasoning? by jetkust · · Score: 1

    Through its analysis, Reasoning concluded that the commercial average defect density--covering 200 recent projects and totaling 35 million lines of commercial code--came to 0.57 defects per thousand lines of code

    Um, so they just guessed that the code was six times better. Okay.

    1. Re:Reasoning? by hyphun · · Score: 1

      Uhm. Reasoning is the firm that does the independent checking and comparing of the Code.
      It's not that they just sat around and reasoned.

      Another clue however, how misleading some trademarks can be.

    2. Re:Reasoning? by Anonymous Coward · · Score: 0

      Considering we don't have the source code to Oracle or Sql. Yes!

    3. Re:Reasoning? by Ironica · · Score: 1

      Um, so they just guessed that the code was six times better. Okay.

      Erm... .57 / .09 = 6.33333, rounds to 6. I'm not guessing; I used a calculator.

      Granted, their numbers are based on a self-selected sample of only 200 projects. That's still not a guess, it's actual information. Furthermore, there's nothing that implies that their numbers would be unreliable indicators, unless they're too *low*... I would think that companies that contract Reasoning to analyze their code probably have better coding habits to begin with.

      --
      Don't you wish your girlfriend was a geek like me?
  6. Measurements by Stiletto · · Score: 5, Insightful


    Undoubtedly()
    {
    when();
    you = measure(quality);
    in.defects();
    per->lines_of(code, anyone);
    can = write(good, solid, code);
    }

    1. Re:Measurements by Walterk · · Score: 5, Funny

      Post:2: warning: return-type defaults to `int'
      Post:2: In function `Undoubtedly':
      Post:3: warning: implicit declaration of function `when'
      Post:4: `you' undeclared (first use in this function)
      Post:4: (Each undeclared identifier is reported only once
      Post:4: for each function it appears in.)
      Post:4: warning: implicit declaration of function `measure'
      Post:4: `quality' undeclared (first use in this function)
      Post:5: `in' undeclared (first use in this function)
      Post:6: `per' undeclared (first use in this function)
      Post:6: `code' undeclared (first use in this function)
      Post:6: `anyone' undeclared (first use in this function)
      Post:7: `can' undeclared (first use in this function)
      Post:7: warning: implicit declaration of function `write' Post:7: `good' undeclared (first use in this function)
      Post:7: `solid' undeclared (first use in this function)
      Post:8: warning: control reaches end of non-void function

    2. Re:Measurements by Stiletto · · Score: 1


      How did I know someone would run this through a compiler?? Actually, I forgot to include the appropriate header, so it's only one error!

    3. Re:Measurements by mosschops · · Score: 1
      Don't worry, here's the dev.h you were missing:
      /*
      Copyright (c) 2003 SCO - not for use in GPL code, or else.
      */

      struct tagdev
      {
      void (*lines_of)(int,int);
      void (*defects)();
      }
      in, *per;

      extern int you, can, quality, good, solid, code, anyone;

      int Undoubtedly ();
      void when ();
      int measure (int);
      int write(int,int,int);
    4. Re:Measurements by Anonymous Coward · · Score: 3, Funny

      Think about this: While you were writing that, those guys from school that stole your lunch money and kicked your ass where getting laid.

    5. Re:Measurements by Anonymous Coward · · Score: 0

      Think about this: While you were writing that, those guys from school that stole your lunch money and kicked your ass where getting laid.

      I'm not sure taking it up the butt in pound your ass prison counts as getting laid but whatever.

    6. Re:Measurements by Anonymous Coward · · Score: 0

      Think about this: While you were writing that, those guys from school that stole your lunch money and kicked your ass where getting laid.

      Actually, they're the ones in low-paying jobs now, paying child support to the mothers of their children. :-P

    7. Re:Measurements by Anonymous Coward · · Score: 0
      Were letting laid.

      Are you one of them?

    8. Re:Measurements by Anonymous Coward · · Score: 0

      Were letting laid.

      Are you one of them?


      You too eh? Welcome to the club :)

    9. Re:Measurements by jc42 · · Score: 1

      Actually, I forgot to include the appropriate header, so it's only one error!

      Good point.

      It reminds me of a project some years back that used a compiler that was notorious for going insane when it found the simplest typo, and getting all the error messages wrong from then on. We had an unofficial contest to see who could get the most error messages from a single-char error. I won hands down and ended the contest when I submitted a batch program with a missing comma, which ran through a whole box of paper printing the same error message out over and over and over and over and ...

      What people really loved was the fact that none of the operations staff caught the error and killed the job before the printer ran out of paper. We kept the stack of paper around as an exhibit for several
      years.

      Nowadays compilers always seem to count the errors and give up when they reach some N. This takes all the fun out of it.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
  7. Re:Duh! by pyite · · Score: 3, Informative

    MySQL is not touted as Enterprise because its not Enterprise. Sure, it's fine for running Slashdot, but I wouldn't want it storing mission critical data. Oracle may be slower, but I'd much rather trust it to make sure my data is properly stored than MySQL.

    --

    "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

  8. RTFA by thenextpresident · · Score: 1

    "Reasoning performed its independent analysis using defect density as a prime quality indicator. Defined as the number of defects found per thousand lines of code, MySQL's defect density registered as 0.09 defects per thousand lines of source code. Through its analysis, Reasoning concluded that the commercial average defect density--covering 200 recent projects and totaling 35 million lines of commercial code--came to 0.57 defects per thousand lines of code."

    --
    Jason Lotito
    1. Re:RTFA by Urkki · · Score: 1

      Mod parent up! I was just about to post a request for somebody to RTFA and tell the rest of us what the hell "six times better" was supposed to mean.

    2. Re:RTFA by rmohr02 · · Score: 1

      Ahh. So the inverse of the number of defects found per lines of code indicates quality. I just assumed there was something important about the overall design of the program--thank you for correcting me.

  9. If you would RTFA... by Theatetus · · Score: 5, Informative

    ...they quantified it by dividing verified defects by lines of code. MySQL had 0.09 bugs/KLOC while the "commercial" defect density was 0.53 bugs/KLOC. (Their use of the term "commercial" confused me since MySQL is, after all, a "commercial" project, just an open-source one.)

    --
    All's true that is mistrusted
    1. Re:If you would RTFA... by pyite · · Score: 5, Insightful

      "Defect" is also a difficult term to define. Some errors are much worse than others. It's not all about numbers, folks. Don't get me wrong, I'm not saying that MySQL isn't a great product. I just get skeptical when I hear things talked about in terms of "better" and "best."

      --

      "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

    2. Re:If you would RTFA... by SonicBurst · · Score: 5, Insightful

      Not only is it hard to define defect (and it is very obvious that some defects are worse than others), but this code review sounds like it only spots "grammatical" or style errors in the code. It doesn't sound like it could find a defect in an algorithm implementation or logic. To me, these are where the true defects are, in the logic/reasoning breakdowns.

      --

      Geek used to be a four letter word. Now it's a six-figure one.
    3. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      Well then again, more the customers use a certain product, more they find 'obscure' bugs. We title a certain product 'robust' after N number of patches are released against it.

      Younger/Less frequently used products may have fewer bugs - which means not enough tested.

      I am not judging MySQL, but only questioning the universal validity of the bugs/KLOC criterion.

      -Srini

    4. Re:If you would RTFA... by Anonymous Coward · · Score: 1, Insightful

      This could also mean that the code is bloated.

    5. Re:If you would RTFA... by Mawbid · · Score: 1

      Heh!, that's nothing. I've seen skin care product ads that say the product will make your skin look "68% healthier".

      --
      Fuck the system? Nah, you might catch something.
    6. Re:If you would RTFA... by rembem · · Score: 4, Insightful

      0.09 vs 0.53 bugs/KLOC can also mean mysql has six times the amount of code per line, compared to an average "commercial" program. Those numbers should be divided by a code-density-factor.


    7. Re:If you would RTFA... by B'Trey · · Score: 5, Insightful

      I'm not sure what you mean by "grammatical" or style errors. If you're talking about syntax errors, those should prevent the code from compiling. I'm not aware of how coding style can be an error (unless you're programming in Python).

      The specific errors in MySQL were dereferencing null pointers, failure to deallocate memory (memory leaks), and use an uninitialized variable. These aren't the only bugs that such an analysis can find; they're the ones that were found in MySQL. And they're definitely errors in logic.

      Certainly, there are bugs that such an analysis can't find. If you define PI as 3.15, your calculations are going to be off. If you create a function to determine the circumference of a circle as 2 * PI * Diameter, you've got a bug. I suspect that those are the types of errors in logic that you were referring to, and you're right that they will not be caught by a code analysis. However, that doesn't mean that comparing the frequence of the errors that CAN be caught between two programs is an invalid act. From my experience, programmers who make fewer of the former errors also make fewer of the latter. Analyzing catchable errors is a good metric for the frequency of errors in a given source tree, even if all errors aren't caught.

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    8. Re:If you would RTFA... by JamesP · · Score: 0

      That's why there should be lots of comments and blank lines, so the ratio goes down...

      --
      how long until /. fixes commenting on Chrome?
    9. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      All that means is that the "open source" item was not adequately tested, therefore fewer verified defects.

    10. Re:If you would RTFA... by petesmart · · Score: 1

      A little common sense and it's safe to assume commercial is in reference to the price tag! This is of little surprise, as commercial programmers are all to often not made accountable for their work(Yes I know this isn't always, it gets hidden away in millions of other lines, so sloppy code is inevitable. Open source promotes peer review, so when you submit something, there's a bit of pride being put on the table too.

      --
      John, I'm Only Dancing!
    11. Re:If you would RTFA... by Tassach · · Score: 5, Insightful
      No defects != good software.

      A flawless implementation of a crap algorithm is still crap. I don't care if your bubble-sort routine has no memory leaks or buffer overruns; it still scales O(N^2). Likewise, a so-called "database" which does not implement key features like transactions and stored procedures is fundamentally flawed even if there are zero coding errors.

      MySQL may be well-written, but it's still a piece of crap by the standards of any professional DBA.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    12. Re:If you would RTFA... by leviramsey · · Score: 2, Informative

      MySQL does have transactions, and has had them for quite some time. Stored procedures are due in a future version.

    13. Re:If you would RTFA... by Dun+Malg · · Score: 5, Interesting
      they quantified it by dividing verified defects by lines of code.

      Problem with that is that it assumes the same "code density". Granted, it's probably not going to differ by a factor of six, but remember the old question about programmer productivity:
      who's more productive: the coder who solves a given problem with 100 lines of code written in one hour, or the coder who solves it with 10 lines in two hours?

      I mean, simple stuff like doing this:

      bool function(int i);
      main(void)
      {
      int i;
      if(function(++i))
      //blah blah blah
      }
      ...instead of:
      bool function(int i);
      main(void)
      {
      int i;
      bool foo;
      foo = false;
      i++;
      foo = function(i);
      if(foo)
      //blah blah blah

      }

      ...will give you a threefold difference in line count (specifically counting lines in the main() function). Throw in an identical line using malloc in each, both forgetting to free it later, and you've got a "bug density" of .33 for the former, and .14 for the latter. Heck, you could have two un-freed malloc's in the latter an it'd still only be at .25! I'm not saying the study is wrong-- I'd rather have the code out where I can see it, no matter WHAT the "bug density"-- I'm just saying that I wouldn't take any statistic that is derived using "lines of code" as a variable as a serious, hard number.
      --
      If a job's not worth doing, it's not worth doing right.
    14. Re:If you would RTFA... by lewp · · Score: 1, Flamebait

      Congratulations, you're the one millionth person to point out in a Slashdot comment that MySQL is not a full-strength database product.

      Everyone knows this. Everyone understands this. Nobody makes claims to the contrary. It's still horribly useful to lots of people. Let's move on.

      --
      Game... blouses.
    15. Re:If you would RTFA... by Sxooter · · Score: 4, Insightful

      Sorry, but until MySQL has a mode where ALL tables are transaction safe, or at least throws an error when you try to create a fk reference to a non-transaction safe table, it's transactions are too prone to data loss due to human error.

      It's a good data store, but the guys programming it have to "get it" that transactions can't be optional in certain types of databases, and neither can constraints, or fk enforcement.

      MySQL has a tendency of failing to do what you thought it did, and failing to report an error so you know. This is a legacy left over from being a SQL interpreter over ISAM files. It makes MySQL a great choice for content management, but a dangerous choice for transactional systems.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    16. Re:If you would RTFA... by Tassach · · Score: 2, Informative

      Everyone does not know this, and everyone does not understand it, or I wouldn't have spent a substantial percentage of my carreer cleaning up other people's messes.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    17. Re:If you would RTFA... by cayenne8 · · Score: 1
      I can see,however, a use for MySQL with COTS products, like say, PeopleSoft. Many products like this don't even LET you use the tools oracle gives for data integrity...these COTS tools basically just use the database AS a data store.

      In this case...you might as well use MySQL...however, the transactional stuff would still be scary. If they get that all working well...then, I could see use for this with COTS products.

      Me? I think I still prefer PostgreSQL...price is the same, and you get more Oracle like functionality and data safety.

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    18. Re:If you would RTFA... by scrytch · · Score: 4, Informative

      If only it were MySQL just lacking features that would, after much mudslinging at the ideas themselves, be grudgingly retrofitted into a new table type. MySQL's brokenness goes deeper than that.

      MySQL's attitude toward data integrity can be summed up as "if the constraint can't be satisfied, do it half-assed anyway". I find myself having to write application code to manage data integrity with MySQL, something I can take for granted with a real database.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    19. Re:If you would RTFA... by Tassach · · Score: 1

      Great link. I'll have to bookmark it to send to clueless gits who think MySQL is worth using.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    20. Re:If you would RTFA... by Sxooter · · Score: 1

      Yep, I just recommended MySQL to a friend here at work, because it was the best fit for his project. It's a simple data delivery system, i.e. 99.99% static data with updates a few times a day at most. And it needed to run on a Windows Laptop. I also recommended firebird for the same project.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    21. Re:If you would RTFA... by tmark · · Score: 1

      This is such a crappy measure of code 'quality'; if the same company released the same study touting say MS-SQL, no doubt they would be ripped to shreds.

      Finding fewer defects/line of code COULD mean that MySQL just has more lines of code, which given the same end could be construed as meaning the code is WORSE.

      Also, it should be obvious that comparing ONE prominent open-source project's defect rates with a veritable spectrum (over 200) of commercial project's rates is unfair. What is the lowest defect rate of the commercial projects surveyed ? Why not hold MySQL to THAT standard ?

    22. Re:If you would RTFA... by sethamin · · Score: 1

      Well, isn't that just the problem? You're speaking from your experience to make that connection, but not from any systematic evidence. That does not make this a good metric unless you can prove its a good metric. And personally, I would say that it's not a good metric; it does not account for bad design, for one. For another thing if you already have a flow analysis tool like the ones this study used than you will catch all these errors; does this imply that you code has no larger algorithmic mistakes? Undoubtedly not.

    23. Re:If you would RTFA... by jc42 · · Score: 3, Insightful

      ...they quantified it by dividing verified defects by lines of code.

      If I write a script to go through my C and perl code, and make sure that there's a newline before and after every brace, that will approximately double the lines of code, and will thus cut my error rate in half.

      This isn't a joke; I've done this on a couple of projects where they measured output by lines of code, just to illustrate the real impact of such measures.

      OTOH, if I deleted the comments from my code, that would approximately double my error rate, so I guess I won't do that.

      I'm also reminded of a project that I worked on a while back in which nearly every routine had some sort of error, sometimes several, and I didn't fix any of them. This would look really bad, I know. But you can probably guess what my task was. I was writing a test suite for a compiler. Most of the tests were to verify that the compiler would catch a particular kind of error. So of course my code contained that error, and the test script verified that the result was the proper error message.

      This is one of the fundamental problems with nearly every definition I've ever seen of "quality code". They usually don't measure the suitability of the code for the task. If your task is to measure a system's response to failures, you code will of course intentionally produce those errors in order to determine the system's responses. So what is an error in other situations is exactly correct code. Counting errors detected without asking what the task was gives you exactly the wrong results in such a case.

      I'm not sure I'd want my name associated with a project that didn't include this sort of test code in the basic distribution. If there are problems with an installation, I want to know about them before the users start using the stuff. And I want to know in a manner that will pinpoint the problems, not from the usual bug report that typically describes some symptom that is only remotely related to the actual problem. So nearly everything that I work on has a component with a high error rate, run under the control of a script that verifies the correctness of thee error messages. If the installation doesn't handle the errors correctly, the users are given output that will tell me what the problem is.

      I'd only be impressed by a study that handles such a test suite correctly. One that counts such "errors" is worse than useless; it actively discourages useful test suites.

      (Actually, just before reading this /. article, the task I was working on was adding some more tests to a test suite for a package that I'm porting to a number of different systems.)

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    24. Re:If you would RTFA... by jc42 · · Score: 2, Informative

      Yeah, and we might also add that in some circumstances, a bubble sort is a very good way to sort data. There's a lot of data around that is normally sorted into just one (usually time) order, and which is also produced in an order very close to that. For such data, "efficient" sorts are usually very inefficient, and a bubble sort can beat them easily.

      Most theoretical work on sorting has assumed randomly-sorted input data. That's an important case, sure. But there are many situations where it's not a valid assumption. And a sort that's good on random data is not necessarily very good on non-random data.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    25. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      >(Their use of the term "commercial" confused me
      >since MySQL is, after all, a "commercial" project,
      >just an open-source one.)

      Stallman would say the proper term would be "proprietary." Of course, lots of people don't like that term because it can be as misleading and inaccurate as "commercial." "Closed-source" would work, but that implies "Open Source" as the opposite, and there we get into trouble with Stallman again.

      It's sad that the community can't agree on terms because it makes us look even more fractured than we actually are. It's also bad from a marketing standpoint; we need clear, agreed upon terminology in order to present a consistent message. There's no agreement on what to call the community, the products, the competition, or even the operating system.

      Not really a big deal, but it does mean that we're going to see terms like "commercial" used in this way, and should not be surprised it.

    26. Re:If you would RTFA... by neelm · · Score: 3, Interesting

      So what you are saying is you would rather have your DB crash over not supporting some feature in a way which is only applicable in select situations?

      As a real world programmer (versus someone living in an academic world of theory) I prefer the what-I-have-works-and-I'm-Working-on-the-rest approach. In the real world, stability and performance are paramount to feature set. Also, when you consider the domain of creating web driven applications, some features of a DB become less important because the stateless nature of a http connection. Server-side cursors don't do well in a cookie.

      > MySQL may be well-written, but it's still a piece of crap by the standards of any professional DBA.

      Which is why I give little attention to certifications.

    27. Re:If you would RTFA... by Greyfox · · Score: 3, Insightful
      According to the article (You DID read the article right?) they found (in the mysql code) 15 null pointer dereferences, 3 memory leaks and 3 usages of uninitialized variables. Apparently they look for comparable defects in commercial code and I think everyone who programs will agree that those are fairly major defects.

      The code scanners I've looked at will flag potential errors even if it's impossible to reach the error condition in code, so it's possible that some or all of that stuff may never have actually happened, but it's generally better to program defensively anyway. All it takes is for some bozo to change your if condition and all of a sudden you're segving all over your customer's important data. 15 null pointer derefences in nearly a quarter million lines of code is a pretty low number though. I've seen more than that in a single thousand line file written by "professionals."

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    28. Re:If you would RTFA... by Greyfox · · Score: 3, Insightful
      Yeah, and the 3 users on the planet who actually need a full fledged SQL database can install Oracle or DB2. Although I've had my indexes corrupted and other horrible things with both those database packages.

      I've worked on several projects interacting with SQL databases and I've only seen one really take advantage of the power of the database. Most of them are using Oracle as a glorified DBASE III, and as a glorified DBASE III, MySQL is much less expensive. And I've seen entire companies built around DBASE III applications.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    29. Re:If you would RTFA... by frostman · · Score: 2, Interesting

      A funny thing to add to this...

      I'm doing my first MySQL work (done a lot of Oracle and a little PostgreSQL) and I was *flabbergasted* when I realized that, when you update a table but the data has not actually changed, you get success and zero rows updated.

      Which is exactly what you get (and should get) when you try to update and no rows are found to update.

      I suppose with no triggers anyway, it might be a tiny bit faster to skip the actual update when the data hasn't changed, but to real DB folks this is not only counter-intuitive, it's *scary*.

      'Course this is 3.23, maybe they changed that in 4. I read that they added booleans in 4... though just as an alias for ItsyBitsyInt.

      MySQL is fast and free and there is a lot of community support for beginners. And if you have oodles of RAM, the HEAP tables are a sweet thing indeed. As such it's good. But I sure hope nobody ever makes me use it for anything mission-critical... and I fear for people using this as an "enterprise" DB.

      (donning flame-proof suit...)

      --

      This Like That - fun with words!

    30. Re:If you would RTFA... by cayenne8 · · Score: 1
      "I also recommended firebird for the same project."

      You've used Firebird? I'm curious, what did you think about it? What level of a DB do you think it is...is it closer to MySQL or PostgreSQL? I'd like to hear some opinions and descriptions from those out there that have actually used it.

      I'm planning on downloading and playing with it when I get some time...but, until then, I'd be interested in hearing others' opinions on Firebird...

      cayenne

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    31. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      > Everyone knows this. Everyone understands this. Nobody makes claims to the contrary. It's still horribly useful to lots of people. Let's move on.

      When the slashbots shut up about Access, perhaps?

    32. Re:If you would RTFA... by bfree · · Score: 1

      If you want a MySQL implementation where ALL tables are transaction safe then simply recompile it with only support for transaction safe tables? Am I missing something here? Yes you lose out on any enhancements of the other table types, but that's your choice! You probably don't even need to recompile it, or if you do perhaps MySQL could add the option to only use transaction safe table types (perhaps on a per database level).

      --

      Never underestimate the dark side of the Source

    33. Re:If you would RTFA... by prockcore · · Score: 1

      The fact that you used big O notation and referenced a bubble sort tells me you're still in school.

      The fact that you think that MySQL doesn't support transations tells me you haven't used it in a while.

    34. Re:If you would RTFA... by kerrbear · · Score: 1
      The specific errors in MySQL were dereferencing null pointers, failure to deallocate memory (memory leaks), and use an uninitialized variable. These aren't the only bugs that such an analysis can find; they're the ones that were found in MySQL. And they're definitely errors in logic.

      I wonder how they found these errors. If the process is not too difficult or expensive, perhaps it should be made into a process for cleaning up code. Does anyone know if they had some kind of automated means for checking the code, or did they just get a bunch of experts to go over the code line by line?

    35. Re:If you would RTFA... by Zeriel · · Score: 1

      Except that beyond a certain fairly minimal point, it becomes nigh-impossible to make lines much longer without intruducing complex syntax and a host of new problems, including code legibility and bugs.

      In other words, I sincerely doubt that there is much absolute difference in line lengths in ANY program outside of a few edge cases--I'd guess that something like 90% of all lines of code have between 0-80 characters.

      --
      "America has done some terrible things. But I know that Americans don't cheer when innocents die." -Dave Barry
    36. Re:If you would RTFA... by a_ghostwheel · · Score: 3, Informative

      Wrong. Insertion sort (linear or binary) will be efficient way to sort "almost-sorted" data. Plus, commenting phrase "efficient sorts are usually very inefficient" - you have to realize (if you dont know this) - sort algorithms are classified into stable ones (e.g. merge sort) and non-stable (e.g. quick sort).

      Stable algorithms have identical efficiency no matter what kind of order input data had. Non-stable algorithms have predefined best and worst cases.

      But, overall - you will not be able to come up with the data where bubble sort will be best way to sort - usually you will end up using merge or quick sort for large data sets and insertion sort for small data set (some quick-sort implementations use insertion sort during last stages of sorting - when data has been "almost" sorted).

    37. Re:If you would RTFA... by Tassach · · Score: 3, Informative
      Most theoretical work on sorting has assumed randomly-sorted input data
      Bullshit. Every textbook comparison of sort algorithm I've ever seen assumes three cases: nearly-sorted data, random data, and inverse-sorted data. Even if bubblesort were the fastest for nearly-sorted data (Working from memory, I'm pretty sure it would run in O(n) as it's best case), it's still O(n^2) for the other two cases. Quicksort, heapsort, and insertion sort all scale differently; but even assuming their best-case performance is worse than bubblesort's best-case, their worst-case performance is FAR better - typically O(n log(n)) or thereabouts. IIRC, The AWK Programming Language has some excellent sample code which graphs the performance of the major sorting algorithms for different kinds of input.

      I seem to recall that insertion sort is also O(n) on nearly-sorted input, so it would be a much safer choice than bubblesort for the situation you describe. You have to consider best- and worse- case scenerios as well as the nominal path. IMHO, bubble sort has no place outside of an instructional setting.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    38. Re:If you would RTFA... by Minna+Kirai · · Score: 1

      bubble sort can beat them easily.

      Even in the excruciatingly rare case where bubble sort beats an overall superior one, you can just pull out shell sort to beat bubble.

    39. Re:If you would RTFA... by geoffspear · · Score: 1
      gcc -Wall?

      Ok, that won't generally find memory leaks, but it will warn when you use uninitialized variables and dereference null pointers.

      --
      Don't blame me; I'm never given mod points.
    40. Re:If you would RTFA... by theonetruekeebler · · Score: 1
      That, and you're referencing an unitialized variable in both.

      Granted, the tigher code gets a higher defects/KLoC quotient. Consequently, though, fixing a single defect reduces the quotient by a larger amount. So repairing tight code affects your defect metric more dramatically. On the other hand, if the probability of a defect occurring is a function of the number of lines of code, the more verbose code does tend to pick up defects for free.

      Aside from the false measure of programmer productivity, the more verbose code does have a couple of advantages. For example, it is easier to modify it to reuse the return value of function() above.

      On the third hand, buggy is buggy. If your software has 23 code defects, it has at least 23 things that need to be fixed, and it doesn't matter how many lines those 23 defects are spread over.

      --
      This is not my sandwich.
    41. Re:If you would RTFA... by Tassach · · Score: 2, Insightful
      The fact that you used big O notation and referenced a bubble sort tells me you're still in school.
      Considering that I've been out of school and working as a software engineer for over 15 years, I'd say you have much to learn. As long as we're in ad-hominim mode, your comment leads me to believe that you are suffering from some combination of arrogance, ignorance, inexperience, and unprofessionalism; but that's besides the point.

      I find mathmatical notation to be clearer and more succinct than the longhand equivilent. "O(n)" is, IMHO, a superior way of saying "scales linearly". All of the really good engineers I've worked with over the years have held the same opinion.

      As to not having used MySQL in a long time, that's true. I don't use MySQL because I see no purpose for it. If I need a fast non-relational, non-transactional data store I'll use an ISAM solution. If I need a real relational database I'll use Sybase or Oracle (or MS-SQL if I have no choice, or even PostgreSQL if I have to make an open-source zealot happy). The only time I'd use MySQL was if I needed a semi-relational database with half-assed transactions, no stored procedures or triggers, broken referential integrity, a plethora of non-standard behaviors, and rampant data integrity issues.

      If MySQL had stuck to it's original vision of being a SQL frontend to an ISAM database, it might actually be worthwhile. Instead it's become a bastard hybrid that's too bloated to be a good ISAM db and too broken to be a good relational db. I'll admit that there are jobs that MySQL can do well -- however, my professional opinion is that there are better tools for that class of tasks.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    42. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      I am *flabbergasted* that somebody could be *flabbergasted* about anything in a little open source toy database...

    43. Re:If you would RTFA... by B'Trey · · Score: 2, Informative

      Well, actually, I'm not speaking only from my experience. I'm also speaking from a number of other published articles and reports. Rational has a few out concerning Purify. Reasoning (who did the MySQL study) has a couple out as well. There have also been independent studies which confirm the (possibly biased) findings of the companies who write the software analysis suites. If you're really interested in the subject, Google is your friend.

      There are no guarantees, in this business or any other. But in general, people who are meticulous in their coding tend to be meticuous in all areas. If they bother to run software analysis tools and correct the bugs there, they usually bother to spend time evaluating the design and looking for bugs there as well. They also tend to test their code once written, which helps to identify those errors in coding logic that a software analysis suite can't find.

      And regardless of whether or not an unitialized pointer is an easy bug to find or not, if it exists in the code it's still likely to cause an application crash. Would you rather run code which has one of those type errors every seventeen hundred lines, or code which has one every eleven thousand one hundred lines?

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    44. Re:If you would RTFA... by afidel · · Score: 1

      My guess is they ran a tool like Rational Purify against the source. Purify is the best of breed memory leak and runtime error detection tool, but there are others including some open source tools. If Purify wasn't so expensive I would say that all open source projects should have a regular audit with it since it really gets rid of a lot of the stupid errors that are the norm in any large software project.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    45. Re:If you would RTFA... by satanami69 · · Score: 1

      MySQL is perfect to use if all you want to do is use the features in MySQL.

      If you want to use features that MySQL doesn't have, then you won't be able to use MySQL.

      --
      I really hate Dan Patrick.
    46. Re:If you would RTFA... by Tassach · · Score: 1
      transactions and stored procedures aren't necessary
      I guess you think data corruption and SQL injection attacks are above your concern.

      I for one will be laughing my ass off when that day arrives
      I know I'm feeding a troll... but...

      More likely, I will be the one laughing (all the way to the bank) when I get the contract to fix the half-assed, fucked-up mess that some arrogant snot-nosed punk who thought he knew everything left behind after he got his ass fired.

      Please, go ahead and keep using MySQL. Keep refusing to learn *WHY* people who have been developing databases since before you were potty-trained insist that transactions and stored procedures are essential. The arrogance and ignorance of people like you is creating business opportunities for people like me.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    47. Re:If you would RTFA... by autopr0n · · Score: 1

      The specific errors in MySQL were dereferencing null pointers, failure to deallocate memory (memory leaks), and use an uninitialized variable. These aren't the only bugs that such an analysis can find; they're the ones that were found in MySQL. And they're definitely errors in logic.

      And none of those can happen in Java, either. So by their mesure all java code should be 'perfict' :P

      I love java and all, but I don't think it's that great :)

      --
      autopr0n is like, down and stuff.
    48. Re:If you would RTFA... by Tassach · · Score: 1

      If you had read the link in the grandparent post, you'd see that's not true -- The point was that not only does MySQL just lack features, many of the features that it DOES implement are done wrong.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    49. Re:If you would RTFA... by Xtifr · · Score: 1

      Problem with that is that it assumes the same "code density".

      Strictly speaking, yes. Of course, while that might mean that MySQL was rated too highly (if it had a lower code density), it might also mean that MySQL's quality was underrated! (If it had a higher code density). Of course, since MySQL is free/libre/open sores, it can be examined to determine whether the former or latter is more probable.

      I will point out, though, that the findings are reasonably consistent with a more emperical test, the University of Wisconsin's fuzz tests, which stress-tested standard Unix utilities on several systems, including GNU, and found that the GNU code was much more solid and robust overall.

      I'm just saying that I wouldn't take any statistic that is derived using "lines of code" as a variable as a serious, hard number.

      Absolutely not. On the other hand, it's somewhat suggestive. And a error rate six times higher is hard to explain purely as a matter of code density. Or much of anything else, for that matter. And it's consistent with other studies. But I agree that anything which mentions "lines of code" should be taken with a huge grain of salt.

    50. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      > send to clueless gits

      I think you just qualified yourself as a clueless git. That is, if you actually read and understood page that was linked to. Except for lack of warning when inserting invalid integers that are too small or too large, none of their points were valid. Did you even read the damn page? If you did, it appears you didn't know enough to understand it.

    51. Re:If you would RTFA... by Anonymous Coward · · Score: 1, Informative

      > MySQL's brokenness goes deeper than that.

      Nice troll. Those morons claim, among other things, that MySQL is broken because if you define an integer as "NOT NULL" that because MySQL doesn't automatically assume the integer should be NULL, it is a bug. WTF? It's doing exactly what you ask. If you define a column as "NOT NULL," it should never contain a NULL. According to their claim, columns that are defined as NOT NULL should contain a NULL by default! Just because their favorite database contains that bug doesn't mean MySQL should also be broken.

      It also claims that it's a bug that you can refer to enums using the integer index just as you can with associative arrays in many programming languages. Well, duh. That's a feature. They make some unbelievable wild-claims with regard to this feature.

      Those idiots also claim that LENGTH() in MySQL is broken because it ... wait for it ... returns the length of a string! Apparently the database they're used to doesn't have a working LENGTH() function so they think MySQL should return the length of the table's field rather than the length of the data in the field.

      The only valid points they had was the lack of an error when you use invalid integers in an insert or update and the lack of warning when you try to use transactions with tables that don't support them.

      Better luck next time with your troll.

    52. Re:If you would RTFA... by cfuse · · Score: 1
      "Defect" is also a difficult term to define.

      One man's defect is another man's feature - just look at that damn paper clip.

    53. Re:If you would RTFA... by scrytch · · Score: 1

      Nice troll. Those morons claim, among other things, that MySQL is broken because if you define an integer as "NOT NULL" that because MySQL doesn't automatically assume the integer should be NULL, it is a bug. WTF

      Let me 'splain something real clear. When a column says NOT NULL, and you attempt to explicitly insert a NULL, that's an error in a real database. In MySQL land, it says "oh you really meant zero/empty string". MySQL puts a default in every column, whether you specified one or not. When I say NOT NULL, I mean NOT NULL, not "convert all NULLS to something else".

      I suppose I could try NOT NULL DEFAULT NULL ... that sort of construct invites some comment even I might construe as a troll though...

      And that's just one of the multitude of data integrity problems MySQL has. Undefined behavior if your autoincrement columns overflow. Feel free to use your stunning rhetorical technique to address the other problems addressed on the site.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    54. Re:If you would RTFA... by Anonymous Coward · · Score: 0
      The length of any CHAR(4) NOT NULL field should always be 4, no matter what you store in a record. If you don't want values padded out to the correct length with spaces, you should be using VARCHAR.

      MySQL is also egregiously wrong to allow DROP TABLE to violate referential integrity, and in general to silently accept instructions it has no way to execute.

    55. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      I don't expect my database to "crash", I expect it to warn me if something I ask for isn't going to happen! Nobody would use a filesystem that silently ignores writes when it's full; I don't understand why this database isn't held to a similar standard.

    56. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      Uh, does java.lang.NullPointerException ring any bells?

    57. Re:If you would RTFA... by Trejkaz · · Score: 1

      The style checker would have a field day on your code for the lack of indenting, too.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    58. Re:If you would RTFA... by eloki · · Score: 3, Insightful

      A flawless implementation of a crap algorithm is still crap.

      No.. a flawless implementation of a crap algorithm just doesn't scale well. Of course bug rate is not the only criteria used when evaluating software, but people spend hundreds of man-hours fixing bugs.

      It demonstrates that the quality of open source code is not automatically worse than professional proprietary code (which some people believe is the case). The important thing is that it's at least an attempt at formal study (and not simply personal collating of anecdotal reports).

    59. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      Spoken like a true arrogant elitist. "Oh, it's not THE best, it's a toy". Typical attitude of people who don't really know what they're doing, and have just been spoon fed shit throughout their careers. Like most "audiophiles".

    60. Re:If you would RTFA... by Sxooter · · Score: 2, Informative

      Firebird is closer to Postgresql in capabilities, and closer to MySQL in terms of size (Postgresql is friggin huge, and sucks up disk space quickly, so it's a bad choice for embedded db applications with limited space unless you're willing to do a lot of hacking to make it "lose weight").

      It felt a lot like postgresql to me. I didn't do anything fancy like writing a stored proc or a trigger or something like I've done in Postgresql.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    61. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      "MySQL may be well-written, but it's still a piece of crap by the standards of any professional DBA."

      I see you've been trying to cut 2x4's with a hammer again. Learn to use tools for the purpose for which they are intended. mySQL is an excellent solution for many problems, although it's not the solution for all. mySQL may lack some features you would like to see for some projects, however, it remains exceedingly fast and stable for many other projects. If you want complex transaction management, use something else. I'm not sure if you've noticed, but the days of overpriced overkill solutions is far behind us.

    62. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      Understand the limitations of the tool you choose to work with and live with it or use a different tool. Nobodies forcing you to use any specific tool.

    63. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      This is a stupid meassurement...increase your comments and blank lnes and your bugs/kloc drops dramatically... dont these idiots have anything better to do?

    64. Re:If you would RTFA... by Dun+Malg · · Score: 1
      The style checker would have a field day on your code for the lack of indenting, too.

      Heh, yeah, that's /.'s fault. I had it nicely indented, but /. stripped off my leading spaces. Bastards.

      --
      If a job's not worth doing, it's not worth doing right.
    65. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      "I guess you think data corruption and SQL injection attacks are above your concern"

      I guess you think overpaying for Oracle for stored procedures and triggers is the only way to solve this problem. Way to ignore other effective design and security principles.

      I'll be laughing all the way to the bank as I continuously get the contracts you can't afford to bid on because your costs are too high - and my solutions tend to just keep running and running and running. Unless all you do is design enormous solutions for Fortune 500 companies, in which case you are welcome to them.

    66. Re:If you would RTFA... by evilWurst · · Score: 1

      "It doesn't sound like it could find a defect in an algorithm implementation or logic. To me, these are where the true defects are, in the logic/reasoning breakdowns."

      Indeed, doing so is supposed to be impossible. Testing the outputs of every possible input isn't feasible (and would require you to have a perfect working version of the program with which to test the output against, unless you want to do all the work by hand...).

      We even have a term for automated bug checking - "the halting problem". To paraphrase, we can't programatically check for bugs that will make the program crash, because to do so we'd have to run the program, which would make it crash.

    67. Re:If you would RTFA... by Trejkaz · · Score: 1
      if (slashdot.mangles(indenting)) {
      if (exists(blockquote)) {
      use(blockquote);
      } else {
      get(teased);
      }
      }
      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    68. Re:If you would RTFA... by Tassach · · Score: 1
      I'd never advise anyone to use Oracle unless they already have a substantial investment in it. Oracle is overpriced and a total bitch to administer. I usually try to convince people to use one of the Sybase databases. For the budget-concious, there's 11.0.3.3 for Linux, which is free of charge for any use. It's a little dated when compared to the newer releases, but it has all the necessary functionality and is totally rock-solid. There's no point in using a hacked-up toy when can get a real enterprise grade database for free.

      If you don't mind spending a couple of hundred dollars and don't have a competent DBA on staff, I tell people to use Sybase SQL Anywhere. SQL Anywhere is what MySQL and Postgres wish they were -- ultra-portable, ultra-scalable, and simple to administer. It's not free, but it's still dramatically cheaper than Oracle, DB2, or MS-SQL.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    69. Re:If you would RTFA... by Dun+Malg · · Score: 1
      if (slashdot.mangles(indenting)) { if (exists(blockquote)) { use(blockquote); } else { get(teased); } }

      if((I.lazy == true) && (Length("[BLOCKQUOTE]") > I.laziness))
      {

      forget(it);
      hit(submit);

      }

      I "forgot" to mention that part. ;)

      --
      If a job's not worth doing, it's not worth doing right.
    70. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      It's not quite like when you measure algorithms in big O noatation. (like O(log n) or O nlogn or O n squared.... (and the ploynomial time and non-deterministic polynomial complete time space problems). But a bug is a bug. Syntax errors are a bother. Logic errors much more serious. Buffer overflows are a security nightmare. Like Shannon measuring bit error rates, it should be possible to come up with definitions and come up with software quality standards based on the sum of all error values where each error value is the product of the number of a type of error and a predetermined value for the severity of that type of error. The reliability quality would then be the sum of the error values divided by the number of bytes in the program. Of course, this says nothing about the quality of algorithms used in the program (which brings us back to big O noation and the runtime performance of each code segment/subroutine/algorithm).

    71. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      He said Professional DBA... hehe

    72. Re:If you would RTFA... by jadavis · · Score: 1

      What's the per-row overhead of firebird?

      For postgres, I think it's 32 bytes.

      I think postgresql may have a larger footprint, and a larger executable, but I don't know how much lower than 32 bytes of overhead you can go. I haven't heard before that it eats up disk space quickly. And I've certainly never heard postgresql described as "Friggin' huge" when compared to mysql or firebird.

      Can you give some numbers?

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    73. Re:If you would RTFA... by rifter · · Score: 1

      "Defect" is also a difficult term to define. Some errors are much worse than others. It's not all about numbers, folks. Don't get me wrong, I'm not saying that MySQL isn't a great product. I just get skeptical when I hear things talked about in terms of "better" and "best."

      Defect was also defined in the article.

      It is difficult to quantify these things, true. BUt if you clearly define your terms and domain it is possible to get data. In this case they defined a set of common programming mistakes as defects and then compared the corpus of corporate closed source code they had reviewed to the MySQL code and found the number of defects per thousand lines was 6 times less.

      Of course, this does not speak to design quality or the presence of mistakes which are harder to find than those for which they tested.

    74. Re:If you would RTFA... by rifter · · Score: 2, Insightful

      Understand the limitations of the tool you choose to work with and live with it or use a different tool. Nobodies forcing you to use any specific tool.

      No, but somebody is trumpeting the lory of that tool as end-all-be-all, while simply ignoring the points of people who dare to break rank, spurn the kool-aid, and point out flaws. I swear every damn slashdot article about open source tools has some thread like this. And every time we get some version of "love it or leave it." What happened to actually trying to improve on the basis of valid criticism?

      The article and the posts following it seem to promote MySQL as a production database to compete with Oracle. It is clear that while it is a nice database with good features and is useful for many projects, it lacks many things which DBAs like about RDBMS systems like Oracle. It is also clear that if any of the posts here and linked articles accurately describe MySQL behaviour it violates some very basic rules of software design.

    75. Re:If you would RTFA... by B'Trey · · Score: 1

      Java prevents you from making certain types of errors, yes. It does this by limiting your ability to perform certain kinds of tasks, and by taking over management of those tasks itself. There are cons to this approach as well as the pros of reducing certain types of bugs. (Asking which approach is "better" and which is "worse" is really rather meaningless, and depends a great deal on the particulars of the project in question.) Still, Java certainly doesn't prevent you from making errors, and there are a great many programming bugs that a code analysis can find in Java. Java code is by no means inherently "perfect."

      Additionally, it's almost always invalid to compare this type of metric across language boundries. You can only compare the error rate of Java code to other Java code, not to C code or Pascal or any other language.

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    76. Re:If you would RTFA... by Sxooter · · Score: 1

      Postgresql doesn't have a high overhead for each row, it just uses up a bunch of space for things like write ahead logs and the default catalog.

      I.e. a default install of 7.3.x will have a 7Meg base directory and a 16 Meg pg_xlog directory before any data has been added. So, while that's nothing to a modern computer with a gigabyte plus size hard drive, it's quite a large amount for an embedded device with a 128 Meg stick in it.

      From that perspective, postgresql's data storage usage is friggin' huge.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    77. Re:If you would RTFA... by Anonymous Coward · · Score: 0

      Sub-queries and triggers are very usefull. If you're not taking advantage of them, you usually make things harder for yourself.

    78. Re:If you would RTFA... by leandrod · · Score: 1
      > a flawless implementation of a crap algorithm just doesn't scale well

      If you assume the problem is the efficiency of the algorithm, but it still treats input as well as to produce correct output. MySQL in the other hand is just bad design, with lotsa gotchas both in SQL compliance and DBMS functionality.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
  10. Clearly biased! by unborn · · Score: 2, Funny

    This article must have been written by supporters of closed software. The ratio of 0.57/0.09 is 6.333~ and the article states it is 6. Clearly FUD. Let the flaming begin!

  11. On paper it looks better by the+real+darkskye · · Score: 3, Insightful

    And line of code for line of code there are less known errors in MySQL than there are assumed/predicted/mean errors in their commercial counterparts, but that doesn't answer the question of how does MySQL compare performance-wise to Oracle or <flameretardent coating>MS SQL 2003</flameretardent coating>

    Just my 0.03 (adjusted for inflation)

    --
    Music is everybody's possession.
    It's only publishers who think that people own it.
    Fuck Beta
    ~John Lenno
    1. Re:On paper it looks better by ebuck · · Score: 1

      Dude, I read that as a "flame-retarded coating", which only adds to the irony.

      I think a wet donkey in a vat of Jello with post-it notes attached to it's back has better performance than the MS SQL servers of old that I encountered, but to be fair, I haven't seen the 2003 version.

    2. Re:On paper it looks better by Tassach · · Score: 1
      That's like asking how a little red wagon compares to a Formula 1 racecar -- there is simply no comparison. The list of missing features in MySQL could fill a book. MySQL is not a true relational database, so comparing it to Oracle, Sybase, DB2, or MS-SQL is like comparing apples and very small rocks. They're not the same thing at all.

      It would be more accurate to compare MySQL to dbaseIII, Berkely DB, or Microsoft Access. Against those products, MySQL compares favorably. MySQL performs well for tasks in a narrowly-constrained domain of problems, and is totally incapable of dealing with anything else.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    3. Re:On paper it looks better by schovanec · · Score: 1

      Good point, but then MS Access has (always had?) foreign keys and transactions and other relational things. Of course, if you look at it cross-eyed it will still hose your data.

    4. Re:On paper it looks better by Tassach · · Score: 2, Interesting
      Access has foreign keys, but unless they added it in the latest version, it does not support real transactions. Add to that the fact that it's locking model is fundamentally broken, you have something which is just powerful enough to let you do things with it that you shouldn't. MySQL suffers from the exact same problem.

      I shouldn't complain -- I've made a lot of money over the years cleaning up the messes left by inexperienced people who thought Access or MySQL were real databases.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    5. Re:On paper it looks better by schovanec · · Score: 1

      Agreed. I've seen more than enough access "database" projects that scared me. In one case, the people who were tasked with producing reports were also tasked with gathering and maintaining the data for the reports (I can only wonder at how much duplication there was, but that's another issue). These people, being generally non-programmers were not trusted to use the oracle or mssql servers that were avaliable (i'm sure at least one of each was avaiable at this particular place), so they had constructed various multi-user Access databases, sometimes with the data file hosted on the creator's workstation. A yellow post-it makes on the monitor makes for a very reliable data server.... but I digress.

    6. Re:On paper it looks better by You're+All+Wrong · · Score: 1

      Have you ever seen wet donkeys join?
      It's gross.

      YAW.

      --
      Your head of state is a corrupt weasel, I hope you're happy.
    7. Re:On paper it looks better by Anonymous Coward · · Score: 0

      "I shouldn't complain -- I've made a lot of money over the years cleaning up the messes left by inexperienced people who thought Access or MySQL were real databases."

      Holy crap! I have had the exact same experience making piles of money cleaning up after inexperienced Oracle and most especially MS SQL developers. Of course, there's always a good buck to be made cleaning up after Access programmers. Or anyone else for that matter that doesn't know what they are doing.

      Of course, this couldn't a comment on the PROGRAMMERS that screwed up, could it? It really must mean that all these database systems are inherently flawed. Let's all throw up our hands in frustration - there isn't a single rdbms out there that hasn't had a flawed implementation. The tools must be flawed!

      Once again you try to blame the tool. Repeat after me: every tool has it's use, a good craftsman knows which tool to use for each job. A hammer is not a saw. A sledgehammer is not a finishing hammer.

  12. Re:"6 times better" by dcordeiro · · Score: 4, Insightful

    I agree with you that you can't simply measure quality but...
    If you just RTFA, you'll see that is not "6 times better" but "6 times less bugs found then the average on commercial products"

    The only thing wrong in the article:
    They should replace the term "commercial" with "closed source", because Mysql is also a commercial product and what makes it different is the open source model.

  13. Lines of Code? by ksa122 · · Score: 3, Interesting
    Reasoning performed its independent analysis using defect density as a prime quality indicator. Defined as the number of defects found per thousand lines of code, MySQL's defect density registered as 0.09 defects per thousand lines of source code.
    Can any measurement that uses lines of code to compare code that could be written in different languages or for different types of applications be very accurate?
    1. Re:Lines of Code? by nojomofo · · Score: 4, Insightful

      I'm under the impression that most "bugs" in software (certainly most bugs in my code) aren't bugs like these in the article (null dereferences, uninitialized variables, etc), but they're algorithm bugs. As in, there's a subtle interplay between different parts of complicated algorithms that can be easy for programmers to miss. Those types of bugs are going to be much harder to find, and certainly not going to be found in analysis such as this one.

    2. Re:Lines of Code? by kpharmer · · Score: 1

      > I'm under the impression that most "bugs" in software (certainly most bugs in my code) aren't bugs like these in the article
      > (null dereferences, uninitialized variables, etc), but they're algorithm bugs.

      Nah, they're bugs in requirements gathering. *Way* harder to find and fix.

      In this case a few are obvious - and point to the functional gaps in this product. Once they fix them I'll look forward to using the product.

  14. All that's missing ... by JSkills · · Score: 4, Interesting
    All that's missing - to go along with the defects per lines of code comparision - is a comparison of features and performance benchmarking to other commercially built database products. Now that would be the complete comparison.

    As strong proponent of MySQL, I'd be very curious to see how it stacks up in those regards.

    1. Re:All that's missing ... by Anonymous Coward · · Score: 1

      Stack it up against Oracle and MySQL looks like a steaming sack of manure. Once MySQL has something even remotely approaching rman, I'll take another look at it, thanks.

      Anyway, how did these people get their hands on the Oracle source code anyway?? Oh they didn't?? Then this whole thing is pure horse crap then?? I see, just another opportunity for slashdotters to start another circle-jerk...

    2. Re:All that's missing ... by _fuzz_ · · Score: 1

      My thoughts exactly. Maybe commercial DBMSs have a higher "defect density" because they spend more time adding features than rewriting existing code until it's perfect. In the commercial world, there's such a thing as "good enough" but that doesn't really translate well over to open source. In open source, good enough is whenever the author doesn't want to work on it anymore. I've been there on both sides.

      --
      47% of all statistics are made up on the spot.
    3. Re:All that's missing ... by Anonymous Coward · · Score: 0

      Probably because in the commercial world, you can document the bug, or how the function works and the gotchas for it. In the Open Source world, documentation comes last in almost every project I've seen. Especially MySQL, where they only OCCASIONALLY remember to note which version a particular documentation page applies to.

    4. Re:All that's missing ... by Anonymous Coward · · Score: 0

      So if you are a "strong proponent of mysql", how do you believe that the world becomes a better place by support MySQL instead of PostgreSQL? (I'm working with mysql daily now, and have been with PostgreSQL in the past, and I've ended up a much more definite PostgreSQL fan after working with mysql again...)

    5. Re:All that's missing ... by JSkills · · Score: 1
      I didn't claim supporting MySQL over Postgres (or anything else for that matter) will "make the world a better place". I have had a surprisingly good experience with using MySQL for some decent sized applications. I've also used Oracle extensively and although it's clearly superior in most respects, there is a giant price tag associated with that.

      And next time, you might want to try to learn to read and speak English properly before arbitrarily deciding that I'm pissing on your database of choice troll boy.

    6. Re:All that's missing ... by Anonymous Coward · · Score: 0

      "Stack it up against Oracle and MySQL looks like a steaming sack of manure."

      Till you compare the FUCKING PRICE. Christ, some people are dense. Of course nobody's going to use this for a national telco's billing database, but shit, do you NEED some high-priced, high-powered Oracle solution for a small business' website?

  15. Re:"6 times better" by DocTee · · Score: 1

    listen to "Stay Away From The Guy With The Funny Eyes" by DJ Bob Hoskins Going Mental In A Dustbin before you go to bed, and clinical psychology tells us that when you wake up in the morning, you will be 17.3% safer.

    --
    - doctea
  16. Stanford Checker by eddy · · Score: 4, Interesting

    Anyone know how this one is faring? Will it ever be released? It's based on GCC, right? How many students can it pass between until it's "distribution"?

    The reason I'm asking is because I saw that one member of the team has jumped over to a company called Coverity where one can read:

    Originally developed by a team of researchers in the Computer Systems Lab at Stanford University, Coverity's patent-pending source code analysis technology successfully detected over 2000 bugs in Linux including hundreds of security holes.

    I just think it'd be horrible if they used the GPL'ed GCC to develop their methods (having access to a full portable compiler onto which to do research and development is hardly a "small thing"), and then lock these same methods away from the community.

    I'm grateful for their work on checking linux, but really... this smells bad, IMHO.

    (If you don't know what I'm taking about, don't assume it's off-topic, okay? The Standford Checker is a related topic to the Reasoning analysis of MySQL, and I'm not sure we'll ever have a _better_ fitting topic to discuss this)

    --
    Belief is the currency of delusion.
    1. Re:Stanford Checker by zangdesign · · Score: 1

      Well, considering that there's nothing that prevents one from using GCC to create commercial software, this is probably a non-issue. The libraries are LGPL so unless those are modified (or there are unknown issues), these guys are free and clear to create all the non-open software they want.

      This arrangement is a good thing - it allows everyone to use GCC as they see fit with a minimum of restrictions.

      --
      To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
    2. Re:Stanford Checker by Error27 · · Score: 4, Interesting

      I wrote a similar tool to the Stanford Checker called smatch.

      I post the bugs and stuff that it finds on kbugs.org. The most recent kernel that I've posted is 2.6.0-test11.

      One thing that I was working on a couple weeks ago was invalid uses of spinlocks. Here are my results from that. I found quite a few places that don't unlock their spinlocks on error paths etc.

    3. Re:Stanford Checker by gr8_phk · · Score: 1
      "I just think it'd be horrible if they used the GPL'ed GCC to develop their methods (having access to a full portable compiler onto which to do research and development is hardly a "small thing"), and then lock these same methods away from the community."

      What if they used Linux to develop proprietary software? That's OK. I can go home and do anything I want to GPLed or other OSS in the privacy of my home. I can even patent my discoveries. Now if I want to keep it proprietary, I need to completely reinvent it because I can't release my mods to GPLed code with patent restriction.

      I do see your point though. If one student built on the work of a previous student, the code has been modified and redistributed. The first student has now provided that code under GPL to the second student. Whoever is last in the chain should just release all the code, but they don't have to. They could demand money from the new company in return for NOT releasing it :-) contact the students and get their modified GCCs - they have every right to hand them over, but no obligation. IANAL.

    4. Re:Stanford Checker by eddy · · Score: 1

      What if they used Linux to develop proprietary software? That's OK.

      Yes it is, but it's also not the same thing. It's more like, what if they built on top of linux an amazing threading framework. By using linux they got off the ground quickly, greatly speeding up the research. When they find that their new threading framework is working amazingly well in the linux machinery, they patent it and never release it to the community even though it was developed on top of and into linux.

      I think that's closer to what seems to have happend with TSC, but I'm just trying to be vigilant, trying to point out something that could become and issue in the future.

      I do have issues with software patents. I think the reason this is starting to upset me is that the whole idea behind Free Software is that it should improve the quality of code and make code available and freely useable by anyone. Therefore building on top of Free Software and then turning around and patenting the things you've discovered smells bad in my world. I'm sure they're withing their rights, but it smells bad just the same.

      I'd love to be proved wrong here BTW, if someone working at Stanford would like to smack me down.

      --
      Belief is the currency of delusion.
    5. Re:Stanford Checker by Quixote · · Score: 1
      The reason I'm asking is because I saw that one member of the team has jumped over to a company called Coverity

      If you had continued reading, you would have read further down (on Engler's page):

      We have started a company, coverity.com, based on this work.

      Such is academic life today. You are not only evaluated on the number of "P"s (publications, PhDs, etc.), but these days you also are evaluated on how many startups you have spawned from your research.

    6. Re:Stanford Checker by Anonymous Coward · · Score: 0

      That's a really useful project, thanks.

    7. Re:Stanford Checker by iabervon · · Score: 1

      It can pass between any number of students, so long as the students are given the source and permitted to release it under the GPL. The GPL does not require releasing the modified code to the original developers, to the general public, or to anyone other than people who get binaries. The GPL doesn't require you to release the source to people you perform services for. So it would be perfectly fine for them to have a company which checks people's code, and never release the source to their checker.

      Of course, Stanford will probably release it at some point, since academic institutions tend to want to exchange information to improve research.

    8. Re:Stanford Checker by Build6 · · Score: 1

      Therefore building on top of Free Software and then turning around and patenting the things you've discovered smells bad in my world

      What you're saying is that it's against the "spirit" of the GPL if not the exact "word"... . They ought to be using BSD then, with the BSD licence being philosophically more compatible with this. And yet they chose linux... how/why?

    9. Re:Stanford Checker by eddy · · Score: 1

      Err.. there's no BSD-equivalent of GCC that I know of (though LLVM is close from what I can make of the license). Let's not argue about hypotheticals or parables.

      --
      Belief is the currency of delusion.
    10. Re:Stanford Checker by owenomalley · · Score: 2, Interesting

      > I just think it'd be horrible if they used the
      > GPL'ed GCC to develop their methods (having access
      > to a full portable compiler onto which to do
      > research and development is hardly a "small
      > thing"), and then lock these same methods away
      > from the community.

      Yeah, that is the way it is going to go. Dawson and his students and employees use gcc for a parser and have no intention of releasing their tool under any open source license. They claim that they modified gcc to write out Abstract Syntax Trees (ASTs) that are then read in to their tool (the Coverity/Stanford checker), which Coverity is selling commericially. Richard Stallman has long fought to keep gcc from publishing useful ASTs to prevent things like this from happening, but it is obviously impossible to stop in the long run and he should just concede the point.

      We should pressure Dawson and Coverity to at least release the modified gcc parser that will dump the AST. ASTs enable all kinds of program analysis tools, such as doxygen and static analysis tools. Furthermore, we should pressure FSF to roll the changes back into the GCC mainline.

    11. Re:Stanford Checker by eddy · · Score: 1

      That just sucks. I don't think Stallman should just concede the point, but I'm not a GCC developer. I know it's a problem in some way for them, but its an important point.

      If anyone on the Dawson team is reading this; SHAME ON YOU!

      (PS. Your "view games" link seems to be broken)

      --
      Belief is the currency of delusion.
    12. Re:Stanford Checker by eddy · · Score: 1

      edit: "I know it's a problem in some ways for them"... and why couldn't Dawson just license the EDG front-end if they wanted to go commercial?

      I guess the ideals are lost on some people. The SCO Group seems to have the same problem :-P

      --
      Belief is the currency of delusion.
    13. Re:Stanford Checker by Build6 · · Score: 1


      Err.. there's no BSD-equivalent of GCC

      I see, I see... Hrm. BSD pre-dated Linux quite a while, right? So what compiler did they use for what they did? Has it always been GCC?

  17. Debatable scale by Basje · · Score: 5, Insightful

    I do believe that Open Source is better than proprietory. Faults per 1000 lines of code may seem like a valid scale, but I think it is indicatory at best, not proof.

    * It does not take into account the design of the software. This is often as important as the actual quality of the code.
    * It does not take into account the kind of errors. This is related to the first, but a buffer overflow that allows root access is worse than a failed instruction.
    * It does not even take the length of lines into account. Shortening the lines could lower the number, without actually changing anything.

    So, small victory, but the race goes on.

    --
    the pun is mightier than the sword
    1. Re:Debatable scale by ebuck · · Score: 4, Insightful

      Good points, and I agree.

      Also if "lines of code" are going to be part of any code comparisions, then a standard should be propsed that does (at a minimum) the following:

      1. Formats the code consistently. We don't want one project to have more lines of code (and therefore less bug density) because they put a brace or parenthesis on a separate line while others do not.

      2. Strip the comments. Someone could decrease bug density by heavy, heavy commenting. Comments are a vital part of coding (and more usually is better), but they have no impact on the bugginess of the code.

      3. Format conditionals, blocks, and function calls consistently, or better yet, ditch the line counting and count bugs per (function call, assignment operation, operation).

      Lines are easy to count, but they hold so little meaning in determing code quality.

    2. Re:Debatable scale by mrotschi · · Score: 1
      > * It does not take into account the design of the software. This is often as important as the actual quality of the code.
      Actually, the number of faults per 1000 lines of code reflects the quality of the design. A badly designed software can not be enhanced/corrected without adding bugs.
    3. Re:Debatable scale by Zathrus · · Score: 4, Interesting

      Faults per 1000 lines of code may seem like a valid scale, but I think it is indicatory at best, not proof.

      It's actually a really miserable scale because of your 3rd point. If they ran the code bases through something like cindent and standardized the code formatting and removed all comments and whitespace then it's a somewhat more valid comparison. I didn't look at the actual research paper -- maybe they did. Odds are, your other two points are valid though.

      Additionally, they only say that the commercial code is "comparable". What does that mean (again, maybe answered in the paper)? Do they have roughly the same features? Are the query optimizers of roughly the same quality? Do they support the same platforms? I can't think of a major commercial database that doesn't exceed MySQL in all of these areas (ok, excepting SQL Server which fails on the 3rd only). Maybe it was a minor player in commercial databases. Dunno.

      These are the kinds of points that are raised when someone bashes OSS. There's no reason that they shouldn't be raised when the inverse is true as well. MySQL has progressed nicely and is worthy of consideration for light to moderate database loads now, I don't question that. All I'm saying is don't take things at face value.

      So, small victory, but the race goes on.

      The nice thing is that this is small and succinct -- it's suitable for showing to upper level management. That's a big win IMHO -- because normally the text bites they read are biased against free/open software.

    4. Re:Debatable scale by G4from128k · · Score: 2, Interesting

      It is very true that we can measure the "quality" of software with many different dimensions. The parent posts' suggestions of assessing design, error type, and parsimony (lack of dilution of errors with verbose code) are good.

      But the existence of alternative scales does not detract from the original assessment of defects/line unless we have separate knowledge that OSS is unfavorably biased. Do we have reason to believe that OSS is more poorly designed than commericial software, or that OSS has more serious bugs, or that OSS is especially verbose? Without that additional information, it is just as likely that commerical software has a worse design, more serious bugs, and bloated code in addition to a higher defect density (I know I can think of at least one dominant vendor that is guilty of all three sins). In fact, a higher defect density is probably a good indicator for both worse design and the presense of more serious bugs.

      Yes, the race still goes on. It would be nice to benchmark MySQL on these other dimensions of quality and benchmark other OSS projects. But without an a priori reason to suspect that OSS is worse on these other dimensions, I think we can conclude that the report is a victorious validation for MySQL and its team.

      --
      Two wrongs don't make a right, but three lefts do.
    5. Re:Debatable scale by TheMidget · · Score: 1
      I can't think of a major commercial database that doesn't exceed MySQL in all of these areas (ok, excepting SQL Server which fails on the 3rd only).

      I agree that MySQL is not the best database around, but here you are clearly exagerating.

      Moreover, more and more of the sore points (proper transaction support, foreign keys, online backups, innodb tables, ...) are getting fixed in the newer 4.x releases. Recent MySQL version are actually quite decent.

      So, implying that MySQL sucks worse than SQL Server except for portability is a tad harsh. The guys are doing efforts, come on!

    6. Re:Debatable scale by TheMidget · · Score: 2, Insightful
      It does reflect the quality of design, but not necessarily in the way you think it does. What if, due to poor design, the code is unnecessarily bloated (needs 1000 lines for what a competitor does in 100)?

      If the bloated program has only 5 times as much bugs as the small one, it would still be considered "twice as good", because it has ten times more code for the same task!

    7. Re:Debatable scale by nsxdavid · · Score: 1

      Yeah, in fact, I am somewhat perplexed by the methods too. For example, I can write some sort of "database" code that has no defects in their terms, but doesn't actually work. In other words, the whole thing is a defect.

      A more realistic example would be a function that looks up by index. No null pointers, everything initialized, but it uses the slowest possible algorithm or just skips half of everything and yields incorrect results.

      I'm not sure how their approach tells us much.

      --
      David Whatley
    8. Re:Debatable scale by Anonymous Coward · · Score: 0

      Errors per 1,000 lines of code is simply an old manufacturing engineer's metric system to measure defects in product applied to the computer science realm. Now unfortunately, industry has moved to the much higher standard of million opportunities (products, widgets, lines of code, etc), but the computer engineers seem to think a few errors per 1000 lines of code is still "Good Enough."

      Perhaps you programmer's should remember why American auto makers have been struggling to get it right for the past 20 yrs, while the Japanese auto makers keep right on increasing their bottom lines year over year. Quality. And NO, at Ford quality is NOT job #1. It's like job #10 if they feel like it. At least that's my impression of American built vs. Japanese built cars these days.

      And many American prgrammers are fat lazy slobs who just want that fat paycheck to go buy their big American truck. They're not concerned with producing a quality product, because HEY! they've only got a few bugs in their code for every thousand lines they write. Well guess what, those Indians probably would love to have half your fat American paycheck if they can prove they can get it right 99% of the time instead of 95% of the time like all the American programmers.

      Sorry, just had to vent. I hold quite a few programmers in contempt because of their laziness and non-responsiveness to those of us actually trying to improve the daily operations of the business.

    9. Re:Debatable scale by Zathrus · · Score: 1

      Yes, they're doing a great job. But if you think SQL Server stinks nowadays, you haven't looked at a recent version. The admin tools are absolutely amazing, the speed is excellent, and stored procedures are decent (which MySQL still lacks completely).

      I didn't say that MySQL "sucks" in comparison. I just said it wasn't up to the level of the major commercial databases. I still wouldn't put MySQL on a heavy use database, while I would Oracle, Sybase, SQL Server, or DB2. As such, doing a defect comparison between them isn't exactly apples to apples (especially with no stored procedure support).

    10. Re:Debatable scale by Anonymous Coward · · Score: 0

      WRONG it reflects the IMPLEMENTATION assuming they followed the design.

      Show me a project on sourceforge that has Models and so on and documentation , all I sees is binaries and source archives and a few written paragraphs or funky homepages that look like theyre written by those with the presentation skills of a retarded pig.

      And on the subject of KLOC, a line does not make a feature.

    11. Re:Debatable scale by Anonymous Coward · · Score: 0

      They also fail to account the actual activity in the code, which feature was changed the most, which was the most stable features.

      All for the sake of measurement, so they dream up some bullshit metrics that are not representative of the actual thing theyre measuring. Blind leading the blind.

    12. Re:Debatable scale by TheMidget · · Score: 0, Flamebait
      But if you think SQL Server stinks nowadays, you haven't looked at a recent version.

      Ehrrm, here at work, we have a SQL server running, and it crashes almost daily... (management decision, you know. We techs would rather go with sth more serious like Postgresql, or Oracle. But management thinks Oracle is too expensive, and Postgresql too cheap. Go figure!).

      Anyways, four weeks ago, we managed to keep it running five days in a row, but unfortunately, these 5 days contained a weekend... And sure enough, a script kiddy had to try his SQL injection skills on our server!

      the speed is excellent

      You must be kidding, right? Even flat text files are faster! A while ago Oracle had a context where they promised a rather sizable prize to anybody who could configure SQL server in such a way that it came within 1/100's of Oracle's performance. Nobody managed to claim the prize!

      and stored procedures are decent (which MySQL still lacks completely).

      MySQL does have stored procedures. In the older versions, they were rather hard to use, unfortunately (they had to be written in C, and interfaced with MySQL on a rather low level). However, since recently, MySQL supports Oracle and Perl stored procedures, whith a rather nice interface, not unlike Oracle's Aurora. There were a couple of mentions of the Java stored procedures on Oracle, and one of the last Linux Journals had an article on Perl stored procedures.

      I didn't say that MySQL "sucks" in comparison.

      You didn't use the word. Rather than saying MySQL "sucked" (which would have been relatively polite), you dared to compare it to SQL server (which is downright insulting).

    13. Re:Debatable scale by Anonymous Coward · · Score: 0

      I still wouldn't put MySQL on a heavy use database, while I would Oracle, Sybase, SQL Server, or DB2. As such, doing a defect comparison between them isn't exactly apples to apples (especially with no stored procedure support).

      I wouldn't want to put MySQL server on a heavy use transaction dominated database.. But I wouldn't use SQL Server in such a context if you put a gun to my head. The last time was enough, $2,000,000,000 of in-flight transactions, database crashes hard, files corrupted. Microsoft support wouldn't reveal the data format, wouldn't even fly someone out that knew the format. Proprietary information, you understand, can't let one of those in the know off the campus grounds. We had to reverse engineer it. Shortly after we got back from that support call a heavy burden of Oracle manuals greated us on our desks one morning. At least with MySQL we could have read back the valid records pretty quick. (Up to that point our software had only worked with SQL Server. We had already been phasing out stored procedures so the transition wasn't so painful.)

      SQL Server can really test your trust in proprietery software.

      Oracle is usuable only because they will put someone on a plane, as soon as they stop doing that their mouth wateringly good DB will be a liability for anyone using it.

    14. Re:Debatable scale by matvei · · Score: 1

      Well, the compiler will do all that for you. Just compare the number of bugs with the number of lines in the compiler generated assembly source.

    15. Re:Debatable scale by reverendslappy · · Score: 1

      Ehrrm, here at work, we have a SQL server running, and it crashes almost daily

      Then you should consider replacing the DBA before you should consider replacing the product. Even for SQL Server, "almost daily"? Come on. Somebody needs to be fired.

      That's not really the point though. The point is that mySQL IS NOT A COMMERCIAL-GRADE DATABASE. Period. It's just not. Maybe it will be at some point, but right now, today, it's not. Why?

      mySQL has no robust replication and/or backup feature, no real, ANSI stored procedures, no REAL constraints (column, table, named, foreign key), is not ACID compliant, and no triggers... with mySQL you have to deal with that lame backtick crap, and (for God's sake) case sensitivity (is this like early 90's Sybase like System 7 or something that we're talking about?) It doesn't support views, nor subselects, and it just added transactions I mean COME ON!!!

      I'm sorry, you can rip on MSSQL all you want, but at least it has a feature set (not to mention standards compliance) that lets it fit in nicely in the small-to-midsize RDBMS space. And whether you're willing (or able) to admit it or not, in a scenario that requires complete, 100% data recovery in the event of a catastrophic failure, smart people put their careers on SQL Server (or any other commercial-grade RDBMS) over mySQL any day of the week and twice on Sunday.

      So comparing mySQL to SQL Server bothers you? Me too, but for the right reasons.

    16. Re:Debatable scale by TheMidget · · Score: 1
      Then you should consider replacing the DBA before you should consider replacing the product. Even for SQL Server, "almost daily"? Come on. Somebody needs to be fired.

      We can't fire him. It's the CEO's nephew!

      mySQL has no robust replication and/or backup feature, no real, ANSI stored procedures, no REAL constraints (column, table, named, foreign key), is not ACID compliant, and no triggers...

      You need to get out a little bit more. All these are supported on current MySQL versions. Hey, if I said that Windows sucked because it only supports 8+3 case-insensitive filenames, I would be modded down into oblivion, even though my statement was true at one point in time (I'll be modded down anyways, but that's a different story).

      I'm sorry, you can rip on MSSQL all you want, but at least it has a feature set (not to mention standards compliance)

      Hey, you did the feat of mentioning MSSQL and "standards compliance" in a same sentence, without a "not" in between. Oh wait, there is a "not" ;-)

      in a scenario that requires complete, 100% data recovery in the event of a catastrophic failure, smart people put their careers on SQL Server (or any other commercial-grade RDBMS) over mySQL any day of the week and twice on Sunday

      See this excellent post if you're interested in knowing what happens in case of disaster with sewer server!

    17. Re:Debatable scale by PossibleMat · · Score: 1

      I used to think the same as you about stripping comments when counting lines of code. However, you have to consider the fact that if there are errors in a comment, a programmer could misunderstand the subtleties of a function and modify it incorrectly as a result.
      On the other hand, I still consider that code lines are still more important than comment lines when it comes to measuring quality of source code. Feels like we're stuck comparing apples and oranges.

      --
      Have you Meta Meta Moderated lately?
    18. Re:Debatable scale by reverendslappy · · Score: 1
      Heh... CEO's nephew. Sucks.

      As for your assertions about the features I mentioned: Perhaps I do need to get out more, but you should practice your reading comprehension skills. And I'm not sure why you think you'll be modded down, but my guess is that it'll be because you're, well, wrong. I'll explain:

      It supports constraints, you say? Wrong. It supports constraint syntax. It doesn't actually execute the constraints (gee, that's helpful, isn't it?). Example:

      DB > create table crash_q (a int check (a>0))
      OK

      DB > insert into crash_q values(0)
      OK



      Stored procedures? Uh, wrong again. Read for yourself.
      Stored procedures are being implemented in our version 5.0 development tree.

      Doesn't sound current to me.

    19. Re:Debatable scale by Minna+Kirai · · Score: 1

      If they ran the code bases through something like cindent and standardized the code formatting and removed all comments and whitespace then it's a somewhat more valid comparison.

      Almost nobody who talks about "lines of code" in a software engineering context means "number of carriage returns". They're smart enough to understand that in languages which allow comments or whitespace, using the actual length of the file is just pointless.

      Look at any SLOC counting script. For a C program, SLOC basically equals the number of ";" in the file (outside of comments and string constants, of course). Using the number of "\n" would be silly.

      Maybe the article didn't reiterate what it meant by "lines of code"... but comments and whitespace aren't code, so they do not count towards LOC. The formal definition for "line of code" is often "a line ending in a newline or end-of-file marker, and which contains at least one non-whitespace non-comment character."

    20. Re:Debatable scale by Minna+Kirai · · Score: 1

      mySQL IS NOT A COMMERCIAL-GRADE DATABASE. Period.

      Your definition of "commercial-grade database" is blatantly incorrect.

    21. Re:Debatable scale by reverendslappy · · Score: 1
      Sorry, I still wasn't done (damned submit button right next to preview...)

      SO... Replication and backup. You're right about replication. But in reading this I'm not very sold on it's robustness. Online backup? Nope. See the part about "LOCK TABLES"? Not cool if you want to, you know, do anything transactional.

      Triggers? Wrong again.
      Triggers are scheduled for implementation in MySQL version 5.1. A trigger is effectively a type of stored procedure, one that is invoked when a particular event occurs.
      Well, at least they have the definition down.

      And your "excellent post"??? Come on. There are literally dozens of ways to prevent that from happening -- or at least mitigating it's impact -- in a highly transactional environment. Transactional replication to a hot stand-by is what's always worked best for me, but that's because I'm knowledgable. On top of that, if the best pieces of evidence you can come up with in building a case against SQL Server are your CEO's nephew and an AC's anectdote on /. you should really examine your point.

      What it comes down to is this: Leave the database commentary to real DBAs, kid. You can waste your time coming up with (not so) witty names like "sewer server" and talking out of your ass about database issues if you want, but in the meantime, I'll be building real solutions with real RDBMSs, and using the knowlege you wish you could effectively pretend to have gained from reading a bogus whitepaper.

      Cheers!
    22. Re:Debatable scale by reverendslappy · · Score: 1

      Your definition of "commercial-grade database" is blatantly incorrect.

      Okay. My general point still stands.

    23. Re:Debatable scale by Tassach · · Score: 1

      Your approach is a good start, but what about the case of something like ++i; f(i); versus f(++i)? It would seem to me that if you're going to count anything, you should be counting the number of actual commands; the line f(++i); has two commands -- logically, it should therefore carry twice the weight of f(i).

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    24. Re:Debatable scale by Zathrus · · Score: 1

      here at work, we have a SQL server running, and it crashes almost daily

      And so it's MS's fault that you have an utterly incompetent DBA? There is absolutely no excuse for a database to be folding daily -- not for SQL Server, not for MySQL.

      The fact is, SQL Server is as fast or faster than Oracle -- depending on installation, needs, etc. Personally, I prefer Oracle. Or Sybase. They're available on much more robust platforms. I've had no exposure to DB2, so I can't comment on it.

      And, frankly, if your CEO's nephew can't manage a SQL Server 2000 installation then do the gene pool a favor and shoot him. It really is that brain dead simple.

      MySQL does have stored procedures

      No, it doesn't. Period.

      Oh, and there is no such thing as "Oracle Stored Procedures". Oracle has a stored procedure language called PL/SQL, but it also supports Java. I've heard mixed reports about which is faster in 9i, but I'd tend toward Java (as much as I dislike the language) because PL/SQL is useless beyond trivial functions (and I do know and use PL/SQL, but sparingly. It does, however, have really nice typing).

      Rather than saying MySQL "sucked" (which would have been relatively polite), you dared to compare it to SQL server (which is downright insulting).

      Only to those clueless about databases and that hate MS for being MS. I'm a Unix programmer, and prefer Unix to Windows, but I at least try to keep my dislike for MS based in reality -- not incompetence.

    25. Re:Debatable scale by TheMidget · · Score: 0, Troll
      It supports constraints, you say? Wrong. It supports constraint syntax. It doesn't actually execute the constraints (gee, that's helpful, isn't it?).

      wrong! (if you have a version more recent than 3.23.43b). Other constraints than FOREIGN KEY followed, or will follow shortly.

      In general, constraints work best with the INNODB (new) table format than with ISAM (old format). This is because proper constraint handling depends on availability of rollback

      Stored procedures are being implemented in our version 5.0 development tree.

      They were talking about a particular type of stored procedures here (PL/SQL). However, you can write stored procedures in other languages, such as Java and also Perl, as has been described December's Linux Journal on page 84.

      Online backup? Nope

      Wrong. If you use INNODB tables, you can do an online backup (without disturbing current operations, and without setting any intrusive locks). Yes, it is a commercial tool, but we can hardly object to this, we are comparing to databases where the whole software is commercial!

      reading a bogus whitepaper.

      What do you mean by this. If you hit google, you'll see that the overwhelming majority of links agree that MySQL is superior to Microsoft's offering.

    26. Re:Debatable scale by Minna+Kirai · · Score: 1

      Your approach is a good start,

      It's not my approach. This is standard SE jargon. It's undoubtedly what Reasoning Inc meant when presenting the report. Anyone who's read much about "software correctness metrics" (for what they're worth) will be familiar with these definitions.

      you should be counting the number of actual commands

      There's no good answer to that, so people tend to use just an unabiguous method of counting, rather than trying to make a more complex system that is fairer in that case, but maybe less fair in others. Compare printf("%d %d %d\n",a,b,c) against cout<<a<<" "<<b<<" "c<<endl. Should the latter really count for 6 times as much code as the former?

      Besides, there are more fundamental problems with the standard defintion of SLOC. For example, it counts
      printf("%d %d %d\n",
      a,
      b,
      c);


      as quadruple the code as if it were compactly presented. Add some more gratutious linefeeds before the commas, and you can make it 6x the code. There are 11 different whitespace-seperable tokens in that command, in the extreme, a newline between each of them would make it count as 11 SLOC.

    27. Re:Debatable scale by Tassach · · Score: 1
      Excuse me... I should have said "the approach you refered to". Feel better? ;)

      In the end, I think we're on the same page: it's basically impossible to use any code-based counting mechanism to quantify productivity or error rates in a meaningful way. Attempting to do so just leads programmers to game the system to manipulate the numbers in their favor.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    28. Re:Debatable scale by Xtifr · · Score: 1

      Formats the code consistently.

      Most tools for measuring LOC are smart enough that this doesn't really matter.

      Strip the comments.

      Most tools for measuring LOC ignore comments.

      Format conditionals, blocks, and function calls consistently

      Most tools for measuring LOC don't care how they're formatted.

      Running "wc -l" does not measure LOC, it measures lines of text (LOT?). If they claim to have measured LOC, then either they used a decent tool (probably, such things are readily available[1]), or they're incompetent fools (possible, but somewhat less likely IMO). Don't assume the latter without evidence.

      [1] Debian includes a package called "sloccount", for example.

    29. Re:Debatable scale by reverendslappy · · Score: 1
      Oh come on. Are you being serious?

      Great, so there's foreign key constraints. My bad! Column, named, and table will "follow shortly". I'll take three-outta-four. How about triggers? What about the backticks? What about the case-sensitivity? Any answers there, kid? Am I WRONG about those issues?

      And yeah, they ARE talking about PL/SQL stored procedures. So am I! The point is that real, commercial-grade RDBMSs ALL support PL/SQL SPs. Are you not reading what I'm writing? Or have they just not covered that in CompSci I yet?

      INNODB tables... blah blah blah

      I can't believe you're still missing the point.
      InnoDB Hot Backup is a non-free additional tool

      I don't see "mySQL" in that product's name. Do you? It's an "additional tool". Maybe I'll look at mySQL when, oh, I dunno, they have integrated online backups like every other real, commercial-grade RDBMS that don't require an "additional tool".

      This link says it all when it comes to whatever delusions you have about mySQL being commercial-grade and/or standards-compliant.

      And for the last time, I'm not talking about SQL Server specifically. I'm talking about it and every single other major commercial-grade RDBMS. If you're not rational and intelligent enough to not let your Microsoft hatred blind you into believing mySQL is something it just plain isn't, I can't help you.

      And finally, if your basis for determining one product's superiority over another is the number of links on Google (and no, I'm not going to click that link, smarty), I don't think I have to say much more. Once again, leave the real DBAs to talking about and dealing with these issues, kid. Stick with other kid stuff like trying to sneak the hackneyed old Google/goatse.cx trick into your posts. Because that really goes to show what children like you know about database administration.
    30. Re:Debatable scale by Anonymous Coward · · Score: 0

      Oh. And my general rod still stands.

    31. Re:Debatable scale by Anonymous Coward · · Score: 0

      Careful there. The foam around your mouth is dripping on your expensive Microsoft Natural Keyboard Elite (tm)!

    32. Re:Debatable scale by Anonymous Coward · · Score: 0

      parent's google link is indeed goatse.cx

      pathetic loser

  18. 6 times better? by kjba · · Score: 5, Insightful
    I don't see how you can make the statement that MySQL is 6 times better than the proprietary code from the facts that the defect densities are 0.09 and 0.54 per 1000 lines respectively.

    This just looks like some quasi-scientific statement, trying to express things as a number that really don't fit such a representation. For example, as the number of defects decreases, it becomes increasingly more difficult to find the ones that are left. And is code that contains no bugs at all infinitely much better than code that contains a single bug which hardly ever occurs?

    1. Re:6 times better? by Urkki · · Score: 2, Interesting
      • And is code that contains no bugs at all infinitely much better than code that contains a single bug which hardly ever occurs?

      Fortunately for the "model", there is no substantial piece of code that contains just one rarely occuring bug, let alone code that contains no bugs at all. Therefore such infinities never need to be considered in real life cases.

      But if you think of it theoretically, if that one rarely occuring bug potentailly causes your company go bankrupt (like being sued for huge damages), then I'd say the bugless version is infinitely better.
    2. Re:6 times better? by Anonymous Coward · · Score: 0

      Fortunately for the "model", there is no substantial piece of code that contains just one rarely occuring bug, let alone code that contains no bugs at all. Therefore such infinities never need to be considered in real life cases.

      Please post an example of a bug in TeX.

    3. Re:6 times better? by Kevin+Stevens · · Score: 1

      Yeah. I mean all this is saying is "this product team is 6 times better at reducing errors found by common bugchecker software than proprietary code." Tell this to an end user. You will get a blank stare. And for once, the blank stare is actually justified. Just a few reasons why:

      Lets ignore things like how good the product actually is - you know those things like speed, featureset, ease of use, reliability, turnaround time on bug reports, etc- even though featureset and reliability are directly related to code quality, and focus on the code itself.

      They still make no analysis based on how well the code is commented. Which is KEY to code quality.
      In addition, the ease of modification/reuasibility is never touched upon either. Bugless spaghetti code that requires significant rewrites to add new features or requires recompiles to change system function parameters is NOT good code.

      Now lets look at methodologies. Did they compare MySql, which is a major premiere product with high visibility and userbase to other major, premiere products with high visibility and large userbases? Did they compare MySql to other database projects of the same size? Did they at least try to match mySql up with other "mission critical" type applications? How about of the same maturity level? Upon perusal of the actual reports, they dont say, and I am guessing they did not. Smaller scale projects will not have the same review processes that larger ones will have- they also fail to mention that mySql, unlike most OSS projects- is funded. I would be much more impressed if they took a random sample of open source projects and compared them with a random sample of commercial products.

      In addition, there error counts are far too low. 21 errors in 235,000 lines of code? is that the totality of bugs they feel exists in mySQL? Every decent software engineer knows that these bugs are the cake ones to find. its those really nasty "well in this case my assumptions turned out to be incorrect" type bugs that really cause the problems.

      In summary, I could have run the projects through their "automated software checker" and churned out these reports and made these conclusions in a few hours, and grabbed some headlines in the process. But what they actually tell us is next to nothing.

    4. Re:6 times better? by Urkki · · Score: 1

      If you claim that current TeX code is bugfree, I'd say that's a pretty bold claim, especially considering that I don't think anybody has intentionally tried to find ways to break it with malicous input files. I mean, what would be the the point? Therefore I'd say the burden of proof (proving there are no bugs in TeX code) is on you, if you really claim it's totally bug-free...

      (Btw, commenting on another post as AC is a good way of discouraging replies, since the AC is unlikely to read them anyway, so I'd suggest creating an account...)

  19. As John Carmack put it... by rafael_es_son · · Score: 5, Interesting

    The main difference between open and *MOST* closed code is the fact that the early release of closed code means mucho mas money to corporate pigs and dogs, thus, proper requirements analysis, design, coding and testing are usually pummeled in the name of happy-go-lucky capitalism. "It will be ready when it is ready." -Carmack "I love America!" -Murphy

    --
    HAD
    1. Re:As John Carmack put it... by Anonymous Coward · · Score: 0

      Except of the three FPS games id has released source code for, not a single one of them has demonstrated anything resembling good design. Sometimes you'll find spots where you question if they even understand algorithmic complexity.

  20. Re:Duh! by drakaan · · Score: 1, Insightful

    And that's because...of nothing in particular? At least give a reason *why* you have an opinion, if you're gonna do that. Is it some vague feeling of fear? What's the reason?

    --
    "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
  21. Re:"6 times better" by revividus · · Score: 2, Insightful

    I don't think MySQL is intended to be `comparable' to OracleSQL, but someone else may be able to clarify.

  22. Re:New unit ? by pragma_x · · Score: 5, Funny

    Since we're measuring Defects per 1000 lines, perhaps calling them "Gates" or "Ballmers" might be more appropriate.

  23. Re:Duh! by Anonymous Coward · · Score: 0

    yeah but MS is touting that MSSQL Is Enterprise class. which I find absolutely hilarious...

    The MCSE's here keeps asking for MS SQL to replace oracle.

    oracle is a great DB, but the difference is between Microsoft utter crap and MySQL.

    no contest MySQL is much better than MSSQL.

  24. Re:Duh! by I8TheWorm · · Score: 5, Interesting

    I've used mySQL, Oracle, MS SQL, DB2, and MSDE. I'm not sure I get your comment about MS SQL server. Like any other RDBMS, a little performance tuning goes a long way. As a matter of fact, until Oracle's release of 10g, MS SQL beat all commercial offerings in the TPC benchmarks.

    MS has a buggy os and an awful model for business practice, but I think MS SQL server is a fairly nice offering. It's too bad it only runs on Windows servers though.

    --
    Saying Android is a family of phones is akin to saying Linux is a family of PCs.
  25. Re:"6 times better" by Anonymous Coward · · Score: 0

    if only there were some sort of linking technique i could use to direct you toward a news article that explains all that to you. you could read the article the link directs you to, and you'd have the information you requested. too bad telepathy hasnt been discovered yet, otherwise i'd transmit it to you that way.

  26. OSS To Vendors by the_mad_poster · · Score: 2, Funny

    Neener neener!

    Now, I'm sure we can all be very mature about this...

    --
    Alito: A vote for Alito is a punch in the eye to put that bitch back in her place!
    1. Re:OSS To Vendors by Anonymous Coward · · Score: 0

      Of course they will! They will just start investing in SCO!

  27. Don't generalize! by Junks+Jerzey · · Score: 3, Informative

    This "proves" that MySQL is better than commercial offerings. Good. A lot of people knew that. Hats off to the developers. But...

    1. This cannot be generalized into a property of all open source projects.
    2. It's more a tribute to the architecture and original core developers of MySQL than anything else.
    3. Realize that even though MySQL is an open source product, MySQL AB is the *company* that organizes and pays for MySQL development. So, again, you can't generalize this into something that covers late night hackers working on personal projects in their basements (the open source geek fantasy).

    MySQL is awesome! But let's be careful about this story, okay? It's the over-generalization that gives OSS/Linux advocates a bad name ("The Gimp is equivalent to Photoshop!").

    1. Re:Don't generalize! by SuperBanana · · Score: 4, Insightful
      This "proves" that MySQL is better than commercial offerings. Good.

      No it doesn't. It "proves" that on average, by line, MySQL has fewer errors in code. It says nothing of the severity of the errors in either package.

      Furthermore- MySQL is not even close to being equal in feature set to almost any commercial DB; replication/backup sucks, it's not ACID compliant, it had no transaction support until recently, no stored procedures, no triggers.

      How on earth could you possibly compare it to almost any commercial SQL DB which has all these...and say MySQL is better?

      A lot of people knew that.

      No, every two bit web designer thinks its the greatest thing since sliced bread, since they think a select w/group+sort is an advanced query. Every professional DBA I've met refuses to work with MySQL and/or hates it, and they can go on for an hour about why. When are you people going to realize that PostgreSQL is so much better than MySQL, save some incredibly risky performance options?

      MySQL is awesome! But let's be careful about this story, okay? It's the over-generalization that gives OSS/Linux advocates a bad name ("The Gimp is equivalent to Photoshop!").

      But you just said "This proves that MySQL is better than commercial offerings!"

    2. Re:Don't generalize! by Anonymous Coward · · Score: 0

      All generalisations are wrong, anyway.

    3. Re:Don't generalize! by prockcore · · Score: 1

      I guess I could be considered a professional dba since I use sql very heavily for my job.

      I like mysql. It is quick and powerful and get's the job done. Sure it'd be nice to have triggers and store procedures, but the lack of them doesn't make it unusable. Any DBA who refuses to work with MySQL is an elitist moron.

      I think postgres is better than mysql, but I also think that mysql's Full Text search is far superior than anything offered by Oracle or MS. MySql's caching works extremely well as well.

    4. Re:Don't generalize! by ajs · · Score: 2, Insightful

      Most of your points on MySQL are out of date. Its featureset has progressed a great deal since, apparently, you last looked into it. Even way back when this was a hot topic (when PostgreSQL, another excellent open source DB, was an up-and-comer), MySQL developers were already saying that most of people's concerns were being addressed in upcoming releasesd... Those releases have since come and gone (mostly in the form of 4.0, though IMHO, 4.1 is MySQL's finest moment, and its current release status as alpha is kind of funny given that it's been rock stable for a year).

      Just off the top of my head, you mention ACID. MySQL now offers a choice of back-end table managers that range from the original fast, but strictly non-ACID version to Berkely DB (which is fairly fast and supports transactions, but I think falls short of ACID in terms of rollback) and the fully ACID InnoDB, which is the (now open source) back end from the Progress database.

      So take your pick, depending on your app. Do you want speed? Transactions? Full ACID? Better yet, you can make that choice on a table-by-table basis!

      MySQL also has the best full-text-searching features I've seen in any DB, open or closed.

      There are limitations, and I might choose another DB for certain specific tasks (e.g. Oracle for statisics in the DB) but MySQL is a great first choice for most projects.

    5. Re:Don't generalize! by jadavis · · Score: 1

      What are some things that PostgreSQL could do to make it as "quick and powerful" as MySQL?

      Sure, if you have a big database in MySQL, than any good DBA should realize a job needs to be done and get to work.

      Anyway, seems like you like the FTS in MySQL, what do you think about the one in Postgres 7.4 (it's called tsearch2)? And are there situations where you've found PostgreSQL's caching to behave inefficiently?

      I'm not trying to say that MySQL is worse or anything, but I'd like to know more in-depth what the advantages are. It seems like people say often that MySQL is "good enough" for what they do, but don't say why they chose it over postgres.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  28. 0.09 errors per line code?! by Da+Fokka · · Score: 1

    How many lines of code are there in a Library Of Congress?!

    1. Re:0.09 errors per line code?! by lavaface · · Score: 1

      The LOC holds about 20 terabytes of data. Format lines as you please . . .

    2. Re:0.09 errors per line code?! by geoffspear · · Score: 1

      A very small percentage of that data is code, though.

      --
      Don't blame me; I'm never given mod points.
  29. Must have been baaad commercial code then.. by jordan · · Score: 4, Interesting

    Because there are portions of the MySQL code that are just painful to look at.

    Take for instance the part that takes as input the key index size and calculates internal buffer sizes. The option's size is an unsigned long long, but they cast it to an unsigned long all over the place, do in-place bitshifting on the cast (and cause it to wrap -- try specifying 4G for your key index sometime and you'll get 0), and the quality of code in that case is just painfully horrible to look at or even figure out what it's doing.

    I could only shudder to think what the quality of the commercial product looked like, in comparison. Hell, I'll have nightmares if I consider the quality of MySQL++ as a comparison..

    --jordan

  30. Poor methodology... by twoslice · · Score: 1, Redundant
    Just measuring the ratio of errors/line in a piece of code is not a very good test of quality. In my experience poorly documented,and formatted code leads to many programming errors being made in the first place. So the resulting error ratio may be just a case of poorly documented/formatted code.

    I imagine that I could write such a poor bubble-sort program that would have no errors - but would take a programmer a week to figure out what it does because it is over 5000 lines long...

    --

    From excellent karma to terible karma with a single +5 funny post...
  31. How about other OSDBs by Anonymous Coward · · Score: 1, Interesting

    How buggy is MySQL is compared to say PostSQL, FileBird, etc. MySQL tends to crumple under load, while PostSQL keeps going.

  32. Re:Duh! by James+Thompson · · Score: 5, Informative

    Need a particular reason? Take your pick. http://sql-info.de/mysql/gotchas.html

  33. Re:New unit ? by r00zky · · Score: 1

    no, that would be defects per 10 lines of code

    --
    I'm a chainsmokin' alcoholic sociopath, so-ci-o-path
  34. Re:"6 times better" by SilkBD · · Score: 1

    RTFA. They quantify it by measuring Defects per thousand lines of code. They they compare those numbers, viola... quantification.

    --
    00101010
  35. Total Crock by nberardi · · Score: 3, Insightful

    So how many of the eWeek people do you think saw the code to MS SQL Server or Oracal SQL? I am hightly doubting that they even were able to get to the front door to knock on either of the doors to ask if they could see the code. I mean this just looks like pure propoganda to anybody that has half a brain and keeps up with the industry.

    Don't get me wrong I love MySQL, but these types of articles are just as bad as the people saying that MacOS X isn't that secure because of the less users on it. Or the guy claiming that MS is way superior in the Internet Server world. These type of articles are just there to cause controversy and seperate us as a community Mac/Windows/Linux combined.

    I am not putting any merrit in this article and neither should you.

  36. Slashdot is a bad commercial for MySQL. by Futurepower(R) · · Score: 1

    Slashdot is a bad commercial for MySQL. Maybe it is the SlashCode, and not MySQL, but the Slashdot database regularly becomes confused, such as posting a comment to the wrong story.

    1. Re:Slashdot is a bad commercial for MySQL. by pegr · · Score: 5, Funny

      "but the Slashdot database regularly becomes confused, such as posting a comment to the wrong story"

      That's not the db... around here, we call them "trolls"...

      ;)

    2. Re:Slashdot is a bad commercial for MySQL. by Anonymous Coward · · Score: 1, Insightful

      Which could also be a symptom of atomicity (or rather, lack thereof) of transactions.

    3. Re:Slashdot is a bad commercial for MySQL. by Anonymous Coward · · Score: 1, Funny

      You're wrong! iPods are great!

    4. Re:Slashdot is a bad commercial for MySQL. by larry+bagina · · Score: 1

      check slashcode for the database table/column layouts. You'll probably gag. I'm surprised slashdot manages to work as well as it does!

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

  37. Quality vs. Features by spanielrage · · Score: 1

    This is a good example of developing high quality software versus a piece of crap with lots of "features".

    MySQL doesn't have some features such as stored procs or views, but what is implemented is pretty solid, which is important for a database.

    1. Re:Quality vs. Features by scambaiter · · Score: 2, Insightful

      yes, sure. Stuff like stored procedures or views are just toy features nobody really needs for database development... Better do all those things in you application code, makes it so much easier;) Come on, if you really need some ultra-fast small reduced-to-the-max sql database you might look at sqlite, if going for some bigger real life application you might discover that those bloated features actually do make sense... and one day you might find yourself posting things like "foreign key constraints would be so cool to have in mysql" as some of us did ages ago...

      --
      sick of sigs... *sigh*
    2. Re:Quality vs. Features by Anonymous Coward · · Score: 0

      Agreed. Case insensitivity and subselects would be great too.

    3. Re:Quality vs. Features by grmb1 · · Score: 1

      > a piece of crap with lots of "features"

      Who need stored code and views anyway?

      Just imagine:
      1. Web application
      2. Thick GUI client
      3. One more 'light' GUI client for PDAs
      4. etc...

      It's much more easier and convenient to re-implement same algorithms several times in different languages, for every app., than put 'em at one place! :)
      Yeah, right.

      > but what is implemented is pretty solid

      Don't really know. I've had problems with its stability. However Oracle db was running very smoothly for more than two years.

      --
      -- grmbl woz heer
  38. That's not precise. by Qbertino · · Score: 1

    Wasn't it 6.56 times better?

    --
    We suffer more in our imagination than in reality. - Seneca
  39. Re:Duh! by pyite · · Score: 5, Informative

    Up until recently, MySQL had no transaction or atomic operation support. As such, you need to write application code to trap problems. Whereas with Oracle, when you run an atomic operation, you know without certainty whether the query failed in its entirety. I also believe stored procedure support is somewhat lacking in MySQL (however, there is that new Java function support). The MySQL 3 tree does not enforce constraints which is something most essential for data integrity. MySQL does not have subrow locking, whereas enterprise databases do. Once again, MySQL is great. I use it. However, it is not enterprise.

    --

    "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

  40. Hardly fair by stinkyfingers · · Score: 3, Insightful

    There's a hell of a difference between 235,667 lines of code and 35 million lines of code. Just like there's a difference between 1000 lines of code and 235,667 lines of code. That is, the more line of code, the more likely a defect will survive.

    1. Re:Hardly fair by Anonymous Coward · · Score: 0

      You're saying that the number of errors per thousand lines of code is going to rise as the total number of lines increases?

      That a larger project will inevitably have a higher error density?

      This strikes me as statistically dubious. Please justify your reasoning.

    2. Re:Hardly fair by nsahoo · · Score: 0

      35 millions lines of code are accumulated from a collection of codes frmo different projects. Not one BIG project.

      --


      When a post becomes too insightful, it often becomes funny.
    3. Re:Hardly fair by geoffspear · · Score: 1

      I have a 100-line closed source program with no errors. You can't see it, but it proves that closed source is infinitely better than open source.

      --
      Don't blame me; I'm never given mod points.
  41. Now apply to IE patches.... by Bazman · · Score: 1, Funny

    Remember the 'Open Source' IE patch that came out recently? That had a few bugs in - buffer overflows, that sort of thing. Luckily, being Open Source, they got spotted quickly.

    Now apply the 'Rule of 6 times' to Microsoft's closed source IE patches...

    1. Re:Now apply to IE patches.... by thebatlab · · Score: 3, Interesting

      That open source patch was quite shoddily and hastily written. It wasn't even a patch really. Using it as representative of open source is not fair in any way whatsoever to other successful open source products.

      "Now apply the 'Rule of 6 times' to Microsoft's closed source IE patches..."

      There is no 'Rule of 6 times'. An analysis concluded that MySQL had a very limited number of defects in their code base. Kudos to them. This doesn't define a rule to be used in the open source vs. closed source holy war.

    2. Re:Now apply to IE patches.... by SmallFurryCreature · · Score: 1
      Isn't it? We got Linus himself admitting that some of his code in 0.01 was embarrisingly bad. IT GOT FIXED. This is very important. Opensource can get fixed by anyone. Not everyone can or will do this but apparently enough to create some very serious software.

      I think the IE patch is a wonderfull example. 1 person had the IDEA but not the coding talent. Others with more talent then complemented his work by patching his code. Those patches made the original work better and more valuable.

      No matter how obvious a mistake is in closed source you can't fix it.

      --

      MMO Quests are like orgasms:

      You may solo them, I prefer them in a group.

    3. Re:Now apply to IE patches.... by thebatlab · · Score: 1

      "Isn't it?"

      Well, I suppose it is representative of the open source programming ideal.

      In the context of the original post that I responded to, the poster was saying that since the IE pseudo-patch had a lot of bugs in a small code base, that MS patches for IE must be 6 times worse based on an ill-conceived "Rule of 6 times" for open vs closed source. I felt it was misleading to label that software as open source quality (not to say all open source is good) and especially more misleading to simply assume that closed source patches were even worse than that.

      That's where my response was coming from though I guess I may have worded it improperly.

  42. Re:"6 times better" by eyeye · · Score: 1

    You spelt "walla" wrong.

    Handy tip for you there ;-)

    --
    Bush and Blair ate my sig!
  43. 6 Times Better by Anonymous Coward · · Score: 0

    Anybody care to enlighten me on how they came up with that number?

  44. Re:Duh! by Anonymous Coward · · Score: 0

    And you don't think Oracle has any gotchas? Oh boy, wait till you grow up:)

  45. MySQL is a "TOY" as far as RDBM'S goes by ad0le · · Score: 3, Insightful

    First off, I think MySQL is a fantastic product. Its the perfect mix of speed and ease of use well suited for small to medium sized datastores where speed and relaibility are a must. That being said, I think it's unfair to describe this product alongside others such as Oracle, MSSQL (blow me guys, its a great product) and even PostgreSQL and SAP DB (which is be best OpenSource option in my opinion). The codebase for MySQL will never acheive the magnitude of the aforementioned products so it should be used that way. Just my 2 cents.

    --
    My mother never saw the irony in calling me a son-of-a-bitch.
    1. Re:MySQL is a "TOY" as far as RDBM'S goes by jadavis · · Score: 1

      I'm a fan of PostgreSQL, and I'd like to know how postgres can be easier to use like MySQL. Do you have some suggestions?

      Right now the only win32 version or postgresql is commercial (Mammoth PostgreSQL from Command Prompt, Inc., correct me if I'm wrong). The community project is working on a win32 port, and I think that will help. Aside from that, what makes MySQL easier to use?

      I'll ignore the speed issue for now, since that depends so heavily on usage patterns.

      I use postgresql everywhere, but I also know more about it than a typical web developer might. What would make pgsql better suited for "small to medium sized datastores"?

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  46. Re:Duh! by drakaan · · Score: 1
    That's better...although I'd say talking about version 3.x stuff is moot, since it's not the current production version (hell, I've been screwing around with 4.1 for 6 months). Not having stored procedures is my biggest issue with it, but I'm patiently awaiting their arrival in 5.0.

    If that had been your first post, you'd have gotten some mod points.

    --
    "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
  47. Stereo types? by tomstdenis · · Score: 0, Troll

    How much sampling did they do? Or did they just take MySQL and some bum-wad county program and compare them?

    That's like saying all negros are criminals because the TV show COPS shows them being criminals.

    I'd think a left-wing pro commie gaggle of hippies such as /. would be able to see past stereotypes already.

    Live in the now man!

    --
    Someday, I'll have a real sig.
    1. Re:Stereo types? by tomstdenis · · Score: 1

      Whoever modded the parent as troll is an idiot. It was on topic, made an argument and was not nasty.

      See disagree != troll.

      It might have been a bit of flamebait [not really] but certainly not troll.

      You suck moderator... suck the big one.

      --
      Someday, I'll have a real sig.
    2. Re:Stereo types? by Anonymous Coward · · Score: 0

      And you CAN THE big MANHAM!

  48. Re:New unit ? (GNU unit?) by OECD · · Score: 1

    Let's call it the Linus !!

    Great, then we'll have people arguing that we should call it the GNU/Linus!

    --
    One man's -1 Flamebait is another man's +5 Funny.
  49. in a recent study... by Anonymous Coward · · Score: 0

    marketing sites only have 3% more fake/fudged stats then news sites.

    and 74.6% of all stats are made up anyways.

  50. Re:New unit ? by coolmos · · Score: 0

    Well, you're right, but i wouldn't want to be the one to honour Gates or Ballmer with a unit's name.

  51. Re:Duh! by pyite · · Score: 1

    Well, the reason I mention version 3 is because it's widely deployed. Debian stable, for instance, is still on 3.23.49-8.5.

    --

    "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

  52. Re:That's quite good by Anonymous Coward · · Score: 0

    You forgot to make main void.

  53. Learn the issue. by eddy · · Score: 1

    I'm not sure what point you're arguing here. Of course there's nothing stopping you from building commercial software using GCC, but the Standford Checker is -- as far as I know (and I could be wrong) -- built ON gcc, not only with. As in, the meta-compilation framework was added to gcc as backend (and if it wasn't, this is all moot, but I seem to recall that it was. Doubt it was LLVM)

    Forget the legalities, I'm sure they're withing their _RIGHTS_ to take the research and move it into a compoany, but is it -- assuming my reasoning and background is correct -- ethical? Should we condone it? Is it within the spirit of the GPL?

    --
    Belief is the currency of delusion.
    1. Re:Learn the issue. by LMCBoy · · Score: 1

      Forget the legalities, I'm sure they're withing their _RIGHTS_ to take the research and move it into a compoany

      No, don't forget the legalities. I am NOT sure they are within their rights. The GPL grants modification and redistribution rights subject to conditions that I am sure we are all familiar with. Sounds like this company is showing blatant disregard for those conditions, or at least treading on very thin ice. There's no way they can patent code that is derived from GPL'd code, unless the patent is made available under a non-restrictive (i.e., GPL-compatible) license.

      Wow, and to attempt this with gcc, that most venerable of the GNU products? These guys have cajones.

      --
      Liberal (adj.): Free from bigotry; open to progress; tolerant of others.
    2. Re:Learn the issue. by eddy · · Score: 1

      I think they're likely reusing the concepts and discoveries developed in and from the Stanford Checker, not the actual code.

      There's lot's of compilers and compiler frameworks out there. I have no and don't presumt to have any idea about the pedigree, code-wise, of this company's particular checker.

      --
      Belief is the currency of delusion.
    3. Re:Learn the issue. by LMCBoy · · Score: 1

      Yeah, let's hope so. Although the marketing blurb ("the code was first developed by students at Stanford") sounds pretty sketchy to me. But hey, who the hell listens to marketing blurbs?

      --
      Liberal (adj.): Free from bigotry; open to progress; tolerant of others.
    4. Re:Learn the issue. by John+Hasler · · Score: 1

      > There's no way they can patent code that is
      > derived from GPL'd code, unless the patent is made
      > available under a non-restrictive (i.e.,
      > GPL-compatible) license.

      What reason do you have to believe that?

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    5. Re:Learn the issue. by michaelredux · · Score: 1

      Wouldn't the GPL'd code be considered "prior art"?

    6. Re:Learn the issue. by Tassach · · Score: 1

      The phrase "prior art" springs to mind.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    7. Re:Learn the issue. by You're+All+Wrong · · Score: 1

      As if it's derived from GPL code there's a clause in the GPL that says that if you try to patent it then you're violating the license. If so, then you've no longer got any right to base your code on it, and then you're in violation of the license until you reimplement.

      YAW

      --
      Your head of state is a corrupt weasel, I hope you're happy.
  54. Defects... by skinfitz · · Score: 1

    So.. if they can find x number of "defects" per y lines of code...

    Why not fix them?

    1. Re:Defects... by AGTiny · · Score: 1

      RTA, they did in 4.0.17.

    2. Re:Defects... by skinfitz · · Score: 1

      ...so now it has 0 defects - right?

    3. Re:Defects... by Anonymous Coward · · Score: 0

      Man, you sure are an idiot.

    4. Re:Defects... by Trejkaz · · Score: 1

      He has a point. They can't say there were X defects, and they fixed X defects in 4.0.17, because that would imply that there are no longer any defects!

      I suspect you'd need more data points. Graph the defects over a year, extrapolate to the end of the product's useful lifetime, and compare those results.

      Of course if you were comparing against Oracle you could argue that the 'useful lifetime' expired years ago.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  55. MS SQL Server by rlp · · Score: 2, Funny

    I'm in the midst of upgrading a SQL Server 2000 installation. MS issued their latest patch in August - a mere 56 MB patch. Hopefully that will fix some of the flakiness I've been seeing.

    --
    [Insert pithy quote here]
    1. Re:MS SQL Server by duplicate-nickname · · Score: 1

      What "flakiness" is that?

      --

      ÕÕ

    2. Re:MS SQL Server by gavcam · · Score: 1
      a mere 56 MB patch

      You haven't used any IBM software, have you?

      DB2 8.1 fixpack 4 for AIX weighs in at over 600MBytes! WebSphere Application Server comes in at a rather lean ~200MB.

      I swear, IBM fixpacks are sometimes larger than the original product!

  56. MySQL quirks by Futurepower(R) · · Score: 0, Troll

    I find the MySQL gotchas frightening:

    Don't read this: Slashdot lameness messages are very annoying when you have posted a legitimate comment: Your comment has too few characters per line (currently 18.5). Your comment violated the "postercomment" compression filter. Try less whitespace and/or less repetition. Comment aborted. Your comment violated the "poster-comment" compre55ion filter. Try less whi7espace and/or less repetition. Comment aborted. Your commen7 has too few characters per 1ine. Your comment has too few characters per line (currently 18.5). Your comment violated the "poster-comment" compre66ion filter. Try less whitespace and/or less repetition. Comment aborted. Your comment has too few characters per line (currently 18.5). Your comment has too few characters per line.

    Now it says: Your commen7 has too few characters per line (currently 33.7). However, I didn't change the number of lines.

    # Important Stuff: Please try to keep posts on topic. # Try to reply to other people's comments instead of starting new threads. # Read other people's messages before posting your own to avoid simply duplicating what has already been said. # Use a clear subject that describes what your message is about. # Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your

  57. That wasn't the point by Gothmolly · · Score: 0

    Higher levels of investment in development may yield things like better test labs, more test boxes, more test OSes, easier benchmark simulation, etc. More dollars means that development can take place on more special-case nodes, and devote time to specific optimizations.

    --
    I want to delete my account but Slashdot doesn't allow it.
  58. depends on by everflow · · Score: 1

    is code that contains no bugs at all infinitely much better than code that contains a single bug which hardly ever occurs?

    even if i consider this theoretical question i think it depends on the fact what the software is used for. i am with you when we talk about a mediaplayer or a game, but if we talk about surgical or airplanecontrol software my view changes radical.

  59. I hate to rain on their parade (tm) by jfroebe · · Score: 1

    This study really only shows the defects in the MySQL code base and nothing about proprietary database source code.

    The analysis of the proprietary databases' source code is by guessing as they don't have access to the proprietary source code and therefore can not make such a claim.

    While I have no doubt that the open source model is superior in development, this study, unfortunately, proves nothing. Smoke and mirrors.. :-(

    jason

    --
    No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil
    1. Re:I hate to rain on their parade (tm) by electrongunner · · Score: 1

      Actually, dipshit, they did analyze the competition's code, line by line. 35 million lines to be exact. Here's a quote from the brief article, you can find more information in the actual whitepaper, not that you bother finding out any facts before you post:

      "Through its analysis, Reasoning concluded that the commercial average defect density--covering 200 recent projects and totaling 35 million lines of commercial code--came to 0.57 defects per thousand lines of code."

    2. Re:I hate to rain on their parade (tm) by jfroebe · · Score: 1

      Kiss my ass

      --
      No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil
    3. Re:I hate to rain on their parade (tm) by jfroebe · · Score: 1

      Are you a complete idiot? Reasoning did NOT analyze ANY commercial code. They took a look at an "industry" statistic... which has no value.

      When you actually are able to read what the article says and not what you want it to say please enter the human race otherwise stay with the primates.

      jason

      --
      No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil
  60. Re:Duh! by Frymaster · · Score: 3, Informative
    Take your pick. http://sql-info.de/mysql/gotchas.html

    those are just bugs! what about lack of features?

    • no subqueries
    • no stored procedures
    • no triggers
    • no foreign key constraints
    • no updates on joins

    at least there's row-level locking now... finally.

  61. Re:New unit ? by Trigun · · Score: 1

    Let's just break it down to error per Line of Code. Since LOC is already taken as a measurement unit (Which I still have problems with, as the LOC keeps growing, making it like inflation, I mean seriously, How many LOC's could the egyptians have stored in the pyramids), so we will use Ballmers. This particular example is measured in kiloBallmers, and could have been expressed as gigaBallmers just as easily.

  62. What about other open source projects. by Anonymous Coward · · Score: 0

    Usually in the open source world, there are two major implementations of a software concept and several minor ones, and usually commercial rivarly as well.

    Examples
    Editors such as Vim, Notepad, Kedit, BBedit, Textpad, nano
    GUI's such as Explorer, Finder, KDE, Gnome, XFeaces, Box.
    Kernelss such as ntkrnl.exe, linux, darwin.

    Each one has varying bugs and complexity, There is a link between ones market share, feature set and lines of code.

    For example, in Gnome vs KDE for example, I find KDE to be less buggy even though its more complex, because it has more users (90% of distros use it be default) and so there are more people finding faults, while also adding more features as well. Gnome 2.4 shockingly had LESS features than 2.2, because the code base had became so buggy that the developers had to remove a lot of the functionallty to stablize.

  63. MS SQL Sybase ASE by Anonymous Coward · · Score: 3, Informative

    MS SQL is basically a revamped Sybase. So, on UNIX & Linux you could use Sybase ASE.

  64. Re:Duh! by An0maly · · Score: 2, Insightful

    open sourcers don't necessarily get paid to release code, so they don't have the luxury of releasing shit just so they can keep their jobs by releasing updates for the next 5 years. when a commercial product finally DOES become useable they make a whole new buggy/bloated product that they can release fixes and patches for.

    --
    "...if you don't like your job, you don't strike. You just go in every day and do it really half-assed..." -Homer
  65. FUD by Kenneth+Stephen · · Score: 5, Insightful

    This is proof positive that the marketing engine has started churning in the Linux / Open Source arena. The quoted statistics are meaningless. Here are is a short list of things (in no particular order) that are wrong with this "study" (who paid for it anyway?):

    Lines of code is meaningless as a reliable measure of anything. The most this number can be used for is for assessing the high level complexity (i.e. simple, non-trivial, or hard) of an application / code construct. It is absolutely pointless to compare two different applications against each other by lines of code. This means that you can say that one is non-trivial and the other is complex or you can say that both are complex, but there is no valid way of determining (by using this particular metric) that one application is more complex than the other. I believe this is the fundamental flaw in this "study".

    The study igores capabilities. If application A has feature a, b, and c, and application B has features a, b, c, d, e, f, g, h , is it even meaningful to compare the number of defects detected between applications A and B? And no - normalizing it by lines of code is not valid (see previous point).

    Testing methodology : from the defects quoted in the article, it appears as if they "study" did white box testing on MySQL. This is hardly complete. While null pointer dereferences are certainly terrible, I would be also very very concerned about bugs pertaining to SQL capabilites, data integrity, performance, etc. If I go out and do a comparison of RDBMS's for a client, my report wouldnt be complete at all without covering these areas. How come the "study" doesnt mention any of these things?

    Lets face it : this is a paid propaganda article by the marketing machinery. Much like Microsoft has done in the past.

    --

    There is no such thing as luck. Luck is nothing but an absence of bad luck.

  66. It is embarassing to show bad code. by jhines · · Score: 4, Insightful

    It is really embarassing to have bad code with your name on it, released to the public.

    Not only that, but there is a small percentage of coders when presented with an ugly solution to a problem, will pretty it up, just "because". And it is a good way to get known in the OSS world.

    Unlike the corporate world, working but ugly code is hidden deeper and deeper, and people go out of their way to avoid it.

    1. Re:It is embarassing to show bad code. by Anonymous Coward · · Score: 0

      It might be embarassing, but what better way to get it cleaned up?

    2. Re:It is embarassing to show bad code. by kbielefe · · Score: 1
      I agree with you, and think it goes even deeper than that. I think in general that poor coders don't contribute to open source projects, especially successful open source projects. It just doesn't interest them to struggle with work all day and then struggle with contributing to open source software at home. They got into computer programming because they like surfing the web and gaming at home and were better than average at administering a windows box at home.

      On the other hand, judging from my coworkers, most of the best coders I know use Linux at home or at least try it once in a while because it has good cheap development tools and is highly "tinkerable". They got into computer programming because they enjoyed writing programs for their computer in high school and were pretty good at it.

      --
      This space intentionally left blank.
    3. Re:It is embarassing to show bad code. by luisdom · · Score: 1

      Unlike the corporate world, working but ugly code is hidden deeper and deeper, and people go out of their way to avoid it.
      False. It's like alcohol and women: there are no ugly women, just lack of alcohol. Just find and replace women with code and alcohol with pressure.

  67. Re:That's quite good by JeanBaptiste · · Score: 1

    I think you need some help too. I've never seen C code with line numbers, or with print instead of printf. and where are your semi-colons? Back to Qbasic with you!

  68. Exceptions by Anonymous Coward · · Score: 0

    These are exceptions and highlighted, it does not in anyway reflect the entire model as a whole as we can plainly see buy looking around.

    There is a hell of alot more reliable closed source software out there than open source.

    Like it or not fanboys, its reality.

  69. easy solution by CausticPuppy · · Score: 1

    Just add a bunch of creatively placed linefeeds, you can easily get back up to the 6X number (based on lines of code).

    --
    -CausticPuppy "Of all the people I know, you're certainly one of them." -Somebody I don't know
  70. ADO Blobs by Anonymous Coward · · Score: 0

    Too bad ADO Blobs still don't work...

  71. Toy DBMS by leandrod · · Score: 2, Interesting

    Seen lots of intelligent comments about lenght of lines and potential bloat skewing the results, but there is one more issue to consider: design.

    No matter how good the coding itself, if the design is broken, the tool is broken, period.

    And MySQL has a broken design. So broken that the upgrade path isn't MySQL X or something the like, but MaxSQL -- in fact, rebranded SAPdb. That SAPdb is at most at Oracle v7.2 levels tells lots about MySQL.

    I could be more specific, but do your own research in Google -- lack of SQL compliance, lack of features to enable declarative coding at the server instead of procedural client code, and so on.

    Now, the interesting part. Suppose MySQL AB would have a sudden insight and repent of their un-SQL, anti-relational ways. Unlikely, you say; yet possible. Now suddenly they have to recode, or change drastically the current code. The resulting tool will be probably much bigger than the current, because SQL is baroque; or even worse than much bigger, because of MySQL backwards compatibility.

    The sheer bloat will make even this faulty measure of bugs/KLoC skyrocket. Now, run the comparision again...

    Not to say SQL compliance shouldn't be attained. In fact, bloat in the SQL DBMS is a more than good enough tradeoff against bloat in the application. The ideal would be a RDBMS, but while there isn't a MyDataphor a SQL DBMS should do.

    Even today, I don't care about comparing to, say, Oracle or MS SQL Server. IBM DB2 would be a better baseline, but best of all the real competitors: PostgreSQL and Alphora Dataphor.

    --
    Leandro Guimarães Faria Corcete DUTRA
    DA, DBA, SysAdmin, Data Modeller
    GNU Project, Debian GNU/Lin
    1. Re:Toy DBMS by kpharmer · · Score: 2, Informative

      > Even today, I don't care about comparing to, say, Oracle or MS SQL Server. IBM DB2 would be a better
      > baseline, but best of all the real competitors: PostgreSQL and Alphora Dataphor.

      I think you've got your dbms' mixed-up:
      Oracle, Informix, and DB2 are all of comparable complexity and power: Oracle's partitioning is the simplest and its clustering the most complex. DB2 & Informix have more complex partitioning - but can scale beowulf-style to hundreds (if not thousands of separate servers).

      SQL Server is less functional than the above servers, though obviously similar to Sybase (due to its heritage).

      Postgresql is less functional than SQL Server - though it's a fine product anyway.

      MySQL is less functional than Postgresql.

      Not aware of any other database that occupies the limited transaction support / limited ANSI support niche that mysql does. MSQL perhaps?

    2. Re:Toy DBMS by leandrod · · Score: 1
      > I think you've got your dbms' mixed-up

      No I haven't. I am quite aware about features. But I didn't mean features mostly, I mean quality and design.

      While MS SQL Server and Oracle have lotsa features more than PostgreSQL, they are of lower quality coding (as shown by bugs) and design (SQL compliance, simplicity of operation).

      > Not aware of any other database that occupies the limited transaction support / limited ANSI support niche that mysql does.

      This ain't a niche but defects. Sizewise I'd compare it to, say, FirstSQL, which is proprietary but conceptually much saner.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    3. Re:Toy DBMS by jadavis · · Score: 1

      Postgresql is less functional than SQL Server - though it's a fine product anyway.

      What functionality left out of postgresql do you find most important?

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    4. Re:Toy DBMS by kpharmer · · Score: 1

      > What functionality left out of postgresql do you find most important?

      On a recent conversion (14 months ago) of a large MS SQL Server database to Postgresql the single biggest issue was the inability to return a result set from a stored procedure.

      Another issue is that stored procedure support for most languages isn't complete. For example, since python is run outside of the database there are strange, bizarre, and ultimately unacceptable quoting and escaping that needs to be done. That's a shame - since I *really* wanted to use python here.

      Another issue is that there was no support for easy replication/federation of data. I was developing a large reporting solution and planned to exploit the free licensing of postgresql to distribute queries across a dozen low-end servers. Not a problem - but I lacked an easy method of managing multiple copies of common user data. What I really wanted was something like a 'remote table' that would point to another database. Failing that - replication could meet this need. Without either, I was looking at a more complexity in the application as well as a home-made (though simple) replication solution.

      Ultimately, these three issues forced us to stick with SQL Server - in spite of considerable progress in postgresql. The killer was the result set issue.

      Note that I won't hesitate to use the product again - and will hopefully find a few of these short-comings resolved when I do.

    5. Re:Toy DBMS by jadavis · · Score: 1

      I just wanted to point out that, as of 7.3, PostgreSQL fully supports result sets returned from functions/stored procedures. I've used it myself and find it very simple to use and allows you to do anything you need to do with them.

      I believe you can use them anywhere you can use a subselect: in place of a table, an after an "IN", etc.

      Hopefully replication has improved by now. I know there are a lot of people using it, but I don't know enough to comment.

      As far as python is concerned, wouldn't you normally write the functions in a seperate editor and then just pass it through an escaping filter? I think that would work a lot more effectively than trying to write it in the query yourself the first time through. I think it's the same with complex regexes, or SQL functions, or anything else that would need escaping.

      But yeah, I recognize that some of the bigger DBs have more features, particularly in the area of replication and and partitioning. Also postgresql lacks point-in-time recovery (or incremental backup), and it's tougher to upgrade (requires full dump/reload on every minor version).

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    6. Re:Toy DBMS by kpharmer · · Score: 1

      > I just wanted to point out that, as of 7.3, PostgreSQL fully supports result sets returned from functions/stored procedures.

      I had heard that this was coming - but while using 7.1 the documentation and some of the offered implementations were so poor that I couldn't count on it. The shared-cursor (I forget its exact name) was an especially awful-sounding substitute for what I was looking for.

      > Hopefully replication has improved by now. I know there are a lot of people using it,
      > but I don't know enough to comment.

      Yeah, I'm seeing progress here. It's not really at the top of my list though - aside from an occasional need I view it more as a liability in a production system.

      > As far as python is concerned, wouldn't you normally write the functions in a seperate editor
      > and then just pass it through an escaping filter?

      Not sure what you mean by an escaping filter - I'm assuming that I can access code with any vanilla editor - without having to rely on intelligent parsing. Not sure how that could work anyway - since I've got python variables mixed with sql code...

      > I recognize that some of the bigger DBs have more features

      Right - and as long as the core functionality is solid, I don't mind if some of the fringe stuff is missing. But postgresql is there. It's enough there to be seriously considered for quite a few production tasks.

    7. Re:Toy DBMS by jadavis · · Score: 1

      Yeah, in 7.1 the support for returning result sets just wasn't there. I remember the cursor thing you were talking about, and I never even tried it because it seemed so strange. Hopefully the docs are better now, they've been reworked in 7.4 and I think they've been improved a lot.

      By "escaping filter" I meant that you could write the python function in a normal editor and then use another quick function that would automatically escape all the SQL special characters, something like PHP's addslashes() function.

      I don't really see a way to get away from the escaping issues with any stored procedure language.

      The main thing I was saying was if it's a complex function, I think it's too difficult to write the code in a SQL statement, because you have two levels of escaping. So, if you write it in a normal editor, then you can later escape it before you pass it to postgres via SQL.

      Also, if you use pgAdmin III, it should automatically escape it before it passes it to the server.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  72. MySQL vs. Oracle by nsxdavid · · Score: 1

    So Oracle is mission critical to our operation. But I hate their licensing structure enough that I'd love to go with something like MySQL. Reliability and speed are very important.

    Does anyone have any option, backed by experience in the matter, on switching from Oracle to MySQL. A good or bad idea? Disregard cost of the actual switch. I'm looking at this from the standpoint of technical merit and capability.

    --
    David Whatley
    1. Re:MySQL vs. Oracle by Jim+Tyrrell · · Score: 0

      David, I will tell you that I have used MySQL to back my website http://www.horsephotos.com. I use it to store all my images and all of my data. In all that time I have never seen a crash or error. I think it is rock solid and way simpler to use then anything else. I would recommend it strongly to anyone needing a good database.

    2. Re:MySQL vs. Oracle by IANAAC · · Score: 4, Insightful
      If you're using any of Oracle's standard feature set, you'll have a tough time converting everything over. Oracle is much, much more SQL standards compliant (what's with MySQL's backticks anyway?). If your applications use stored procedures, triggers, primary and foreign keys, transaction-based recovery/redo, you're looking at a complete rewrite of your apps. Regardless of what database you choose to use, you're looking at at least a partial rewrite, but why complicate matters more than you need to?

      Sorry, but my opinion is pretty strong on this. Going from anything Oracle to MySQL is NOT trivial.

    3. Re:MySQL vs. Oracle by Anonymous Coward · · Score: 0

      IMHO it will be just a divastation of data. I had preaty bad expirience with recovering of data when something fails in MySQL. One time powersupply died on the server and after we braught it back up MySQL reported that couple of hundred rows were unrecoverable and that is it. Now imagin that it were some kind of commercial transaction. You could have loose lots of money. So lets put it this way, if data you store in database is important to you then stay with oracle, cause it will be hard to find the DB that could compare to the reliability of it. If you do not care about data, let's say you just log Homepage hits into the DB, then MySQL is good alternative.

      I do agree that oracle licensing is a bitch but from my expirience it worth every cent of what they charge.

    4. Re:MySQL vs. Oracle by mydigitalself · · Score: 2, Insightful

      it really depends on how heavily your developers have embraced 8i. as another poster mentioned - if they are really exploiting it then you will have a big migration task. if your applications only perform basic SQL statements - then you could probably get away with it. actually, if all you do is perform basic SQL, then you aren't utilising oracle to its full potential and you'd probably get a better ROI (return on investment) by moving to MySQL.

    5. Re:MySQL vs. Oracle by kpharmer · · Score: 4, Insightful

      Porting between dbms products depends primarily on two issues:
      1. usage of vendor extensions
      2. usage of standard relational functionality

      Generally speaking, if you've minimized #1 in your application you can easily port between Oracle, DB2, SQL Server, Sybase, Postgesql, etc: sure, you could hit some issues with jdbc drivers, and may need to port a few idioms (partitioning for example), but it shouldn't be a killer. But going from any of the above list to mysql isn't suggested: you'll get hung up on #2 (it doesn't support standard SQL or DDL)

      Realistically, if I wanted to go to a less expensive product than oracle I'd look down this list:
      - db2 (1/3 to 1/2 oracle cost)
      - sybase (cheaper than oracle, but dwindling market share)
      - firebird (very low cost)
      - postgresql (free)
      All of the above are mature relational databases that you could port oracle applications from.

      But you mentioned 'mission critical'. At this point I'd be very cautious about either postgesql or mysql in a mission-critical role. How important is it to you that you can recover 100% of your data in the event of a database crash? I'd put my money (and career) on db2 or oracle delivering that kind of quality over mysql...

    6. Re:MySQL vs. Oracle by Just+Some+Guy · · Score: 1
      David, I will tell you that I have used MySQL to back my website http://www.horsephotos.com.

      Jim, the fact that David is currently using Oracle would indicate that he's probably doing more than serving images to a webpage. Of course, I'm at the office right now and there's no way I'm going to a site with "horsephotos" in the domain name to see how complex your site is. :)

      --
      Dewey, what part of this looks like authorities should be involved?
    7. Re:MySQL vs. Oracle by timjdot · · Score: 1
      How about Interbase? I thought Borland OpenSourced it a while back but the website doesn't seem like it. Has anyone used it?

      I'm amazed to hear mySQL still does not support transactions. That's hilarious. I assume it now does locking by rows because otherwise it would be just another Access.

      Oracle is not too bad but the tools are bad. The two big Oracle shops I've worked in used Toad. At least M$FT provide good tools with SQL Server and you can go online and find the Sybase answers when something doesn't work as expected (Sybase docs are consistent with SQL Server even now as far as my experience!).

      My buddy had a good idea that software companies should be fined for bugs.
      TimJowers

      --
      Expect Freedom.
    8. Re:MySQL vs. Oracle by ageitgey · · Score: 1

      'Firebird' that the parent article referred to is the Open Sourced version of Interbase.

      And MySQL does support transactions in the 4.x versions now, along with many other basic features. Stored procedures and triggers are still missing though.

      --
      Uninnovate - Only the finest in engineering.
    9. Re:MySQL vs. Oracle by jadavis · · Score: 1

      At this point I'd be very cautious about either postgesql or mysql in a mission-critical role.

      PostgreSQL runs the .org and the .info registries, if I'm not mistaken. I think a lot of people would be unhappy if those became unavailable, including all the readers of this website. Sure, there are more mission critical applications out there, but somebody is pretty confident in its stability.

      That being said, I don't think I'd choose an X.Y.0 release for anything mission critical.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  73. MySQL and Commercial Licenses by Anonymous Coward · · Score: 3, Interesting

    I'm a little confused. I thought I understood how to make profit with the GPL, but now I'm not sure.

    MySQL GPL'ed all their products. (presumably so they could get developers and bug-fixes to their product for no charge.) However, they offer "commercial" licenses for people who want to integrate MySQL into their software, but don't want to GPL it. How can they do that? Presumably, any improvements/bugfixes/modifications that came from the community would be GPL, and therefore cannot be re-integrated under a more restricted license. I'm a little confused here. How can they take code that has been released under the GPL and turn around and release it under a more restrictive license?

    1. Re:MySQL and Commercial Licenses by Anonymous Coward · · Score: 1, Informative

      They can do it because in order to get a fix/patch/feature into MySQL proper you have to sign your rights over to them...

      MySQL is a very unopensource, open source project.

    2. Re:MySQL and Commercial Licenses by pclminion · · Score: 1
      They can do it because in order to get a fix/patch/feature into MySQL proper you have to sign your rights over to them... MySQL is a very unopensource, open source project.

      You just made a very embarrassing mistake.

      The FSF itself requires contributers to GNU software to give away their rights to the FSF.

      I suppose it's okay for the FSF to do it, but not MySQL? Shut up, uninformed idiot.

    3. Re:MySQL and Commercial Licenses by *coughs+loudly* · · Score: 1

      I haven't checked, but I assume they're doing what the FSF does and requiring that bug-fixers assign them ownership of the copyright of the patch before they accept it. Whence their right to relicence it.

    4. Re:MySQL and Commercial Licenses by Anonymous Coward · · Score: 1, Interesting

      I wonder then why anyone would want to assign over the copyright to them if they're just going to plow it into the commercial side and make money on it. I see it as either:

      1. They really think MySQL is sincere when they say that they are "Quid Pro Quo" and are using the profits to improve both the GPL and non-GPL versions. (Using "versions" for lack of a better word, i think the codebases are identical)

      2. MySQL deserves it since had they not GPL'ed the database to begin with, there would be no patch. Essentially, they already gave the "Quid" part and letting them profit from your patch is the "Quo Pro" part.

      3. Acknowlegement. Being able to say, "Yeah, I created the xyz feature patch that made MySQL self-aware" probably helps the developer land some more private contracts. (This assumes that MySQL allows you to keep attribution rights.)

    5. Re:MySQL and Commercial Licenses by pclminion · · Score: 1
      Look, I'm in this same situation myself right now.

      I want to release my code under a BSD-style license, but I still haven't worked out the details. I don't really know what I want, exactly. In the meantime, I considered releasing the code under GPL, and then switching the license later on (a dual-license situation like we're seeing here with MySQL -- the original GPL license would remain, but I could also license binaries to third parties if I so wished).

      The problem is, since the code contributers retain their copyrights on the code they've written for my project, I can't simply switch the license without getting permission from all of them. Therefore, I am considering (I have NOT decided yet) to ask any contributers to assign their copyright to me.

      I'm not doing this because I want to slam the project closed at some point. Just the opposite. I want to move to a less restrictive license than the GPL in the future. However, since the BSD license would allow distribution of binaries without source, I would have to get permission from all the people who contributed code under the GPL's terms. So I'm put in an awkward situation where I either have to ask permission from everybody before doing it, or ask up front that they assign copyright to me, before contributing a single line of code.

      It's not about being an evil capitalist bastard. Believe me, I'd rather not have to worry about licensing at all.

      Anyway, quit demonizing MySQL for wanting copyright granted to them. They are trying to legitimately maintain control of a project that they started, without having to bow to the whims of just any contributing developer who comes along.

    6. Re:MySQL and Commercial Licenses by Anonymous Coward · · Score: 0

      [I'm the OP]
      I'm not bashing MySQL. I think it's great that they are successful with open source. I just don't know a thing about software development and am just trying to understand how it is done. Sorry if I sound like I'm bashing MySQL. I'm not. I'm as hard-right pro-capitalist Jesse Helms loving as they come.

    7. Re:MySQL and Commercial Licenses by mcc · · Score: 2, Informative

      Well, let's see.

      The FSF demands you to sign your righs over because they want to be able to effectively and easily defend the copyrights of all GNU software in court. For example, if GNU software is having its copyright infringed, they want to be able to go right ahead and act with immediate legal authority on that software, rather than having to track down every single contributor to that project-- some of whom may no longer be contactable-- and get permission to proceed with a legal action. They are open about this. They tell you this up front.

      MySQL AB demands that you sign your rights over because they want to be able to take the code you contribute, repackage it as a commercial product, and sell it for their own profit. They are open about this. They tell you this up front.

      While I don't think there's anything necessarily bad about what Mysql is doing, it seems pretty easy to me to state that there's a fundamental difference in "openness" between these two situations.

    8. Re:MySQL and Commercial Licenses by Trejkaz · · Score: 1

      It's called a dual license.

      Companies which buy the commercial license aren't violating the GPL by keeping their own code hidden because they accepted (and paid for) the commercial license.

      At the same time, people who want to bitch about commercial licenses being evil, can simply choose to accept the GPL instead, and then they are obliged to release their source if they ever distribute their binary.

      This isn't rocket science, it's merely commonsense...

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  74. Re:That's quite good by Anonymous Coward · · Score: 0

    Actually int with a return value to indicate execution status for script kiddies in theyre shells (ala linux fanboys that cant use WBEM industry standard for machine management)

  75. printf by Anonymous Coward · · Score: 0

    Not checking the return status of printf for errors looks like a defect to me.

  76. Attention Moderators! by Anonymous Coward · · Score: 0

    There is a bad Moderator amongst you - giving you a bad name! The nefarious moderator marked the above post redundant - Never checking the timestamp on the post. If they did. they would find that the above first post on the subject, and cannot be redundant!

  77. Re:How did you get modded interesting? by IANAAC · · Score: 1

    Your question is actually a valid one, but, come on... The names are PostgreSQL and Firebird.

  78. Oh by the way only a few random values here&th by Anonymous Coward · · Score: 0
    .

    (which ranged from a few uninitialized variables prior to use

    Are you out of your vulcan mind? That's instant GIGO!

    .

  79. Re:Duh! by cboyesen · · Score: 1

    It lacks stored procedures, yes. But that's certainly just the top it. I wouldn't even call it a real DBMS, as it lacks almost all advanced features: Transactions (begin, commit and rollback), simple sub-selects (or is that included nowadays?), referential integrity, triggers, and I could go on.

    But it's fast (due to the smaller scale), I'll have to admit that. But to compare the speed of MySQL to the large enterprise DBMS's is simply unfair as MySQL serves a different purpose.

  80. DMCA Offense! by mustangsal66 · · Score: 3, Funny

    By including the use of 'stdio.h' to which we (SCO) own the rights to, you have violated the DMCA.

    MrHanky, you now must either pay us for the use of said file ($699) or ceist and decist.

    We hold rights to your future earnings from your use of our file, and we option the rights to your childrens earnings.

    Thank you
    Daryl

    soo so sorry... It just popped into my head...

    --
    Why worry? Each of us is wearing an unlicensed "nucular" accelerator on his back.
    Sig changed for readability by G.W.
  81. What about code size? by Just+Some+Guy · · Score: 1

    The numbers in the article are too fuzzy to draw meaningful conclusions, but I wonder if there was a correlation between size of project and bugs/KLOC. Most comp-sci types agree that the difficulty of writing good code grows polynomially with a project's size and not linearly. So, is MySQL more bugfree than a commercial program of its own size, or one with a codebase 10 times larger? Maybe it was competing with 199 little bugless programs and one giant, riddled behemoth.

    I guess my main point is that the article provides some data but no information at all. The original study might've, but the summary could have said "MySQL is more purple than commercial code" for all the supporting evidence it gave.

    --
    Dewey, what part of this looks like authorities should be involved?
  82. Re:The definitions .. by scsirob · · Score: 1

    ..are in the header file but obviously you can't show those as they are belong to SCO...

    --
    To Terminate, or not to Terminate, that's the question - SCSIROB
  83. Re:Duh! by proj_2501 · · Score: 2, Informative

    there are foreign key constraints, but only on certain table types, and only in certain versions, and only on certain column types.

    on mysql 3.x, the table types that support foreign key constraints don't support transactions, and vice versa.

  84. Re:New unit - ignore by N+Monkey · · Score: 0

    OT: This is just a dummy post to cancel an accidental incorrect moderation. Sorry

  85. Which proprietary code? by Anonymous Coward · · Score: 0

    I'm sorry but this is a joke. They do not tell what proprietary code they looked at to make this conclusion. They do not even say if they compared this to other Commercial database solutions. Obviously this is good code but if its not compared against other databases I don't really see the point.

  86. Re:Duh! by Greedo · · Score: 1

    OMG! And Windows 98 didn't support fast user switching!

    If you are going to bitch about something, at least bitch about the latest version of it. MySQL 4.x has been out for over two years.

    --
    Tuus crepidae innexilis sunt.
  87. Commercial Counterparts is misleading by kpharmer · · Score: 1

    Which commercial counterparts? oracle, db2, informix? I seriously doubt it - and eWeek didn't say.

    Given that a database is a core software component I'd *expect* a far lower defect density than you'd typically find in an application or especially a desktop application.

    Good to hear that they're working on reducing their defects, but please - this is hardly a big deal.

  88. No Surprize Here by CalsailX · · Score: 1

    Used the early 4.0 stuff on a few projects only bug that bit me was a release where the bits to bind it to an ip address were borked. Checked it's mailing list and it was a issue that was resolved, and fix was in the next release also there was a workaround for the release I was using.

    Say what you want but it was solid backend for
    the program using in my case.

    --
    Great tools do only ONE thing, but do that ONE thing very, very well.
  89. I'd love to know what kind of algo finds errors by xutopia · · Score: 1

    anything open sourced in that domain?

    1. Re:I'd love to know what kind of algo finds errors by pHDNgell · · Score: 1

      I've used a program called ``findbugs'' for java code that was pretty impressive.

      --
      -- The world is watching America, and America is watching TV.
  90. Re:New unit ? by Anonymous Coward · · Score: 0

    4 funny?

    Wow... In that case.

    A pig fell in the mud.

    Hahahahahahaha!!!!

  91. Re:That's quite good by MrHanky · · Score: 1

    Yeah, it was supposed to be a joke. Too bad nobody else thought it was funny. But that's what you get after an all night hacking session. Or so I've heard. I was, of course, only playing games.

  92. SCO Has Just Announced by Bruha · · Score: 3, Funny

    That they're filing suit against MYSQL for violating their IP on code quality.

  93. no registration required. by Anonymous Coward · · Score: 0

    http://www.reasoning.com/pdf/MySQL_Defect_Report.p df
    http://www.reasoning.com/pdf/MySQL_Metric_Repo rt.p df
    http://www.reasoning.com/pdf/MySQL_White_Paper .pdf

  94. Re:no registration required. real links. by Anonymous Coward · · Score: 0
  95. Re:Duh! by Anonymous Coward · · Score: 1, Interesting

    Can be easily worked around. Who cares.

    Real DBAs care. The point is you shoudn't have to work around it.

    A pain in the butt, but in order to have stored procedures you need a procedural language

    Ahh the last cry of the desparate - "that's a stupid feature - nobody needs that!" Despite the fact that having to code around it in the app makes the whole thing slower (I thought MySQL was all about speed?) And increases development time.

    In order to have a trigger you have to have a procedural language.

    Another "that's a bogus feature" excuse.

    Any foreign key constraint may be expressed as a join and this is usually considerably faster.

    Do you even know what a foreign key is, or how it's used? It certainly doesn't sound like it. "You don't need the database to ensure the integrity of your data, because you can just check it manually!"

  96. Re:Duh! by cayenne8 · · Score: 1

    I think MySQL is good for a website and all, for reasons listed above. If I were looking for a database a little more robust, and that has more in common with the commercial leader, Oracle...I'd go for PostgreSQL. Has transactions, procedural language..etc.

    --
    Light travels faster than sound. This is why some people appear bright until you hear them speak.........
  97. I learned this concept in CS I freshman year... by zerofoo · · Score: 1

    It's called "PEER REVIEW" and it does make your code better. Closed-source software vendors may want to take note.

    -ted

    1. Re:I learned this concept in CS I freshman year... by thebatlab · · Score: 1

      Who's to say closed source can't/doesn't do this? In a company, there may be many projects on the go and many other developers to pull knowledge from. Once a project is nearing completion (and even throughout it's entire lifecycle), the code can be looked over by other people at the company either at formal code reviews or informal "hey, take a look at this and let me know what you think" reviews. It may not gain the scale the open source peer reviews *could* generate but it still is effective nonetheless.

      Remember, there are lots of forms of closed source software and they aren't all evil.

    2. Re:I learned this concept in CS I freshman year... by Anonymous Coward · · Score: 0

      Wow! Brilliant idea! Why didn't we do that at Microsoft, Autodesk, and GE during the last 10 years? Oh wait, we did. Clueless a**!

  98. Kinds of errors -- it's Reasoning, Inc. again by Anonymous+Brave+Guy · · Score: 5, Insightful
    Not only is it hard to define defect (and it is very obvious that some defects are worse than others), but this code review sounds like it only spots "grammatical" or style errors in the code.

    It does indeed sound a bit like that, and with good reason. If you notice, the "indepedent review" was carried out by Reasoning, Inc., and we've heard of them before in these parts.

    For the benefit of those who haven't seen this trollfest^H^H^H^H^H^H^H^H^Hstory in its previous incarnations, Reasoning's services spot what some people call "systematic" errors, things like NULL pointer dereferencing or the use of uninitialised variables. As many people note every time this subject comes up, any smart development team will use a tool like Lint to check their code anyway, as a required step before check-in and/or as a regular, automated check of the entire codebase, and so any smart development team should find all such errors immediately. IOWs, it's grossly unfair to compare open and closed source "code quality" on this basis. Any project that has errors like this in it at all isn't serious about quality, and it shouldn't take an external study to point this out.

    Serious code quality is not dictated by how many mechanical errors there are that slip through because of weaknesses in the implementation language. Rather, it is indicated by how many "genuine" logic errors -- cases where the output differs unintentionally from the specifications -- there are. Of course, no automated process can identify those, but to get a meaningful comparison of code quality, you'd need to investigate that aspect, rather than kindergarten mistakes.

    There are other objections to their principal metric as well. For starters, source code layout is not normally significant in C, C++ or Java, so any metric based on line count is going to be flawed at best. But the big objection is that they're talking about childish mistakes, and comparing supposedly world class software based on childish mistakes isn't helpful (except to dispel the myth that some big name products have sensible development processes).

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  99. Free vs. Open? by Doc+Ruby · · Score: 1

    How does the code quality of the free MySQL v4.0.17 compare with the priced MySQL v4.1? They're both open source (source code downloads), but 4.1 has a proprietary non-GPL license with a price attached. What do you get for your money, other than "new features"?

    --

    --
    make install -not war

    1. Re:Free vs. Open? by Anonymous Coward · · Score: 0

      I think you need to reread the dual-licensing parts of the mysql website.

    2. Re:Free vs. Open? by Doc+Ruby · · Score: 1

      Edify us, Anonymous Coward. Leverage your investment in rereading the license to answer a question, rather than just dryly sniping from behind a mask.

      --

      --
      make install -not war

    3. Re:Free vs. Open? by Zeriel · · Score: 1

      Read the pages again, kid. Both are offered under GPL -OR- commerical licenses, depending on use--as in, both are licensed the same way.

      I'd imagine the code quality of 4.1 is lower than 4.0.17 by this metric, as it's pretty clearly stated that 4.1 is a development branch and 4.0 is a production branch elsewhere on the website.

      --
      "America has done some terrible things. But I know that Americans don't cheer when innocents die." -Dave Barry
  100. RTFA by Anonymous Coward · · Score: 0
    Anybody care to enlighten me on how they came up with that number?

    Hint: it is near the bottom

  101. Re:Duh! by Rich0 · · Score: 1

    I was under the impression that the InnoDB table type in MySQL supported transactions - in the real sense of the word. (I was shocked to read the user manual where the MySQL developers explained why transactions were overrated...)

    I'm all for databases having an option to turn off transaction tracking for cases where you have high loads and you don't need the protection it provides. However, I think that most applications would benefit from transactional support.

    Right now all MySQL is doing is tracking hits on my website (hmm - maybe if I posted the URL I'd get a free load test care of /.), so I could care less about triggers/etc - though obviously they are important. I do think that by using InnoDB I'm covered as far as transactions go, however.

  102. amazing by cplvr · · Score: 1

    So its useful for what it was intended for?

  103. Re:Duh! by cboyesen · · Score: 1

    My point was that MySQL not only lacks transactions and sp's, it also lacks quite a few other features which are commonly used by other (real) DBMS's.

    But as far as the possibily to turn off support for transactions, I think you're absoluty right.

  104. choosing mySQL by phiala · · Score: 1
    I'm the sole linux/open source user and advocate in a confirmed bunch of windows users. Granted, most of them are windows users because that's what everyone else is using, not because they need or want that specifically.

    I have a reasonably nice mySQL database set up to manage my research data. It's set up so that anyone in-house can access it using a web browser, extract reports, etc. I think it's pretty slick, and it's orders of magnitude better than what they were using before I got here. (That would be spreadsheets, all in different formats, and all with different coding of entities. Sheesh!)

    Anyway, someone else in the same building is collecting the same kind of data, identical format, just in a different region. He's got his tech building a new database in Access. As far as I can tell, this duplication of effort is just because they both have Access as part of MS Office. I keep trying to encourage them to just piggy-back on my database. Because of the web server aspect, they don't need to be running linux or mySQL themselves, so there's no "geek factor" involved. Neither of them already know Access, so whatever they do, they'll be learning it from scratch.

    My feeling is that this is a wasted effort on their part. The only downside that I can think of is that I'll end up supporting their data as well as mine, since we have no IT support. From their point of view, there's no real drawbacks that I can think of, but they're still very reluctant.

    Anyone have any ammunition I can use to support my case?

    --
    I prefer to be called Evil Scientist.
    1. Re:choosing mySQL by Anonymous Coward · · Score: 0

      Anyone have any ammunition I can use to support my case?

      Sorry to say, you've already given it. Any reasonable person would agree with your logic, and unless there were some other overriding consideration, would find the case to be compelling.

      Of course, people are driven by many factors other than reason when making decisions. That seems to be already the case here, to judge by the disinterest you're reporting.

      If you really want to take a principled stand on behalf of your organization, you need to find an ally who cares about infrastructure management. But since you don't even have IT support, it's hard to imagine that anyone at a senior level has any concern for such things. It's their loss, but their privilege.

    2. Re:choosing mySQL by Anonymous Coward · · Score: 0

      My advice is that you learn Access. Knowing another database can only help your resume. Forget about trying to improve the "big picture" for your organization, you'll never be rewarded for it. Just my 2 cents.

    3. Re:choosing mySQL by phiala · · Score: 1
      My advice is that you learn Access. Knowing another database can only help your resume. Forget about trying to improve the "big picture" for your organization, you'll never be rewarded for it. Just my 2 cents.

      I've used Access, although not recently. I don't have the time or inclination to go back to it right now, learning additional software isn't part of my job except insofar as it affects my ability to perform my main research mission.

      I'm not trying to improve my organization, but rather my own life. If they use the data management solution I've already cooked up, then it will save them time, but it will also greatly reduce headaches later, when we each have large datasets and want to compare results. The mySQL web solution is easily accessible in-house, and I already have standard queries "canned" for simplicity and repeatability, plus I have the whole mess linked to my favorite stats software.

      A year or two down the road, I don't want to have to be spending all my time (or my support staff's time) reformatting everything one way or the other so that we can compare data.

      There's no hope of improving the "big picture" for my organization, there's even been articles on slashdot about the overall hopelessness of the situation recently... I just want my life to be easy!

      --
      I prefer to be called Evil Scientist.
    4. Re:choosing mySQL by Anonymous Coward · · Score: 0

      This is I hope similiar to a situation I am faced with.... The company I work for will not put up the $ for a portable barcode reader that I could use to scan the incoming boxes when I receive them... but insist that I write down each and every box that I receive in. Out of all the loads I receive there is only one product that doesn't have a machine readable way of entering the data into a db or other machine capable of verifying the results. But in the company's defense I can also say that I probably am the only person in house that could implement a barcode system that would save man hours instead of having to double check everything that comes in house. (once in the shipping /receiving dept and once in the accounting dept. (the latter was probably set up so I don't screw the company out of miscounting 2-3 boxex when I receive that product in.)
      I have "automated" the procedure somewhat by creating a paper trail by using an adding machine that actually keeps track of the number of units that I enter into the adding machine. But all this seems SO 20th century... How can I convince management to spend roughly $1,000 - $1,500 to get the systems into this century?

  105. Ummmm.... by psyconaut · · Score: 1

    I really don't know that I understand (or even agree with) the quality statement.

    I routinely work with DB2 UDB and Sybase ASE, less often with Oracle. All of those I can be assured of recovery with and all I would be comfortable deploying in business environment.

    I keep MySQL on my laptop because it's a quick'n'dirty database for me to play in and prototype with. I let customers (I'm a gun-for-hire) deploy it for non-business-critical applications such as web site backends, mailing databases, etc. Stuff were rollbacks and point-in-time recovery are less critical.

    So given the above, how can you really claim the code is really better "qaulity"? It's like comparing apples and oranges. A Toyoya Corolla is certainly a well built and reliable car, but comparing it to a Hummer or a Porsche is a bit more than subjective.

    Maybe the 'quality' they referring to is really just nice indents and comments ;-)

    Just my 2 cents (Canadian),

    -psy

  106. Code Quality by octogen · · Score: 2, Informative

    In my opinion, there is no substantial difference in code quality between open source software and proprietary software.

    I have seen a lot of very buggy commercial software (including nVidia drivers, IBM's LANManager Services for OS/2, lots of Microsoft's services and utilities in Windows 2000 (for example, "TCP/IP Helper Service") and Netscape 4.7).

    On the other hand, I have also seen very bad code quality in open source products - for example, GTK+ (actually, the really bad thing about GTK+ is primarily its install scripts, makefiles and such). Compiling and installing GTK+ on anything else than on a GNU/Linux-machine is some kind of an adventure, while its commercial counterpart, Qt from trolltech, can be compiled quite easily.

    - I set the PKGCONFIG env variable before running 'configure'. It worked quite well until line 27.000 (or so) in 'configure', where the variable's content was suddenly gone (BTW, I really dislike debugging 28.000+ line shellscripts). I tried to 'configure' with bourne shell and with korn shell 93.

    - It assumes, you have Perl installed (if it's not in your PATH, 'configure' creates funny things like "#! -w" instead of "#!/path/to/perl -w"). The error message produced due to this bug was something like '/usr/bin/env: no such file or directory' - because the perl script was directly started using /usr/bin/env. Kind of confusing %-)

    - 'configure' forgot to add '-fPIC' to CFLAGS, for this reason all shared libraries where broken. I had to add this option manually.

    - Nothing works with 'make'. I had to install 'gmake' (GNU make) instead.

    - The actual source code of the core libraries finally compiled, after I had upgraded to gcc 3.3.2. The source code of the 'demo' programs was totally broken, and gcc refused to compile it - once more I had to change the makefiles manually.

    -----

    One or two weeks later I compiled trolltech's Qt library on the same computer. It was as simple as './configure --platform=platformname && make && make install'.

    Why do I need to debug 28.000+ lines of shellscript-code and a lot of makefiles, why do I need to install gmake, pkgconfig (by the way, pkgconfig and most other things in GTK+ don't work well if you don't install everything to /usr/local, which is the default location) and Perl 5, just to compile some C/C++-Code?

    Qt does mainly the same as GTK+, but it simply compiles, using only shellscripts, 'make' and a C/C++ compiler.

    Another example regarding code maturity (rather maturity than quality, notice the difference :-) is Sun JVM vs. GCJ's libjava. I compiled a very complex multithreaded application using GCJ; it worked fine on uniprocessor machines, but it randomly deadlocked on my multiprocessor server. Finally I found out, that libjava is broken on SMP machines. That doesn't mean, that libjava's code quality is bad; but it still means, that some other Java-Libraries (those of some virtual machines) are more mature, and possibly better tested.

    -----

    Some fundamental things about Software:
    - The more people read the code, the more people can potentially find and fix bugs (good about open source).
    - If a lot of people are allowed to write the code, somebody has to coordinate the work of all these people. Lots of different versions of the same module, written and/or modified by lots of different people need to be combined or coordinated otherwise (bad about most open source projects, because hardly somebody knows, how trustworthy anyone of the developers is; good abous some closed source projects (e.g. Trusted SunOS kernel, IBM SLIC kernel and other trusted code), because only a small group of really good programmers is allowed to write or modify code).

    Conclusion: It's good to have only a small group of 'trusted' developers, who write or modify the code, and then to let everyone else read and verify the code.

    regards,
    octogen

  107. Re:Duh! by proj_2501 · · Score: 2, Informative

    "OMG! And Windows 98 didn't support fast user switching!"

    Your analogy limps. Did most other operating systems support fast user switching in 1998? No, and especially not Windows' biggest competition on the desktop.

    On the contrary, PostgreSQL has had decent foreign key and transaction and subquery support since 1999.

    MySQL STILL doesn't support subqueries in a production version. Foreign keys are only supported by one table type. It doesn't support views. I could go on, but if you really want to see the differences, look at mysql's crash-me comparison chart. The differences that aren't cosmetic, even talking the last MySQL alpha, are pretty annoying.

  108. If Mysql is that good.... by John+Hasler · · Score: 1

    ...just think how much better Postgresql must be.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  109. Interpretation by p3d0 · · Score: 1

    Fewer bugs per line of code means either fewer bugs or more lines of code. So if you blather on using long-winded, repetitive, cut-and-pasted code, you'll score highly on this scale.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  110. Re:Duh! by Zontar+The+Mindless · · Score: 1

    You're wrong on 3 of those 5 counts. Foreign key constraints have been available for ages (with InnoDB tables); subqueries were implemented in 4.0, updates on joins ditto. Stored procs will be implemented in 5.0. Not sure about triggers, but I'd be surprised if they don't come in 5.X once stored procedures are solid.

    --
    Il n'y a pas de Planet B.
  111. Re:Duh! by Zontar+The+Mindless · · Score: 1

    What braindead excuse for a moderator modded this as a troll? The dude is spot on (except he failed to mention that MySQL added support for subqueries in 4.0), and I hope somebody with a clue will mod him up.

    BTW, I know of at one project implementing stored procedures for MySQL in LUA and PHP. Either of these is a far better choice for a procedural language than Transact-SQL. (IMO arivanov is much too kind here, as I think that T-SQL makes Fortran77 look like a decent language.)

    --
    Il n'y a pas de Planet B.
  112. the other smatch by frostman · · Score: 1

    There is a chain of discount supermarkets in Hungary called Smatch. Probably all over Europe as well, not sure. I believe the company is Belgian. In Budapest there's about 180 of them, if I remember correctly.

    Just some off-topic trivia for you, since it's your project. ;-)

    --

    This Like That - fun with words!

  113. Great, now what by Nuclear+Elephant · · Score: 1

    It's a really clean 10 lines of code...now if they can implement something to make MySQL useful like subqueries this article will be worth reading.

    1. Re:Great, now what by Anonymous Coward · · Score: 0

      Have you tried using 4.1 or higher?

      mysql> SELECT sname FROM services WHERE sid =
      (SELECT sid FROM branches_services WHERE bid =
      (SELECT bid FROM branches WHERE cid =
      (SELECT cid FROM clients WHERE cname = 'Sharp
      Eyes Detective Agency')));
      Will work just fine.
      1 row in set (0.28 sec)

    2. Re:Great, now what by Anonymous Coward · · Score: 0

      I have been using the new version for about 4 months. It's still the beta version, but I have had 0 problems with it. Subqueries work great. The plan is to implement (within 2 years) the full SQL99 standard. Triggers (stored procedures), and views are on the list of things to be added next. Unions and intersections will come after that. Apparently these things have already been implemented in design versions (and work), but they will not release it till they have performance tuned it (and they do a certain amount of regression testing).

  114. If only by Anonymous Coward · · Score: 0

    Slashdot were to read their own articles, they would know this is a repeat. Slashdot, where's the quality?

  115. Re:Measurements -- Fixed! by Anonymous Coward · · Score: 0

    /*
    Undoubtedly()
    {
    when();
    you = measure(quality);
    in.defects();
    per->lines_of(code, anyone);
    can = write(good, solid, code);
    }
    */

  116. Don't tinker with a good thing! by Electrawn · · Score: 1

    Do Not Move Gemstone from Oracle! You have severe stability problems with play.net at times and I bet its unrelated to Oracle. I don't know about the games but the web site is tied to Oracle by the function calls.

    Netcraft says your site is using MS 2000. There is your problem. Move to an OpenBSD solution first on the frontend and I'd keep Oracle at the backend.

    Remember the saying goes: "No one got fired for buying IBM." Also the same for Oracle. But...

    I'd choose a PostgresSQL solution. Toss it in a sandbox and use it for the forums per-se and see how it goes.

    My advice costs a premium and basic membership. (wink)

    GS4 Player and /. reader.

    1. Re:Don't tinker with a good thing! by nsxdavid · · Score: 1

      The problems with the web site are alllll IIS. In particular how it interfaces with Oracle, but not Oracle's fault. We've worked through a lot of them, but its like exercising demons. You never now if its gone really, you just wait to see if their head spins and pea soup hits the wall.

      --
      David Whatley
  117. Re:Duh! by j-pimp · · Score: 1

    Well Debian Stable is not exactly the most popular linux distro. Yeah it is a good distro, debs rock, I run fink on panther. However, I think their are many mosre Redhat and SuSE mysql servers out their and that would be a better judge of deployment. Also are we talking servers deployed in the last 6 months or all servers, cause I'm sure for many people Redhat 7.x is good enough cause it was the latest and greatest when the server was built.

    Finally, most debian users are running unstable.

    --
    --- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
  118. Re:"6 times better" by Anonymous Coward · · Score: 0

    Make that "6 times fewer bugs found...".

  119. Re:Duh! by Anonymous Coward · · Score: 0

    What braindead excuse for a moderator modded this as a troll?

    Probably one that disagrees with you. Just like me.

    He's NOT spot-on - he's got a bunch of excuses (typical for MySQL zealots) about how his favourite piece of crap^H^H^H^Hsoftware doesn't 'need' features (that everyone with a clue says are needed) because workarounds exist.

  120. Re:Duh! by pyite · · Score: 1

    I wouldn't say most debian users are running unstable. I run unstable on my TiBook and unstable on my workstation, but all my servers run stable. Important things in unstable are known to break. I haven't had stable ever break on its own.

    --

    "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

  121. I'm still trying to figure out... by reverendslappy · · Score: 1

    ... How companies like this "Reasoning" sell people on this bullshit. Do they actually get paid for writing this pointless tripe?

    What a joke. How about this:
    I'll write 15 lines of code that do absolutely nothing right now, in a language of "Reasoning's" choice, and it'll completely bug-free. Does that mean I'm infinitely better than mySQL? Despite the fact that my code does absolutely nothing???

    Please. Any of these bullshit whitepapers that don't take feature set into account are WORTHLESS.

    Reminds me of that line in Tommy Boy(?): "Hey, if you want me to take a dump in a box and mark it guaranteed, I will. I got spare time."

    1. Re:I'm still trying to figure out... by Anonymous Coward · · Score: 0

      Oh boy. Your just pissed off because some free software fared better than contents of Billy Boy's box.

    2. Re:I'm still trying to figure out... by reverendslappy · · Score: 1

      No... This one isn't quite as ridiculous as the "IIS Has More Market Share" study, but it's still junk. A shitty study is a shitty study, period.

    3. Re:I'm still trying to figure out... by Anonymous Coward · · Score: 0

      Trying to mimic a semblance of impartiality here, by bashing a study that defends your own church?

  122. Re:Duh! by prockcore · · Score: 1

    MySQL STILL doesn't support subqueries in a production version.

    4.x is a production version. His analogy is perfectly valid, people are complaining about mysql 3.x when 4.x implements most of what they were complaining about.

  123. Re:"6 times better" by roman_mir · · Score: 1

    They should replace the term "commercial" with "closed source", because Mysql is also a commercial product and what makes it different is the open source model. - They should replace the term "commercial" and the term "open source" to the actual name of the database. Where is the proof that any difference in quality of the code is at all related to the fact that the other database was closed source?

  124. What a load of bs by roman_mir · · Score: 1

    Despite the uncovered bugs, Reasoning concluded that Uppsala, Sweden-based MySQL AB's code quality was in fact six times better than that of comparable commercial, proprietary code. - they decided this after looking at one "commercial" - closed source database and comparing it with one open-source (also commercial) MySQL? Talk about self-serving use of statistics! Sure, there is a correlation, but where is the causation?

    whatever.

  125. dude, where'd you get your facts? by kpharmer · · Score: 1

    > As a matter of fact, until Oracle's release of 10g, MS SQL beat all commercial offerings in the TPC benchmarks.

    pardon?

    which benchmarks? tpc-c, tpc-h, tpc-r, tpc-w? It actually has some strong entries in tcp-c (oltp) but that's about it. DB2 and Oracle are all over it most of the time - and not just oracle 10g, but 9i as well.

    I do agree with you though - that sql server is about the easiest database to develop on. I still won't give it much credit here though - the fact that it *isn't as bad* as oracle, et al isn't much to celebrate.

    And when it comes to supporting it in a production environment, that's when it really begins to stink.

    1. Re:dude, where'd you get your facts? by I8TheWorm · · Score: 1

      From here, although again, now that 10g is included in the benchmarks, Oracle wins again. Here's an article that described SQL Server beating Oracle before 10g's release though. MS SQL Server had the top spots for almost a year on tpc.org, if I remember correctly. And that was in TPC-C, TPC-H, and TPC-W, although I think Oracle still won on the TPC-R. Admittedly, I think some of that was due to their porting to 64 bit using an unreleased-at-the-time 64 bit Windows 2003.

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
  126. Re:Duh! by Anonymous Coward · · Score: 0

    "You don't need the database to ensure the integrity of your data, because you can just check it manually!"

    I'll just redundantly repost what you said, because that part SCREAMED in my mind when I saw that. To the parent: go back to your comma separated files and leave the big boys alone...

  127. The bug density looks very similar. by Inoshiro · · Score: 1

    Both functions fail to initialize the integer i before performing an operation on it :)

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
    1. Re:The bug density looks very similar. by Dun+Malg · · Score: 1
      Both functions fail to initialize the integer i before performing an operation on it :)

      Yeah, I couldn't decide initially whether to fix those or use the uninitialized int's as the example errors, so I chose the third (and worst) option: forgetting to do anything with them at all. Good thing I don't program for a living.

      --
      If a job's not worth doing, it's not worth doing right.
  128. Re:Duh! by proj_2501 · · Score: 1

    4.1 is the first version of MySQL to fully support subqueries as in the SQL standard, at least as described in the docs.

    The latest PRODUCTION version of MySQL is listed as 4.0.17 on their front page.

  129. Re:Duh! by arivanov · · Score: 2, Informative
    Do you even know what a foreign key is, or how it's used?

    Yes I do. And I have revived and made perform to to spec god knows how many cretinous foreign key designs by a combination of

    • removing the foreign key
    • using join for selects to guarantee that only records with valid referential criteria are retrieved. This is equivalent to having a foreign key constraint in the sense that apps do not see any records that do not obey the foreign key contsraint.
    • garbage collector running in a different thread or often different machine that goes around and kills zombies whose referential integrity has been violated.

    The difference between this and a classic foreign key constraint is that this approach always uses efficiently multiple CPUS while a foreignkey is usually a single CPU bound task, it also maintains much less large scope (global or per table) locks and is generally faster for retrieves by a factor of between 10 and 100 times. Due to the TPC vendors have overoptimized join at the expense of many other different things in order to have nice benchmarks..

    And in btw, learn the difference between a "real DBA" and a database designer. I mean the one that is the justification for the 20+% salary difference.

    Cheers (lessons start at 500 per hour),

    --
    Baker's Law: Misery no longer loves company. Nowadays it insists on it
    http://www.sigsegv.cx/
  130. Re:Duh! by Anonymous Coward · · Score: 0

    500? Ok chump, here's my 500 pennies. Seems about the right salary for someone who likes to reinvent the wheel when ever he/she feels like it.

    And BTW Mr "real" DBA. Oracle will split tasks between multiplt CPUs just fine thanks.

  131. Coding Defensively by crucini · · Score: 1
    but it's generally better to program defensively anyway. All it takes is for some bozo to change your if condition and all of a sudden you're segving all over your customer's important data.

    I'm not sure I agree. If speed is important, and you know the pointer isn't NULL due to earlier checks which the scan tool can't see, you might not want to throw in extra checks. Of course, you'd need a clear way to document the perimeter of checked-ness.

    If speed's not important, why not use Perl or Java or something? High level languages protect against this kind of mistake. Of course you may be using C simply to use libraries that are only available for C.
    1. Re:Coding Defensively by Greyfox · · Score: 1
      I seem to recall that a couple of the code scanners I looked at allowed you to tag stuff to avoid getting flagged for just those reasons. You could attach a tag and a comment along the lines of "This will never be null because this function will never get called if that pointer is NULL. If you're writing a library and you don't expose your entire interface to the world, that can actually be pretty safe.

      I'm getting fond of lisp again. It's garbage collected and has a great object system. I go through love/hate cycles with it where I fall in love with its basic language capabilities then I look at actually doing anything in it and realize that there are no standard ways to do socket access, no standard ways of doing threads with it, no standard method of accessing system level resources with it and that the various implementations may or may not be thread safe. Then I start hating it and go back to C...

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    2. Re:Coding Defensively by autopr0n · · Score: 1

      If speed's not important, why not use Perl or Java or something? High level languages protect against this kind of mistake. Of course you may be using C simply to use libraries that are only available for C.

      You can use C libraries in Java, and I'm puretty sure Perl and Python and basicaly anything else as well. Sometimes it takes a bit of extra work (like wrapping it up in a windows DLL for Visual Basic in the extreme case) but generaly it's not that hard.

      --
      autopr0n is like, down and stuff.
    3. Re:Coding Defensively by crucini · · Score: 1

      A friend of mine has the same view on lisp. He's a lisp fanatic but doesn't use it for anything real. He feels there is something fundamentally wrong in the lisp community that has prevented it from buiding good standard libraries. Some combination of NIH, elitism and ego.

  132. Re:Duh! by AndyElf · · Score: 1

    Yeah, maybe. That's after they managed to surpass recommended limit of 1e6 rows per table (just in case it corrupts). And even in current incarnation they still don't (always) get ANSI joins right. What is even funnier, they sometimes don't get their own syntax right either. I had a couple of cases when I ended up having to *emmulate* a join via UNION SELECT with EXISTS/NOT EXISTS!

    As should have been expected this thread gets all lost in "MySQL lacks [insert many of ACID and a bunch of other features]" and "who ever needs this stuff anyway!" posts. Which is common for any thread about MySQL. It is all very personal -- you either like it or you don't basically. It is like vi vs. EMACS of databases argument. And as always our wonderful geek crowd will never ever agree on anything here. Just like in the UserLinux GNOME vs. KDE debate, and a ton of others.

    Not to be critical -- it just *is* that way and will hardly change, not in our lifetime, at least.

    --

    --AP
  133. Re:Duh! by I8TheWorm · · Score: 1

    True. I'll say this though, any RDBMS offering is better than ISAM (which I still have to report off of here.. paged databases in 2003, wow!). I just got my Cache disk in the mail this past week, so I'm going to spend some time playing with the OODBMS model, see what all the hoopla is.

    --
    Saying Android is a family of phones is akin to saying Linux is a family of PCs.
  134. Databases.... by Anonymous Coward · · Score: 0

    All your databases are belong to MySQL!

  135. Questionable Study by Anonymous Coward · · Score: 0

    There are at least some things questionable on this study:

    a) MySQL is not a good example of Open-Source Development. It is a good example of
    'Cathedral-style' development (with the cathedral having its windows opened, though).

    b) Whether source has x or y bugs per line is not the most interesting thing when it comes to open-source.
    How consistent in design and implementation some piece of software is may be more interesting - especially if bugs are not only
    fixed by the original author (or just in case a moose stampede runs over the orignal author).
    Anyone who made a look into MySQL source code
    does not need to know more ... it has grown to
    yet another crufty piece of software over the years.

    c) The question what is a bug and what is not is
    'questionable' in any non-trivial software.

  136. Re:Duh! by arivanov · · Score: 1

    Err... What you miss is that that foreign key transactions are what it reads on the label - transactions. They are done end to end now, hear and holding the relevant locks. At the same time if you do them by split join/garbage collection you can move the cleanup to idle hours. This quite often is the factor that may push an otherwise out of spec transaction system back into spec.

    Of couse this is all valid if you can replace the existing selects by selects with joins. In most nowdays projects where the database access is abstracted and unified as load/store methods for objects this is not a problem.

    --
    Baker's Law: Misery no longer loves company. Nowadays it insists on it
    http://www.sigsegv.cx/
  137. MOD PARENT DOWN!!! by Anonymous Coward · · Score: 0

    "Read for yourself" link is a goat!

  138. Shouting... by Anonymous Coward · · Score: 0
    In the olden days it was ALL-CAPS.

    Now it bold.

    Slow down buddy, or you might get a cardiac infarct...

    Well at least your family will enjoy a nice large cheque from Bill and Steve.

  139. Re:Duh! by Anonymous Coward · · Score: 0

    Wow, you are confusing foreign keys with subselects. I've never seen that mistake before.

  140. Errors not following standards by peope · · Score: 1

    Style errors could be errors that work for a given platform at a given configuration. But would not work on another one.

    Unitialized variables is often a mistake where you assume than an int, as an example, is zero if you dont init it. True on many compilers, but not on others. ISO C standard states you must initialize the variables.

    Such an error might or might not raise an error or a warning by the compiler.

    Standard compliance really hits you in the nose when you try to compile stuff written for a linux distro and you want to use it on FreeBSD.

    1. Re:Errors not following standards by B'Trey · · Score: 1

      While I have no argument with any of the points you made, I personally wouldn't call those things "style" errors. I don't see not conforming to standards as a particular "style" of programming.

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    2. Re:Errors not following standards by Anonymous Coward · · Score: 0
      ISO C doesn't allow a compiler to give an error for an uninitialized variable, it will simply have an undefined value. However, any compiler can generate any warnings it feels like (as long as it doesn't reject the code), and good compilers do warn if a variable might be used before it's been assigned to.

      As far as standards, GNU/Linux is very close to POSIX, except in a few cases where Linus has unfortunately decided that POSIX is brain-damaged. How close is FreeBSD?

  141. Re:Duh! by kpharmer · · Score: 1

    > And even in current incarnation they still don't (always) get ANSI joins right.

    Yep, it's great that they still have some of their legacy join syntax working - otherwise multiple outer joins would have to sometimes be done with temp tables and multiple stages!

    > It is all very personal -- you either like it or you don't basically. It is like vi vs. EMACS of databases argument.

    Nah, it's more like notepad vs vi or EMACS: with the vi/EMACs crowd trying to educate the notepad crowd regarding the value of undo, syntax-checking, etc. Or in this case support for ansi-sql, transactions, views, unions, subselects, etc.

  142. php by Anonymous Coward · · Score: 0

    lol, sort of funny given how often is used by php web apps that are crap, regularly featured on bugtraq. Can't blame MySQL for that though.

  143. Re:Duh! by kpharmer · · Score: 1

    Sounds like a perfect mysql strategy - you don't need all the extra 'fluff' in the database - because you don't mind getting garbage into your database. Cleaning it up later while the database is idle will also generally be faster.

    Makes perfect sense - if you don't mind invalid data. Also note that performance problems with referential integrity is generally a sign of bad design - you should have (in general) neither locking nor performance issues with this built-in protection.

    Also note: this sounds a lot like arguments I remember from the early 80s - in which the old spahgetti programmers using flat files were quite upset that we would dare to create data stores with built-in protection against invalid data.

    Of course, the reason that we did this is that they continuously tossed garbage into the database. Most of them considered themselves 'designers' - but failed to understand the economic value of the data - and that given enough time they were certain to screw it up. Instead they focused on performance.

    So here we are with mysql - catching up to 1981...

  144. Lint Recomendations by DonGar · · Score: 1

    A few years ago, I looked around and found that there weren't very many good lint like tools for C++ code. What would people recommend now?

    In particular, I'm thinking about a very large source base (the Linux kernel is usually built along with the rest of the system), written in C++, but with a lot of source files in XML or custom formats that are processed via various build time programs in a variety of languages (TCL, Perl, Java, Python).

    Multiple executables are produced, and some very tricky custom systems are used for memory and thread management.

    --
    plus-good, double-plus-good
  145. It probably wouldn't be bad on modern GCC. by Inoshiro · · Score: 1

    The modern C spec says that integer variables default to 0, but in the interests of portable code, explicit values are still better.

    I wouldn't worry about it, either :) I think your point still came across ;)

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
    1. Re:It probably wouldn't be bad on modern GCC. by metallidrone · · Score: 1

      > [snip] The modern C spec says that integer variables default to 0 [/snip]

      Are you sure? Even stack-allocated variables? And we're talking about C, not C++, right? I recall that stack-allocated storage is not initialized in any case (since it requires extra instructions to clear it). Static storage, on the other hand, is promised to be initialized, since that's recorded at compile time (i.e., is stored in the binary).

  146. Re:Duh! by Anonymous Coward · · Score: 0

    "Once again, MySQL is great. I use it. However, it is not enterprise."

    This depends, of course, on the enterprise application. For many situations, you are correct. For many other situations, however, mySQL would fit like a glove.

  147. Re:Duh! by Zontar+The+Mindless · · Score: 1

    It's not a matter of "disagreement" -- it's a matter of *misrepresentation*.

    I get really tired of (among other things) people saying that MySQL doesn't support transactions when in fact it has done so for several years and it's just that some people are just too lazy to learn about InnoDB tables.

    The parent poster even said himself that MySQL isn't suited for every purpose under the sun, so I don't see where you get off talking about "zealotry", either. Given that you mischaracterise what the parent poster said *and* posted AC, I'd say it's more likely a case of *your* (anti-MySQL) zealotry.

    --
    Il n'y a pas de Planet B.
  148. yeah by Anonymous Coward · · Score: 0

    And mySQL offers 1/6th of the functionality that commercial products offer.

  149. Re:Duh! by arivanov · · Score: 1

    What you are missing is that in 1981 the languages in use were flat structured and addressed the database from all over the place. What happened in the 1980-1990es was that the databases got a 1981 level solution - Fortran 77 level like languages with abnoxious syntax (ever tried to look at a full parser for SQL? Try :-)

    The difference between 1981 and 2003 (for big projects) is that the database is usually touched only in an object create, store, retrieve and delete methods and in rare cases one or two more application specific methods.

    As a result, instead of it being accessed all over the place the access is limited and work is done mostly in the application. Using foreign keys, triggers, stored procedures, so on under these conditions makes sense only under a limited set of circumstances. You are much better off splitting the tasks and doing them at app level. You can also do stuff which is extremely expensive to do at a PSQL/TSQL level. For example foreign key is nothing but an example of a simplistic reference counting with the reference values being limited to zero and non-zero. It is fairly obvious that in many cases where a foreign key has been used on data that is loaded into a list of various objects you actually need a proper reference count (and a proper garbage collector to kill of dead references). So on so forth.

    In btw, do not understand me wrong. I have no objection to using foreign keys for the rare cases where you have several trained baboons using MS access or even SQL queries directly. What I have to note that this usage is slowly descending to the red book of endangered species and the usage of interest is the one from an OO language. There you either have to deliver the relevant performance, because 90% of the developers do not give a flying fuck about having their database access optimized. All they care about are abstracted store, load, update, delete.

    So you have the choice. You either get involved with the developers process and work with them to get these store, load, update, delete optimized which usually ends up in moving PSQL code to C++ or Java at the client end. Alternatively they tell you to FUCK OFF and move to a persistent object store like prevailer. And they are bloody right.

    --
    Baker's Law: Misery no longer loves company. Nowadays it insists on it
    http://www.sigsegv.cx/
  150. Re:Duh! by kpharmer · · Score: 1

    > The difference between 1981 and 2003 (for big projects) is that the database is usually touched only in an
    > object create, store, retrieve and delete methods and in rare cases one or two more application specific methods.

    It's really not that much different today than it was 20 years ago: we knew then as well as today to isolate the database interface. It was more difficult then (they were often just paragraphs in COBOL)- because the languages weren't generally as sophisticated as they are today. The real problem occured over time - over 5-10 years of modification with new technologies - the isolation would typically break down. Today the same is true - you build your app layer in Java - and then someone wants to connect their .NET application to it. Now you're screwed.

    Another reason to avoid trying to perform this code in the application layer - is that in the db layer it is declarative - easily created, easily enforced, 100% guaranteed to work, and easily tested. Do it in the app layer and you will frequently screw it up. Sure - maybe *you* are good enough not to, but 95% of the folks out there aren't.

    Another reason to avoid driving the database design from OO - is that OO has only caught up with transactions in about the last ten years. It still hasn't caught up with decision support. So, the developers can bloody well encapsulate the hell out of their data, keep it in an object store, etc. Then when management starts to demand robust analysis of the data and the developers discover only at this time
    * that much of their private data - really isn't
    * that their data is nearly impossible to compare from one part of the application to another (because they thought it was data - when it was supposed to be information)
    * that they have invalid data - because of defects in their referential integrity rules
    * that they have inconsistent data - because their referential integrity rules changed over time - and they just handled in in their API

    It's about that time that management will replace the designers and architects of that solution with new ones - that understand more than just 50% of the problem.