Slashdot Mirror


Open Source Code Maintainability Analyzed

gManZboy writes "Four computer scientists have done a formal analysis of five Open Source software projects to determine how being "Open Source" contributes to or inhibits source code maintainability. While they admit further research is needed, they conclude that open source is no magic bullet on this particular issue, and argue that Open Source software development should strive for even greater code maintainability." From the article: "The disadvantages of OSS development include absence of complete documentation or technical support. Moreover, there is strong evidence that projects with clear and widely accepted specifications, such as operating systems and system applications, are well suited for the OSS development model. However, it is still questionable whether systems like ERP could be developed successfully as OSS projects. "

264 comments

  1. Results would be fairer by Anonymous Coward · · Score: 3, Funny

    If they excluded PERL.

    1. Re:Results would be fairer by barryman_5000 · · Score: 1

      haha, try and document all 400 million perl modules.

    2. Re:Results would be fairer by tomhudson · · Score: 3, Insightful
      "The code IS the best documentations" vs "code looks like line noise"

      Anyone who has used perl knows that if you need anything beyond POD, you're not ready for perl.

      Perl is "unclean" for a reason - it is there just to get the job done quickly, not necessarily cleanly.

      Just try and start documenting perl - since there is more than one way to do things, you'll end up giving in to the urge to change code as you document it - so the documentation never gets written, and the code never gets finished. It's a fool's errand, a sisyphian task, the modern equivalent of a "bucket of steam". Sort of like the distraction of commenting while meta-modding.

      Teach a man perl - he writes code to do the task in a few minutes. Ask him to document perl - he writes code forever - and still leaves the job unfinished.

      Some tasks, and some languages, just weren't made for documentation. [tt]

    3. Re:Results would be fairer by Anonymous Coward · · Score: 0

      Odd.

      In my portfolio, along with my resume, references, etc., happens to be a simple, well-documented Perl script I use as an example of my coding style. To each their own?

    4. Re:Results would be fairer by cl_everett · · Score: 1

      AWSTATS has the worst source I've ever seen. And I write Perl code for a living.

    5. Re:Results would be fairer by chromatic · · Score: 2, Funny

      Helpful tip: avoid the breakfast cereal aisle of any supermarket in the U.S., lest the bewildering array of choices and your own indecision cause you to starve.

    6. Re:Results would be fairer by tomhudson · · Score: 2, Interesting
      ... a simple, well-documented Perl script ...
      If it's simple, it doesn't need documentation (remember the bad old days when people insisted on commenting every line of assembler - akkk! :-)

      Me, I prefer the "Mobster" approach for perl - no comments:

      1. use half-decent variable names - that solves most of the problem about "wtf does this do"
      2. if it's more than a few lines, include code so that if it's run w/o parameters it prints out a "usage: ..." message
      3. I'm not building for eternity - just cut'n'paste, and change code as required to do what I want to do right now.
      If I wanted something /better/more permanent/elegant/, I'd write it in c. But I wouldn't want to show perl scripts to anyone - they're just fugly no matter how you slice them. And that ugliness sometimes oozes out into the surroundings. Look at the colour scheme at it.slashdot.org. Is it any wonder so many people "fix" it by typing "shit.slashdot.org" instead?

      [tt]

    7. Re:Results would be fairer by knipknap · · Score: 2, Insightful

      Just try and start documenting perl - since there is more than one way to do things, you'll end up giving in to the urge to change code as you document it - so the documentation never gets written.

      Is there any other language that has an equal amount of code equally well documented? CPAN has the best documentation of reusable code in comparison with other languages. Sure, there's always a bad example, but seriously, saying that documenting Perl is hard is certainly far from the truth. -Samuel

    8. Re:Results would be fairer by BlueCodeWarrior · · Score: 2, Informative

      Speaking of CPAN, I use Acme::Bleach to ensure that all of my Perl scripts are clean, easy to understand, and maintainable.

    9. Re:Results would be fairer by Trillan · · Score: 1

      Just try and start documenting perl - since there is more than one way to do things, you'll end up giving in to the urge to change code as you document it - so the documentation never gets written, and the code never gets finished.

      Now, I'm not a Perl programmer. So maybe there's an element of truth to this. However, every language I have ever used fits this description, and not documenting your code because you might change it sounds like a lack of discipline and an excuse. Unless this was intended to be funny, and all the mods missed it...

    10. Re:Results would be fairer by Anonymous Coward · · Score: 0

      Just try and start documenting perl

      "try to start", "Perl" or "PERL".

      Teach a man perl - he writes code to do the task in a few minutes. Ask him to document perl - he writes code forever - and still leaves the job unfinished.

      Which is why only women should write Perl.

    11. Re:Results would be fairer by stoborrobots · · Score: 1

      I think you missed his point... It's not about "not documenting it because you might change it"... It is about not documenting it because you ARE TOO BUSY changing it!

      If you try to start documenting the code, you will be distracted by the URGE to modify the code... You will spend the rest of your life and a goodly portion of your afterlife coding, and will never get around to actually finishing the documentation...

      And yes, I guess it was meant to be funny...

    12. Re:Results would be fairer by Stephen+Samuel · · Score: 1
      I don't think that I've ever had someone claim that I need to document all of my choices at a supermarket.

      (of course, I've never hired a diet coach, either).

      --
      Free Software: Like love, it grows best when given away.
    13. Re:Results would be fairer by smittyoneeach · · Score: 1

      Just eat Grapenuts--the Emacs of breakfast cereals.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    14. Re:Results would be fairer by TheLogster · · Score: 1

      Hmmm - perhaps you have never looked at 5 year old code.

      WE have all been there - you finish a project in langauge that is pretty self explainitory (pearl, vb, etc.) Either, you are updating the software or adding a new feature; and come to a point and gone "why oh why was it done that way". However, after you change the code in favour of a different implmentation - you discover that the software doesn't work because the original implmentation was done that way due to other issues - just like the comment explained .. Oh wait - there was no comment because the code comments itself.

      My $0.02

      TheLogster

    15. Re:Results would be fairer by tomhudson · · Score: 1
      I've had to go back on more than one occasion to code I'd written years before, usually to add new functions at the customer's request.

      I learned a long time ago that anything I'm trying to be "clever" with, I stuff in a separate file, and #include.

      Adopting a consistent variable and function naming system helps too, especially with the move away from compiled languages to php and javascript.

      Another thing is, if I find a really neat way to do something, I leave the original, "unsmart" way there as well, just remarked out. It explains exactly what I was doing, much better than comments ever could. Worse case scenario, #include OLD_DUMB_version_of_function.h, which is just the commented-out code.

      decent function names, decent parameter names ... that fixes a LOT of problems. Too often, we change the actual use of a variable or function, or add a second use to it, then say - well, I'll rename it later - and never geet around to it. That's where a lot of bugs creep in.

      Mind you, each person has their own style. I'm one of those who puts his opening brace on the same line as the function name, even for

      int main(int argc, char* argv[], char* env[]) {
      ........// program body ...
      }
      ... and I know it drives others crazy. I also insist on 8-space tabs in all my source files, no matter what language. Again, this is just what I find comfortable. But, having a particular style, and sticking with it, also helps me avoid coding errors when switching between languages.

      If you look on any system I've touched, you'll see (if you ls in alpha sorted sequence, which is the default) at the beginning of any directory, the original versions of any files I've changed, named as 00_ORIGINAL_filename, for example OO_ORIGINAL_resolv.conf. Anything that gets changed, the previous version goes into OLD_filename.version_number. Pretty self-documenting, don't you think? Also makes it easy to back out of any changes, or to apply the same changes to another system.

    16. Re:Results would be fairer by dynamo · · Score: 1

      IAAPP, and there is an element of truth to it (how are those statements related though?)

      Anyway - if you really know perl, it's so easy to make small changes that it can seem easier to fix a problem in code than to write down a note to solve it later. Same thing with new functionality - it's too tempting to change things.

      Perl code is naturally unstable because it's fairly trivial to add functionality. Perl vs. C can feel like a word processor vs. typewriter and white-out.

      You're going to do a lot more edits with the word processor, because you can. You'll also get a much more mature result for a similar time investment.

      Trying to look at C and document it does not tempt me to modify the code, because it's a pain.

  2. I tried to read it but... by Anonymous Coward · · Score: 5, Funny

    by Ioannis Samoladas, Ioannis Stamelos, Lefteris Angelis, Apostolos Oikonomou ...it was all Greek to me.

    1. Re:I tried to read it but... by Anonymous Coward · · Score: 1, Funny

      That's easy for you to say!

  3. bah! by eggoeater · · Score: 2, Funny

    I just keep my code on one 3 1/2 inch floppy.
    Haven't had a problem yet....

    1. Re:bah! by Sponge+Bath · · Score: 3, Funny
      ...3 1/2 inch floppy

      Nothing to be ashamed of, that's a pretty average size.

    2. Re:bah! by Anonymous Coward · · Score: 0

      Speak for yourself.

    3. Re:bah! by commodoresloat · · Score: 1

      It's not the size of the floppy that matters; it's how you format it.

    4. Re:bah! by SpinJaunt · · Score: 1

      I guess my 5 1/4" is pretty big then? and thats floppy -- all things considering..

      --
      /. is good for you.
    5. Re:bah! by sv0f · · Score: 1

      [Insert 8" floppy joke about here.]

  4. Was this really a surprise? by StateOfTheUnion · · Score: 4, Interesting

    Was this really a surprise? Did anyone think that open osurce software is as a general rule well documented or documented as well as many commercial projects that have project management (for better or worse) and technical writers on staff to do internal as well as external documentation?

    1. Re:Was this really a surprise? by Anonymous Coward · · Score: 0

      Have you ever actually seen one of these mythical environments where people document code, proprietary or otherwise?

    2. Re:Was this really a surprise? by arkanes · · Score: 4, Insightful
      In my experience, OSS is no more or less well documented than commercial, in house code. Some OSS projects have great docs. Most don't. Most in house software is poorly documented. The number of companies that actually have technical writers on staff for internal software is very, very small. Certainly I've never worked for one.

      In fact, I'd go so far as to extend this to software in general. Even when the comments can really matter, like API docs for libraries, the documentation sucks as often as not. I see no advantage to OSS here, but I don't see a disadvantage either.

    3. Re:Was this really a surprise? by Anonymous Coward · · Score: 5, Insightful

      O.k., perhaps its not a surprise, but in the end the community needs to do away with the 'more eyes make better software' myth in order to move forward. In that sense, it is good that 'professionals' are now pointing out that some of the software out there is actually quite bad and that it is _not_ generally acceptable to not maintain documentation and uphold good project hygiene.

      Here's a nice experiment for you:

      1. Select a random project, preferably one that's slightly buggy during ordinary use.
      2. Subscribe to project's mailing list.
      3. Politely inquire if the project has any kind of automated test suite.
      4. Observe stumped reaction.
      5. Kindly explain the absolute necessity of such a system in any non-trivial app.
      6. Go down in flames.

      That attitude needs to change.

    4. Re:Was this really a surprise? by irexe · · Score: 1

      Ehh.. yes. As a rule I don't work for anybody that doesn't have a basic, decent software development practice going. I've had no trouble finding jobs as of yet. Quality pays off, both ways.

    5. Re:Was this really a surprise? by Feztaa · · Score: 4, Insightful

      I'll probably get flamed for this, but at least with OSS, if there's no documentation, you can at least read the code to see what it does. I know, that's no substitute for proper documentation, but with closed source, if there's no documentation, you're just fucked, plain and simple. In OSS, if there's no documentation, you can read the code.

    6. Re:Was this really a surprise? by Rei · · Score: 5, Informative

      Well, the importance of a test suite rises dramatically with the complexity of the project. The difficulty of making a test suite increases with the amount of hardware that you need to implement it. When I think of "big" open source projects that aren't very hardware dependant - for example, ITK (the Insight Toolkit), they tend to have nice test suites. Naturally, the little ones don't, but little projects of most things don't have test suites.

      I agree, though, that automated test suites are underused. Also, not enough programmers (OSS or otherwise) seem to understand the importance of refactoring.

      A message to coders: People, if your function is more than 10 lines long, you should start to consider splitting it. If it's more than 100 lines long, you're probably doing something wrong. If you have the same code written with slight modifications two or more different ways, you're probably doing something wrong. Use templates rather than repeating code if your language supports them. If you ever feel "this should probably be commented more", don't comment it - split it up into functions and let the functions be their own comments (if you have to, comment the functions as well). Use const as much as physically possible (in supporting languages). Use array objects that clean themselves up instead of arrays allocated on-the-fly whenever physically possible. If you find certain variables being used often together, group them into an object. If you find a set of functions operating on an object and only that object, make them member functions. Etc.

      Just doing basic refactoring can make code far more organized and readable.

      --
      "Well, then fire it up and show me what this..." (sigh) ... "coccoon can do."
    7. Re:Was this really a surprise? by uglyduckling · · Score: 1

      open osurce software - I like the sound of that, what's your philosophy? What kind of beard do I have to grow?

    8. Re:Was this really a surprise? by tcopeland · · Score: 1

      > If it's more than 100 lines long, you're
      > probably doing something wrong.

      Quite right! Once that 100 line method is broken out into a class or two, you'll find two or three other places where you've got minor variations on the same code. Those variations (and their attending bugs) then get refactored away, the codebase shrinks, and good times result.

      Thanks for the great post!

    9. Re:Was this really a surprise? by Mr.+Slippery · · Score: 1
      Did anyone think that open osurce software is as a general rule well documented or documented as well as many commercial projects that have project management (for better or worse) and technical writers on staff to do internal as well as external documentation?

      Do you really think that commercial software is as a general rule well documented? (Or documented at all?)

      I've only worked on two proejects that had technical writers, and their job was mostly to clean up grammar and spelling from the developers. (Which, lest I be misunderstood, is a valuable job.) They were first on the post-boom chopping block anyway.

      Most projects I've worked on, you were lucky if you got meaningful comments in the code at all.

      This "study" is complete BS. With no comparison at all to proprietary software, no conclusion about the maintainability or quality of F/OSS is possible.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    10. Re:Was this really a surprise? by micromoog · · Score: 1

      This can never be stressed enough. People generally respond to this with "I don't know how to read code", "I don't have time to read code", etc. but a large company will certainly have the resources to handle this, and will ultimately get better and faster support from said in-house resources than they ever would from a vendor.

    11. Re:Was this really a surprise? by Anonymous Coward · · Score: 1

      Bollocks - sack the engineering/software manager if he can't devote at least 10% resource to documentation and tech specs. *ANY* project (open) or otherwise WILL fail if this kind of leadership is not shown.

      I'm talking big development projects ($15M/tens of man years), not 6 man month in house accounting system patches.

      OSS, as oft spruiked as it is, unfortunately, still requires doco...

    12. Re:Was this really a surprise? by Mr.+Slippery · · Score: 2
      3. Politely inquire if the project has any kind of automated test suite.
      4. Observe stumped reaction.

      Thing is, you're also likely to get a stumped reaction if you made such an inquiry about a random proprietary project.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    13. Re:Was this really a surprise? by micromoog · · Score: 1

      7. Offer to put together said suite

    14. Re:Was this really a surprise? by jbolden · · Score: 1

      My experience is that OSS has far better documentation. With almost all conversation occuring on mailing lists that are archived you can find exactly what people were thinking when they made critical choices. I do legacy conversion work for a living and I'll tell you this is the #1 point of difficulty. Was a path choosen because:

      a) The alternatives didn't occur to the developer / team
      b) The tools or the language made this choice easier (sometimes tools or languages that are no longer in use and you are looking at refactored code from those tools)
      c) There were problems with alternate paths that have long been forgotten

    15. Re:Was this really a surprise? by tomhudson · · Score: 3, Insightful
      If it's more than 100 lines long, you're probably doing something wrong.
      If a chunk of code can't fit on one page (two, max) it's too damn long. You're trying to do too much in one spot, and the goonies and golems will bit you in the ass.

      If it needs more comments than code, it's a sign its overly-complicated and you need to rethink what you're doing and how you're doing it. In other words, your algorithm sux the bag.

      If you can't write test cases for it because it's too tightly coupled to the rest of your code, you probably misunderstood the problem in the first place (or at least you're approaching it from the wrong direction)...

      All the comments and documentation in the world won't make spaghetti understandable or maintainable.

    16. Re:Was this really a surprise? by jbolden · · Score: 1

      Do this for most commercial apps. The fact is these things are rare. BTW they are more common on OSS because they are a standard part of make (make test).

    17. Re:Was this really a surprise? by pclminion · · Score: 1
      A message to coders: People, if your function is more than 10 lines long, you should start to consider splitting it. If it's more than 100 lines long, you're probably doing something wrong. If you have the same code written with slight modifications two or more different ways, you're probably doing something wrong.

      All sound advice, but it must be said that there ARE situations where you probably shouldn't follow it.

      For example, in one of the products I work on, there is a source file which contains about 10 functions, each almost identical to the rest. They are special cases for doing fast drawing operations. Using a more generic structure for this (e.g., writing just one function and using a function pointer to control the inner-loop behavior) is almost 5 times slower.

      In another source module, there is a function which is hundreds of lines long. It is a hand-unrolled implementation of a bit-oriented run-length encoder. It runs 7 times faster than the equivalent "readable" version.

      I don't want to give a bunch of gratuitous examples. My point is that there are cases where you need to break away from typical ideas of "maintainability" for the sake of speed. In this case the speed isn't a luxury -- users will have a hard time being productive with the product if it runs slow.

      It takes experience to know when it's appropriate to do things like that. I admit I haven't got it totally figured out myself yet :-)

    18. Re:Was this really a surprise? by eraserewind · · Score: 1

      One of the reasons for this is undoubtedly that in the software world, those that write the code are not the ones that test it, except perhaps for unit tests. The people writing the code therefore generally have no, or limited experience of testing, or the tools or methodologies available for doing it. Just as many open source projects, have no graphic designer, or UI usability expert working for free on it, they also have no specialist tester.

    19. Re:Was this really a surprise? by zyridium · · Score: 2, Insightful

      Um, sorry but slashdot cliche #4137 doesn't apply here...

      I would be pretty certain that if you were maintaining code then you would have access to it...

      *sigh*

    20. Re:Was this really a surprise? by DaveJay · · Score: 1

      I've actually thought about this a lot; as a non-programmer, I'm always trying to find a way to contribute to open-source projects. In general, are teams receptive to a person who says "Hey, I can't help you code, but I can write and maintain fabulous documentation"? I'd hate to offend anyone...

    21. Re:Was this really a surprise? by Rei · · Score: 2, Informative

      > e.g., writing just one function and using a function pointer to control
      > the inner loop behavior

      No, function pointers are evil. Pointers themselves can make things rather nasty, although they are important in some situations. Use inheritance and virtual inline functions. Inline functions run as fast as macros, and inheritance is a lot cleaner than using function pointers.

      > It is a hand-unrolled implementation of a bit-oriented run-length encoder

      I'd like to see a piece of code that by hand-unrolling runs 7 times faster and can't be functionalized. I sure haven't seen one yet, and can't picture how that would even be possible.

      > away from typical ideas of "maintainability" for the sake of speed

      Seldom is that the case nowadays in modern languages. You sound like you're writing in pure C, though ;)

      --
      "Well, then fire it up and show me what this..." (sigh) ... "coccoon can do."
    22. Re:Was this really a surprise? by Tim+Browse · · Score: 2, Interesting
      If it needs more comments than code, it's a sign its overly-complicated and you need to rethink what you're doing and how you're doing it. In other words, your algorithm sux the bag.

      Well, mostly, but I have on occasion documented something to within an inch of its life because the problem is quite complex, and doesn't particularly lend itself to being broken down further. e.g. I wrote some mesh silhouette code recently, that used a lot of small, smart objects to do its job, and was only a screen or two of code, but it still needed a fair bit of explanation as to what was going on.

      Also, sometimes the algorithm is quite elegant, and I'm just pointing out that, yes, it does handle all those edge cases you were worried about, and here's how, etc. (That also kind of applied to the mesh code I mentioned.)

      But mainly I'm worried about the advice being given in a few posts of "don't add more comments" - these are OSS coders we're talking about - don't give them any ideas. :-)

      Sorry - spent today trying to understand a bunch of OSS code that was very complicated, and that has, by its very nature, lots of wrinkles and interdependencies, but of course, almost zero comments in the code. I can only assume such people only ever work on one project at a time - I don't know how I'd ever manage to come back to such a project.

      As an aside, I considered implementing a plug-in for the OSS project, on my company's time, that I could submit back, and would be of use to other people, but in the end, it was just way too involved and complicated, so I hacked up a quicker solution.

      Basically, I'm a bit tired of opening up the code of some OSS project I've got interested in, only to find that the only comments are the GPL boilerplate blocks at the top of each file :-(

      (I know, I know, it's free, I shouldn't moan, etc. But take that example today - that project could have had a few days' time from a developer with 15+ years experience, implementing a solid, tested new feature, but because the overall docs (ha! as if!) and comments were sorely lacking, that didn't happen. I'm just saying. Flame away!)

    23. Re:Was this really a surprise? by Anonymous Coward · · Score: 0
      Which is great if you happen to work at a large company. However, most places are medium sized or small. So they are just as screwed with OSS or commercial software.



      Please write good documentation, wheather your software is opensource or not.

    24. Re:Was this really a surprise? by pclminion · · Score: 1
      Use inheritance and virtual inline functions. Inline functions run as fast as macros, and inheritance is a lot cleaner than using function pointers.

      I would agree, but the language (C, of course) doesn't offer them.

      I'd like to see a piece of code that by hand-unrolling runs 7 times faster and can't be functionalized.

      I wasn't exactly clear what I was talking about. The 7 times improvement is against the original, naive version of the function. The optimized version with unrolling is about 20% faster than the one without unrolling. Both are monumentally faster than the naive implementation.

      Seldom is that the case nowadays in modern languages. You sound like you're writing in pure C, though ;)

      I'd venture to assert that the ONLY way to write high-performance graphics code is in C (or assembler). Unfortunately, it's the entire PRODUCT that's written in C, not just the performance sensitive parts. It's hard hard hard to convince anybody to change it.

      It's a really hard thing to convince the marketers that "We're going to spend a year rewriting the product from scratch and when we're done it'll be exactly the same as before." They don't understand that eventually the thing is just going to collapse into a heap. And right now, there's so much pressure from marketing we have no time to work on anything else.

      I'd hardly call it a death march, but something needs to happen soon.

    25. Re:Was this really a surprise? by merdark · · Score: 2, Insightful

      So, you are claiming that the sample of companies you've worked for represents a fair sample of all software companies? You have also looked, in depth, at the same number of open source projects and can claim that that number is representative of all open source projects?

      If you are going to use your own experience as justification for your point, you should at the least state exactly what that experience is. It would be nice if you could also compile some statistics on the total number of open and closed source companies so that you can support your claim that your experience is representitive of each camp.

      If you can't or won't do this, please do not presume to speak with such authority.

    26. Re:Was this really a surprise? by iabervon · · Score: 1

      I think most teams would be glad to have such a person; the danger is more that you'll be unable to get an explanation to base your documentation on.

      One way to start might be to follow a mailing list and write up results of discussions, like lwn's kernel page or wine-traffic. This lets you show off your work in a relevant way before you start asking questions. It's also quite useful for many mailing lists, where things get discussed for a while until people lose interest without a clear conclusion.

    27. Re:Was this really a surprise? by aminorex · · Score: 1

      Like Jack Kerouac, I just use VERY long pages.

      --
      -I like my women like I like my tea: green-
    28. Re:Was this really a surprise? by BenjyD · · Score: 1

      Absolutely - I put the divide between when I was "just mucking around" and actually being an OSS developer the day I added a set of automated tests to my project. I'm amazed that I managed to release code that ran at all, let alone reliably, before then.

      Some day somebody should write a "good development practice" short guide for OSS developers.

    29. Re:Was this really a surprise? by croddy · · Score: 1

      you'd be surprised.

    30. Re:Was this really a surprise? by jayed_99 · · Score: 1

      Being a good developer is like being a good writer.

      You know all of the rules, and you follow them most of the time. You also know that blindly following the rules in every single case is stupid.

    31. Re:Was this really a surprise? by Weirsbaski · · Score: 3, Insightful

      ... but at least with OSS, if there's no documentation, you can at least read the code to see what it does

      ... In OSS, if there's no documentation, you can read the code.


      And if it not OSS, then either you have access to the code (in which case you can read it also), or you don't (in which case maintainability isn't even the issue, because there isn't any).

      Whether the source is open or closed has no (direct) bearing on how good the source and documentation are, for those allowed to see the source and documentation.

      --

      I am not a sig.
    32. Re:Was this really a surprise? by zyridium · · Score: 1

      Um?

      Please explain...

    33. Re:Was this really a surprise? by Arkaein · · Score: 2, Interesting

      Sorry, while I agree with the general thrust of this your 10 line rule seems overly pedantic and ultimately counterproductive.

      Often I have written largeish functions such that while they could be broken into smaller functions, at the time there would be no purpose in doing so except to enforce the "only short functions allowed" rule. In other words the small functions would only be called from a single point in the code. In situations like this recursively breaking a function into smaller functions adds function call overhead which impacts performance, but more importantly adds additional whitespace and boilerplate function definition code to the source that can detract from readability. This is especially true if a developer has to mentally step through every line of code in a function: if the function is monolithic the step through is basically linear, while if the function is heavily subdivided the developer must jump back and forth in the code to follow the chain of execution.

      Yes, yes, ideally each function should be tested and verified individually, but if a function was custom coded for a specific purpose only to be used in one larger function then this is often difficult to do, due to lack of alternative test situations.

      It is often the case that a chunk of code that is only useful in one location early on may be useful in multiple places later, but I believe it is best to wait until this time to refactor the original code into smaller, more modular functions.

    34. Re:Was this really a surprise? by Omega+Blue · · Score: 2, Insightful

      I agree, though, that automated test suites are underused.

      Automated test suites are vastly overrated. If all your subprograms have cleanly defined functions, cleanly defined I/O, and are small enough, it is very easy to run them through a few critical test cases.

      Some people even gone so far as to substitute automated testing for clarity in design - the so called Test Driven Design. That seems like a recipe for disaster to me.

    35. Re:Was this really a surprise? by Peeteriz · · Score: 3, Interesting

      In the enterprise, for example, financial companies, is quite common to be writing and maintaining additions/modifications to some huge software package that your company has bought - you write routines that run together with their code, there are facilities for such modifications/additions.

      However, you can't *really* know how *their* code works - you must interoperate with this code, but their code has (a lot of) bugs and is poorly documented - there is a lot of documentation, but it mostly covers the trivial parts, and if you *need* to know the exact behaviour in some tricky situation, then trial-and-error is the only way.
      And of course, you have no access to their source code.
      You may pay a huge sum of money and get that access, but the amounts involved are ridiculously huge.
      You may request a change from them - but again, the costs are huge - for a trivial change they charge so much that you can fund a programmer man-year in-house - so in-house workarounds are the way to go.

    36. Re:Was this really a surprise? by Peeteriz · · Score: 1

      There are very valid situations where an algorithm needs a lot of comments to describe.
      For example, I was involved an about 200 line algorithm for the core of a specific physics modelling problem, that cut the processing time from o(n*n*n*n) for a naive algorythm to o(n*n*n), involving some heavy magic that is rather impossible to explain in the comments - the explanation/description is a 30 page university paper.

    37. Re:Was this really a surprise? by Anonymous Coward · · Score: 0
      that project could have had a few days' time from a developer with 15+ years experience, implementing a solid, tested new feature, but because the overall docs (ha! as if!) and comments were sorely lacking, that didn't happen.

      Tell them that! OSS developers do this stuff as a hobby with limited time; they put their time where it does the most good. If they knew the lack of comments/documentation were stopping them from getting extra developers, they might bump it up in their priorities.

    38. Re:Was this really a surprise? by geminidomino · · Score: 1

      Short code does not readability make.

      Prime example: my 3-line (including shebang) httpd written in perl. :)

    39. Re:Was this really a surprise? by indifferent+children · · Score: 1
      You are correct about access to the code, but in my experience there is another factor at work here. It seems that developers who spend a lot of time working with (not even necessarily contributing to) OpenSource software develop superior skills for reading source code.

      Maybe it is a kink of who we are (if you are good at reading code, you gravitate toward OpenSource), or more likely, if you have to read a bunch of code to get a project to work in your environment, you become proficient at reading and understanding undocumented code.

      Many of my co-workers can program, but without documentation, lots of comments, and a 'project roadmap', they can't figure out what an old function is supposed to do (which is often not what it does!) OTOH, our Linux guys (sorry, they happen to be all guys) can usually glance at a couple of pages of code and make some really good guesses as to: what is going on, the intent of the original programmers, and the skill-level of the original programmers.

      --
      Censorship is telling a man he can't have a steak just because a baby can't chew it. --Mark Twain
    40. Re:Was this really a surprise? by Anonymous Coward · · Score: 0

      A message to coders: People, if your function is more than 10 lines long, you should start to consider splitting it. If it's more than 100 lines long, you're probably doing something wrong. If you have the same code written with slight modifications two or more different ways, you're probably doing something wrong. Use templates rather than repeating code if your language supports them. If you ever feel "this should probably be commented more", don't comment it - split it up into functions and let the functions be their own comments (if you have to, comment the functions as well). Use const as much as physically possible (in supporting languages). Use array objects that clean themselves up instead of arrays allocated on-the-fly whenever physically possible. If you find certain variables being used often together, group them into an object. If you find a set of functions operating on an object and only that object, make them member functions. Etc.

      Nice set of rules, some humble suggestions and additions:

      - prefer composition over inheritance. I believe that inheritance is overrated in OOD, using HasA relationship (composition or aggregation) leads to more flexible designs and reduces complexity by splitting things into smaller understandable and reusable parts.
      - methods should be shorter than 100 lines (10 lines is not enough in my experience)
      - if you find a set of functions operating on an object and only that object, do NOT make them member functions. I like composition more than inheritance, so if possible split classes into smaller parts, but do NOT combine as much as possible in one single class, it's fine to have service classes or templates.
      - learn good development disciplines, e.g. refactoring, reviewing, testing, project management, quality management. You can not explain all these in a short text/article and you will not aquire these methods in a short time, so practice them!
      - use ASSERTS as it would be free candy (the more the better), consider also using pre/post conditions and consistency checks in code. It can save some automatic tests or support them.
      - most of all, establish good communication. You will never work alone, you will work inside a team of people... make use of dedicated project managers or maintainers to keep up communicaion. If your boss or project leader doesn't get it, switch project now as it will be doomed sooner or later.

      /Moak

    41. Re:Was this really a surprise? by Bert64 · · Score: 1

      Well, how much does it cost to employ a contract programmer for a few days? Even if you don't have coders on staff, you can easily get some contractors..
      Perhaps this would be a good business to get into, offering custom code services for OSS projects to those companies too small to employ internal coders.. Want an extra feature in mozilla? Need a new driver for the linux kernel? You could employ someone specifically to do it exactly to your requirements. Commercial vendors will always implement things in the most generic way to try and appeal to the widest audience of potential customers.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    42. Re:Was this really a surprise? by Anonymous Coward · · Score: 0

      Even better, if said company has a habit of releasing their work under the project's license (assuming the client OKs it), they can get a good relationship for direct support from the core developers. OSS people help people who give back.

    43. Re:Was this really a surprise? by Anonymous Coward · · Score: 0
      Some day somebody should write a "good development practice" short guide for OSS developers.

      1. Write good code
      2. Test it
      Now send me money.

      Anonymous Coward
      123 E. Main St.
      Trollsville, USA

    44. Re:Was this really a surprise? by arkanes · · Score: 1
      I'm familiar with the internal software (not *all* the internal software, granted, but many systems which are in widespread internal use) of several Fortune 500 companies, either first or second hand. While I can't reasonably call this a cross-section of the industry, it is representative of a heavily used internal software at very large companies. In general, these are not high quality systems. My experience with open source is as a small-scale developer and heavy user of a wide variety of OSS software, including most of the most widely used libraries.

      I wouldn't presume to say that my experience defines the industry. On the other hand, anectodal evidence suggests that most of my peers have experiences similiar to mine. In addition, even if studies were done which showed the opposite of my experience, statistics which contradict the realities of my everyday life are not especially usefull.

    45. Re:Was this really a surprise? by CoderBob · · Score: 1
      /me breaks out the stick, looks for dead horse

      That aside, there are no hard and fast rules for programming. Often, I find that grouping things into objects can help readability and maintainability, but there are times when that added layer of abstraction is just more complication than its worth.

      Its sort of like the "never use goto" and "no global variables" rule. They have their uses. Granted, they might not be that often, but they do. Personally, I'd rather read a 100+ line function that was commented in sections- the following does this, the following does that- if these actions only occur in that one function. Splitting them out just means I have to jump around in the source to follow what was probably not that complex anyway. You still might want to think long and hard about the algorithm itself, though.

      However, if those "sub-sections" are used/repeated elsewhere...good gods, man, do yourself a favor and split'em out. Its bad enough trying to maintain slight function differences in languages that don't support templates (which have their own problems) but its even worse when the functions are huge and almost entirely the same.

      As far as OSS and documenation...don't make me laugh. Some projects are great- make, emacs, vi come to mind instantly. Others...well, lets just say that the next time I see RTFM when there is no man page, I'm gonna snap. We need to shape up, buckle down, and write the documenation. Maybe even as you add functionality, so you aren't writing some massive document at the end of a project. Closed projects aren't always much better- to me, MSDN is a waste of my time- but sometimes they're a little more likely to document, because people that aren't likely to use something that they can't understand, and they don't have the ability to just "peek at the source".

      /me gets on soapbox, slightly offtopic

      I may get flamed for this, but it needs to be said: OO is not the end-all of programming. Often a well-designed OO project can be a godsend, but sometimes it's like swatting a fly with a Buick. If the project is intuitively functional, go ahead and do it in a procedural manner. Over-engineering a project to make it OO when it doesn't need it can contribute to making it difficult to maintain. Which is why I'm glad Python has tuples. Group the variables without bringing in the complexity of a class itself. While you're at it, through in a comment describing the values at each index. It'll help six months down the road.

      And regarding the whole "the code is the best documentation" bit- if I can't understand the code at 3am, when drunk, it isn't the best documentation. And this is usually the kind of code that I'm trying to find documentation for in the first place. Comment your code to describe the process it follows, not the mechanism, unless the mechanism would not be intuitive to the average user of the language: text = ' '.join(text.split()) in Python comes to mind- and no, it is not a redunant function call, it replaces all tabs/newlines with the space character. And by "average user" I don't mean "IT Professional with 10 years of experience." I mean someone who has an average ability to write code with it- maybe not efficient or good quality, but code that performs some function. I don't need to know that function bar() calls this and that internally (unless they're part of a different library), I need to know:

      1. What are legal parameters
      2. What expected output is on success and failure
      3. What can create undefined behavior (which you should know from the item above
      4. Dependencies on 3rd party libraries

      /me gets off soapbox

    46. Re:Was this really a surprise? by CoderBob · · Score: 1
      That should read "throw in a comment" not "through in a comment"

      Glad I'm awake at work.

    47. Re:Was this really a surprise? by Anonymous Coward · · Score: 0

      You just don't get it. The "less than 10 line functions" rule comes from the need to comment the code, not code reuse. If you split your code into smaller methods/functions, it becomes more self documenting.

    48. Re:Was this really a surprise? by Rei · · Score: 1

      That's why you break it down into functions. If it's time-critical code, you break it down into inline functions. Easy solution.

      The code should be it's own comment; if you feel you need to comment a section, you should rip the section out and replace it with a function with a descriptive title. Only if you can't encapsulate what the function does in its title should you use a comment, and even then, you should still rip the code out into a function before adding the comment.

      --
      "Well, then fire it up and show me what this..." (sigh) ... "coccoon can do."
    49. Re:Was this really a surprise? by Rei · · Score: 1

      > The optimized version with unrolling is about 20% faster than the one without unrolling.

      And how exactly would inline functions slow it down? They're available in both C and C++.

      > It's hard hard hard to convince anybody to change it

      But it can be done; we did it with a piece of software over here just recently. The great thing is that you don't need to refactor everything at once; the only "all at once" step that you need to do is converting the build process over (and typically renaming your source file). After that, you can usually work incrementally, starting first by converting frequently used structures to classes one at a time, converting char*'s to std::strings, converting arrays to vectors and valarrays (for automatic cleanup, ease of resizing and slicing, etc), relocating functions as member functions to your new classes, etc. Everything can be done one step at a time.

      You typically sell it as making the code easier to maintain, more reliable, fixing bugs, and adding new features (which you do at the same time you're refactoring). It's amazing how much refactoring one or two developers can achieve in a couple months, and how many bugs that you didn't even know about that you'll find.

      I think back at all of the bad methods being used to try and manage cleanup before, for example. Every last cleanup routine was inefficient, and every other one had at least one bug in it; none were easy to maintain. They managed it in three different ways: a macro which would constantly get undef'ed and redefined in the file (so you had a dozen different versions per file, one for each function that needed cleanup); gotos; and cleanup code duplication. All three of those are just such poor solutions.

      And by the way, if performance is critical, you'll often find that you'll get better performance by moving to valarray than you had in your original code. How, you may ask? Aren't objects slower? With optimizations on, in general they're not. Plus - and this is critical - the core code of objects in the std library makes use of all of the "tricks". They use "Restrict"ed pointers. They use MMX and other bulk-operator functionality. Etc. And if you want more-featured arrays than provided by the std library, try Blitz++ - it's a beautifully done class that gives you fast Fortran-style multidimensional arrays via C++ operators.

      --
      "Well, then fire it up and show me what this..." (sigh) ... "coccoon can do."
    50. Re:Was this really a surprise? by Anonymous Coward · · Score: 0

      Well, what you say may be true for some OSS projects, but then again there are other projects that are exemplars of good practice. Take gcc, which does indeed have a huge regression testsuite and automated testers; where every patch is reviewed before it is applied; where no patches for user-visible changes are accepted without a corresponding documentation patch. With the exception of the automated regression tester, the same goes for binutils and gdb; and I _think_ (but don't know from personal experience as I do with the others) that the Apache and Mozilla-related projects have equally high standards.

      These OSS projects employ far better practices than most of the private firms I have worked for in the course of my nearly 20 years in the software industry.

    51. Re:Was this really a surprise? by PickyH3D · · Score: 1
      You could employ someone specifically to do it exactly to your requirements.
      Isn't this the point of OSS? Tell me you weren't just now figuring this out.
    52. Re:Was this really a surprise? by Tim+Browse · · Score: 1
      Tell them that! OSS developers do this stuff as a hobby with limited time; they put their time where it does the most good. If they knew the lack of comments/documentation were stopping them from getting extra developers, they might bump it up in their priorities.

      Yeah, I've come close a couple of times, but I always think I'll come across as some random patronising guy who's telling them they suck.

      And they don't suck - in many cases (and this project in particular) it's a good program, and used by many people, both commercial and non-commercial; just a little limited in some ways. I just can't bear to work with their source code :)

    53. Re:Was this really a surprise? by Lacton · · Score: 1

      Some people even gone so far as to substitute automated testing for clarity in design - the so called Test Driven Design. That seems like a recipe for disaster to me.

      Well, I've been using TDD for 4 years, with four different languages (Java, Python, Ruby and a COBOL-like procedural language) and with projects of all sizes -- ranging from simple tools to 10K LOC applications -- and I still haven't experienced any disaster. Quite the contrary, management is very pleased with the results.

      IMHO, OSS projects could benefit from TDD or TDD-like approches.

    54. Re:Was this really a surprise? by Lacton · · Score: 1

      People, if your function is more than 10 lines long, you should start to consider splitting it. (emphasis mine)

      Most replies to parent give examples where a 10-line function would have been inappropriate. Fine. Parent is clearly stating it's all a matter of asking yourself the question: 'This function is getting awfully long. Is this really for the best?'. Maybe the answer will yes. Maybe not. At least, you thought about it.

      Right now, I'm debugging a 1000+ line method in Java. I'm pretty sure this monstruosity's author didn't stop to think about how this would affect readability and testability.

  5. Extremely Ridiculous Publishing by bperkins · · Score: 3, Interesting

    GNU General Public License (GPL)
    Berkeley Software Distribution (BSD)

    are all defined in the article.

    But not ERP.

    Go figure.

  6. At least... by BJZQ8 · · Score: 4, Insightful

    At least with Open Source Software you CAN maintain it if necessary. With closed source, there is no way to make any changes to old software...and much too often, the companies that make some of the obscure CAD stuff (my field, once) are out of business. At least having it open makes it possible to change something...even if you don't.

    1. Re:At least... by pclminion · · Score: 2, Interesting
      At least with Open Source Software you CAN maintain it if necessary. With closed source, there is no way to make any changes to old software

      Sure you can. It's easy to forget, but there are people who are fluent in assembly language and can figure out a defunct, proprietary piece of software if necessary.

      I agree that it barely meets the definition of "maintainable," but it can be done with some effort. I've done it myself, while trying to find a problem in one of our distribution binaries -- the bug I was trying to squish went away when we did a recompile for some obscure reasons, so I was forced to hack the binary itself in order to insert some debugging hooks. It can be done.

    2. Re:At least... by micromoog · · Score: 2, Insightful
      It can be done.

      But it's usually illegal. The copyrights to that program are still owned by somebody somewhere, collecting dust and mold.

    3. Re:At least... by Anonymous Coward · · Score: 5, Insightful

      As a software engineer, I do like to point out something to you. "At least with open source you CAN maintain it if necessary" is not true! Maintenance takes up a good 60+% of a software cycle. Doing maintenance requires good documentation, fixing a bug is a minor issue, especially when it's easy to track down. Understanding design decisions, understanding architecture so that you can extend the software is a big challenge.

      Without appropriate documentations, you end up doing what has been done all over again, studying the software to understand how it works, which can be taxing. Go look at somewhat complex OSS projects, try hacking gcc to spit out a different binary format without reading any documentation. Try understanding postgres without documentation. GUI applications like a CAD system are even harder to make sense out of. If you are actually talented enough, the sheer effort you will poor into understanding the system, you might as well spend it designing from the ground up.

      Most people are not hackers, If they were, why would they need source code? crackers don't need source code to add functionality to any system, it's a matter of patching the object code, having a section of the code jump to your own code and return. But it's ugly, having source code makes it a little bit prettier but not much.

      Documentation is the key! .segmond

    4. Re:At least... by pclminion · · Score: 3, Insightful

      I don't see how copyright applies in this case. I can take a book, mark it up, cut pages out and paste new content into it. It's my book. I would be in trouble if I wanted to then sell that book, but I'm not trying to. Why should a piece of software be different?

    5. Re:At least... by charvolant · · Score: 5, Insightful
      At least with Open Source Software you CAN maintain it if necessary.

      Sort of ... kind of ...

      There comes a point where, particularly without design documentation, the bar is raised so high that the effort involved in maintaining something is more than that involved in moving to a new product. There's a scaling problem here. What works with small, simple direct programs doesn't work with large, complex or indirect programs.

      And some OSS code is simply completely undocumented, not even a comment -- apart from the licence. Something I discovered wandering through the XFree86 XKB code.

      See http://firstmonday.org/issues/issue4_12/bezroukov/ index.html for a discussion some of the weaknesses of the open source model when it comes to program comprehension.

    6. Re:At least... by tomhudson · · Score: 1
      But it would be cheaper (and probably better in the long run) to rewrite the software from scratch.

      You already have the inputs and desired outputs, which is a major part of any project. You have an already-finished product to judge against, and help avoid feature creep. And you can take advantage of the newer environments, platforms, and codig methodologies. About the only place where you'd want to directly modify something with a hex editor (as opposed to a resource editor) is to enable embedded functionality that isn't activated in your copy, or put NOPs or JMPs around certain sections of "inconvenient" code.

    7. Re:At least... by emurphy42 · · Score: 1

      If it's sufficiently important to you, then you can pay someone else to grok the code for you. That option is also unavailable with closed-source.

    8. Re:At least... by Lifthrasir · · Score: 1

      you usually BUY a book, but with software (esp for businesses) you LICENCE it.

      --
      No beer, no TV make Lifthrasir something something
    9. Re:At least... by Anonymous Coward · · Score: 0

      No, odds are that in the CAD field, said companies were acquired by Parametric in their buying frenzy of the 90's... which is hurting them, and my stock right now...

    10. Re:At least... by Anonymous Coward · · Score: 0

      Look I agree that poorly written code can be hard to understand.

      I also agree that understanding the architecture of poorly designed code is hard to do

      But quite a lot of the real difficulty lies in understanding the domain as well as the people who wrote the stuff. If you don't understand the domain you'll struggle - and most of your struggles are of the form "why on earth do they add these two numbers together - they don't seem remotely related to me"

      In other words, you are learning.

      On the other hand, if you do understand the domain you can find stuff very quickly and work with it.

      Case in point. Last week I was trying to use wget for something and discovered that it wouldn't retrieve certain urls. I didn't have any idea why not, but I just grepped for url, found the file url.c (doh!), opened it up, and found a comment to the effect that it was doing something additional to the RFC - but which the author felt was necessary (but IMHO wrong)

      30 seconds to comment it out, quick compile and I'm back on track.

      5 minutes start-to-finish. Done

      Why? Because it's a domain (url's) I understand reasonably well, and a particular example I came to understand very well.

      I agree good documentation is vital - but only at two levels: architecture, and interface. Architecture so you know where to look and how the bits fit together, interface so you know how to use it.

      Internal detailed design is usually obvious if you know the domain, and the software actually follows its documented architecture.

      Unfortunately, most maintenance programmers in corporate environments don't know the domain well, and the application deviated from its initial architecture during development, and the developers are long gone.

      Then you've really got problems.

  7. Bleh by Neil+Blender · · Score: 3, Interesting

    One need only peruse the source code of 5 randomly picked source forge projects to figure this one out.

    1. Re:Bleh by pclminion · · Score: 3, Interesting
      One need only peruse the source code of 5 randomly picked source forge projects to figure this one out.

      Yeah, but don't blame it on OSS. This is simply another embodiment of the long-tailed distribution of human stupidity. In any human endeavor there are a large number of people who are Unskilled and Unaware of it. These people will try their hand at whatever catches their attention, and the results usually range from mediocre to terrible.

      There's a lot of really bad fan fiction out there, too. And terrible amateur cartoons. And naive, uninformed political opinions.

      What we witness on SourceForge is merely a demonstration of the inability of most people to accomplish anything of any importance. Nothing specific to OSS.

    2. Re:Bleh by Neil+Blender · · Score: 1

      I'm not blaming OSS for this, only pointing out that their conclusion is obvious. I'm sure you could pick 5 random closed source commercial projects and find (nearly) the same thing.

    3. Re:Bleh by pclminion · · Score: 2, Insightful
      I'm sure you could pick 5 random closed source commercial projects and find (nearly) the same thing.

      The difference, though, is that commercial products can't exist (or at least by all economic rights SHOULDN'T exist) without a userbase. SourceForge is littered with stuff that's so bad it's completely unusable. You can't get away with that with a commercial product, although that doesn't necessarily mean the project is MAINTAINABLE ;-)

      And I didn't think you were blaming OSS, just picking up your thread and running with it.

    4. Re:Bleh by Anonymous Coward · · Score: 0

      One need only peruse the source code of 5 randomly picked source forge projects to figure this one out.

      5 randomly picked source forge projects and you got one with code already? Lucky bastard.

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

      Maybe, but commercial programs are far more likely to have senior people on board than student-run OSS projects.

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

      Please remember that on sourceforge you also see projects that never would have been visible had they been comercial. As the parent stated. There is no difference between open and closed projects, except that one is a little more visible than the other.

  8. This assumes commercial software is any better by Augusto · · Score: 4, Interesting

    And it's often not.

    Many of us have and are working in the "real world" out there, and I've been less than impressed with most documentation on large products.

    Not to mention design documents, which end up being dead documents that are outdated as soon as the first line of code is written. To many corporations, there's no big incentive to spend so much money on these types of activities when you can have people just churning out code and finishing the darned product in the end.

    I'm not saying commericial development is any worse, but I can't say it's any better for sure either.

    --

    - sigs are for wimps.
    1. Re:This assumes commercial software is any better by tcopeland · · Score: 3, Insightful

      > design documents, which end up being
      > dead documents that are outdated as soon
      > as the first line of code is written.

      So true. Or only one page will be kept up to date - the database schema diagram, because it can be automatically generated from the production database schema.

      Meanwhile, new hires are referred to these documents with mumbles of "this is the design documentation, read this and you'll know everything". This statement is usually accompanied with a cynical smile and a shrug, indicating to the new hire the uselessness of the ritual. Ack.

    2. Re:This assumes commercial software is any better by eraserewind · · Score: 1

      That's because there is something fundamentally wrong with seperating the design and documentation from the code. Ultimately the code is the only thing that describes what it does, so the further the "design" and documentation is located away from that, the more out of date and useless it is going to be. If the documentation is autogenerated, it has at least some chance of being current.

    3. Re:This assumes commercial software is any better by tcopeland · · Score: 1

      > the code is the only thing that describes
      > what it does

      So true.

  9. They are confusing open source again by Anonymous Coward · · Score: 0

    Commercial open source can work. Look at Qt. Its well documented and maintained. DUH!

  10. GUI by kaalamaadan · · Score: 2, Interesting
    Not to mention interface design. Ad hoc designs could be enormously good - like Winamp - or miserable - any of GIMP, the clipboard in X, the interface specifications for internationalization.

    In spite of drives towards a uniform consistent design, the OSS commmunity still has a long way to go in terms of interface design, which is the defining factor in acceptance of packages like ERP. In "The Art of Computer Programming", Knuth makes note that programmers hate I/O programming.

    After nearly 35 years, it is still so. OSS remains an extreme case-in-point.

    1. Re:GUI by computational+super · · Score: 1

      Did you switch topics, or was that a typo? You went from talking about interface design to talking about I/O programming. I'm just curious which one Knuth actually discussed, and don't feel like going out and buying the book to find out. ;)

      --
      Proud neuron in the Slashdot hivemind since 2002.
    2. Re:GUI by kaalamaadan · · Score: 1

      My point was that what I/O programming was in the hoary past, it is GUI programming now. Programmers hate the part where data has to be presented.

    3. Re:GUI by John+Pliskin · · Score: 1

      Strangly in my CSCI 40 class (read: C programming), our teacher had us do more I/O then anything, to the point where any of us could do it in our sleep.

      So to write I/O really does not bother me much. documentation....on the other hand....

      $

    4. Re:GUI by Anonymous Coward · · Score: 0


      Ad hoc designs could be enormously good - like Winamp


      You're kidding, right? Winamp is (was?) a reasonably funtional media player trapped in an almost infinite selection of hideous and unusable interfaces.

      You trolls - you got me again.

    5. Re:GUI by Phleg · · Score: 5, Insightful

      You're actually trying to claim that Winamp's design is good?

      Winamp and other players which try to emulate the look and feel of a "new wave" stereo do nothing but piss me off. Stereo systems have the bad interfaces they do because of an inherent lack of physical space; something that's still a concern with computers, but much less of one.

      Here's to more programs like Rhythmbox and iTunes which have the *important* controls accessible, allow for easy categorisation of songs, and use screen space nicely. All that without having to resort to 6pt fonts.

      --
      No comment.
    6. Re:GUI by Anonymous Coward · · Score: 0

      The original winamp was actually very nice, simple, and functional. The later versions had really bad UIs, cluttered, confusing, with stupid defaults.

    7. Re:GUI by Anonymous Coward · · Score: 0

      Don't they all use the same skins? More importantly, don't they all use skins?

    8. Re:GUI by Anonymous Coward · · Score: 0
      It's hardly just the skin, it is the track window, visualizer, list editor, 10 million buttons and dials and widgets.

      The superficial look of the later winamps did not change much, but the clutter of the UI did a lot to keep people from upgrading.

    9. Re:GUI by Anonymous Coward · · Score: 0

      I have to disagree, I see the highest goal in software is to produce a good user experience while using a good tool. Therfor I prefer a tool with a simple user interface, rather than something with a lot of space. Winamp is a good design IMHO, because it's interface simple and easy to use still you can configure and extend it with plugins and skins.

    10. Re:GUI by crabpeople · · Score: 1

      "You're actually trying to claim that Winamp's design is good?"

      Winamps simplicty makes it the best player on the market. Whereas with iTunes, the window takes up your entire screen, winamp can be compressed to a small line comfortably attaching to whever i want it. Then there are the wonderful function keys and with a ctrl + alt + pg down, i can switch the track. Itunes, microsoft etc, all try and take the entire screen to their control. I mean honestly, who sits there and watches there mp3s play!.. Your coding, or working or playing a game while having some nice mp3s as the background. Then you want the footprint of a program to be as small as possible.

      I absolutely cant stand all the superfluous buttons that itunes and wmp stick all over the place... Do i want song information filled with popups? a gigantic play button? no thanks... im not old and blind!

      --
      I'll just use my special getting high powers one more time...
  11. Those who forget history are doomed to reimplement by Thud457 · · Score: 2, Funny

    You lazy young whippersnappers and your precious Perl! You probably think you INVENTED write-only code. In my day, we wrote APL, and nobody liked it!!!!

    --

    the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff

  12. Ah yes. by Stumbles · · Score: 2, Funny

    What more documentation do you need than the source code? Seems plenty enough to me, seeing as by and large only developers would look at it anyway. Even if a non-programmer wanted to spin their propeller on it, the original author is only an email away. Seems rather complete to me. Of course the analysis would not be complete without an equation. 43 sounds about right to me..... it's one better than THE answer.

    --
    My karma is not a Chameleon.
    1. Re:Ah yes. by generic-man · · Score: 2, Insightful

      Yes, but the original author is not required to answer your question satisfactorily if at all. Companies that plan a massive roll-out of an ERP tool can't rely on ad-hoc support; companies typically expect a support contract of some kind. Some Linux companies offer support contracts, but only for products which they have chosen to support.

      --
      For more information, click here.
    2. Re:Ah yes. by pjt33 · · Score: 1

      At the very least I want a bit of plain English so that I can use grep to find the part of the source code I need to read without having to work out the naming conventions and hope they're used consistently.

    3. Re:Ah yes. by Anonymous Coward · · Score: 0

      Of course, all of us geeks who have ever worked in, or used, software support know it's a huge, useless crock of shit anyway. The suits will figure that out eventually. Probably when someone tries to lay the blame for a huge, devastating bug on their software vendor and fails miserably.

    4. Re:Ah yes. by Anonymous Coward · · Score: 0

      Mod parent troll. Have you ever actually programmed anything outside your parents basement?

    5. Re:Ah yes. by jdog1016 · · Score: 1

      Apparently many people in the community are either lazy or share your view, wrong as it may be. Anyone who has ever worked on large pieces of code knows this. Documentation in code is not only important, it is often as important as the code itself, and this is especially true in open source projects. Unfortunately, that still doesn't prevent it from being absent from most of them.

    6. Re:Ah yes. by Anonymous Coward · · Score: 0

      You have a good point, but the code is not going to tell you why this algorithm was used or why that design decision was made. Readable code with some minimalist comments on design decisions is what I strive for...

    7. Re:Ah yes. by Mr.+Slippery · · Score: 1
      What more documentation do you need than the source code?

      Ideally, requirements and design documents. And interface specifications for code libraries.

      Code tells you what's happening. It doesn't tell you what is supposed to happen or why.

      Seems plenty enough to me

      Then perhaps you only work on trivial applications. Or are very new to the field of software development.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
  13. Only one man... by game+kid · · Score: 3, Funny

    ...dared to challenge this article.

    (insert rousing action-series music) Hercules!

    --
    You can hold down the "B" button for continuous firing.
  14. Documentation? by Anonymous Coward · · Score: 2, Insightful

    The disadvantages of OSS development include absence of complete documentation or technical support.

    Yeah, it's nothing like closed source software, which always has complete documentation. I mean, look at Windows itself. All of that documentation about all of those API calls, lots of useful specifications about interoperating with the underlying kernel, plenty of specifications about the NTFS file system...

    Oh, wait. It's all kept "secret". Nevermind.

    1. Re:Documentation? by Anonymous Coward · · Score: 0

      Meh. No wonder there isn't any software available on the Windows platform. It must be too damn difficult to write it without knowing how NTFS and the kernel work internally.

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

      It must be too damn difficult to write it without knowing how NTFS and the kernel work internally.

      Wow, talk about missing the point completely. You did read my post, right?

      Why doesn't Linux have a simple, direct method of writing to an NTFS file system? Because there's no documentation readily available. It's kept locked up in Microsoft's vault.

      In the early days of the browser wars, why did IE keep having irreproducable speed advantages over Netscape? Because it referenced undocumented API calls, giving it the edge.

      Clearly, non-OSS software doesn't guarantee complete documentation, as the study's "OSS Disadvantage" implies.

      And clearly, you're blind to that fact because you'd rather support Microsoft than give the issue any thought.

    3. Re:Documentation? by hackrobat · · Score: 1

      Hi, clueless. When the article says that closed source software is well documented, it means it is well documented for _internal use_.

      Anyone who leaves a comment like yours is surely not qualified to comment on this topic. You've obviously never worked on a software project (closed or open).

  15. Not always true. by Richthofen80 · · Score: 1

    disadvantages of OSS development include absence of complete documentation or technical support.

    I don't think this is true. OSS, by its definition, does not preclude lack of docs or tech support. There are lots of projects and commercial or public ventures in OSS that provide great documentation and technical support.

    Individual developers or efforts spawn these things. Maybe the OSS community should set limited expectations in these fields and have a standards set. IE to be part of a certified OSS project (in whatever certification one would like to invent for this), a project must provide documentation for developers and users that covers X number of things. Same for tech support, require that levels of support be available and published, and turnaround times be expected, etc.

    I think that things like docs and tech support and others are , in the non-OSS world, enforced by competition. (IE, Everyone's doing it, we must do it to be competitive). Maybe the competition paradigm will be replaced by a standards / certification paradigm in the OSS world. (IE, everyone's required to do this to get on sourceforge or something)

    --
    Reason, free market capitalism, and individualism
    1. Re:Not always true. by sdm39 · · Score: 1

      The main problem with OSS documentation is that a lot of the core team members are involved in the evolution of the project and the less inclined users are on the doc. team. That's one of the reasons it lags behind.

  16. Re:Extremely Ridiculous Publishing by rdwald · · Score: 2, Informative
    GNU General Public License (GPL)
    Berkeley Software Distribution (BSD)


    are all defined in the article.

    But not ERP.

    Go figure.
    It seems like ERP stands for Enterprise Resource Planning.
  17. Mirror this article for closed source development. by dilvie · · Score: 3, Interesting

    I'd like to see the same story aproach done for closed source projects. Since the focus here was on open source, specifically, it wasn't really well balanced, and it didn't tell us anything new. Anybody who's browsed sourceforge could have told you that open source development has its share of problems.

    The real question is whether or not closed source projects are all that better off.

  18. Re:Those who forget history are doomed to reimplem by Anonymous Coward · · Score: 1, Funny

    In my day, we used punch cards, and once you made a hole, it was there for life.

  19. Disadvantage? by null+etc. · · Score: 2, Insightful
    The disadvantages of OSS development include absence of complete documentation or technical support.

    And this differs from commercial software, how?

    I've spent 20 hours trying to figure out how undocumented or broken features behave in Rational's Enterprise Product Suite 2003. And that's expensive software.

    I'll choose the software whose source code I can examine any day of the week. Granted, I'm a developer. But it's much worse to lack both documention and source code.

  20. Design docs by cowboy76Spain · · Score: 1

    What I suffer more for are for design docs. I am not askind ERD, DFD or UML, but inline docs. For functionality docs there exist automated ways to make sure that developers write a minimum documentation (v.g., checkstyle can force people to document all Java methods if they want to commit them to CVS). The trouble is when I see a code (and I am not refering to OSS only) that performs the functionality in what looks like an odd way, just because the programmer did not care to write that "if you do it in the way you are thinking, you'll find those troubles". And, in a code that is tipically subject to change by a larger group of developers (and with less formal and informal communication channels) this can lead to adding the same bug again and again...

    --
    Why can't /. have a rich-text editor? Editing your own HTML is so XXth century.
    1. Re:Design docs by miu · · Score: 2, Insightful
      Required javadoc/doxygen/VCS comments often result in "XXX: required for checkin" type comments.

      Not knocking inline documentation - I think it is a great idea, but you have to make sure that developers buy into it.

      Really there is a lot of common sense that can go into coding standards to help reduce recurring bugs in "problem functions". Rules for initializing and using globals, rules for maximum method length, code ownership, and small group code walkthroughs can do a lot to prevent the kind of problems you mention.

      --

      [Set Cain on fire and steal his lute.]
    2. Re:Design docs by tcopeland · · Score: 1
      > Required javadoc/doxygen/VCS comments
      > often result in "XXX: required for checkin"
      > type comments.

      So true. Or, just as bad:
      /**
      * The getFirstName method returns this person's first name
      * @return the first name
      * @author Fred
      * @version 1.2.1.3
      */
      public String getFirstName() {
      return firstName;
      }
      Argh!
    3. Re:Design docs by miu · · Score: 1

      ...but that kind of passive aggressive joke is only really funny if you can manage to keep a straight face during a code walkthrough :)

      --

      [Set Cain on fire and steal his lute.]
    4. Re:Design docs by tcopeland · · Score: 1

      > a straight face during a code walkthrough :)

      In the code reviews I've attended, this code would be greeted with "but where's the '@param none' Javadoc?". Argh++.

    5. Re:Design docs by miu · · Score: 1

      There are few greater wastes of time than a code review attended by more than 4 programmers (and more than 0 non-programmers, the boss should only be involved if there is a serious problem), so I just hope that that line was delivered by a smirking co-peon.

      --

      [Set Cain on fire and steal his lute.]
    6. Re:Design docs by tcopeland · · Score: 1

      > There are few greater wastes of time then a
      > code review attended by more than 4 programmers

      Well said!

      > hope that that line was delivered
      > by a smirking co-peon.

      It certainly should have been :-)

    7. Re:Design docs by Mr.+Slippery · · Score: 1
      Required javadoc/doxygen/VCS comments often result in "XXX: required for checkin" type comments.

      True. This is why, in the topsy-turvey world of software development, it's often useful to have a nice, solid piece of wood in your hands...sometimes a LART must serve as a "Developer Attitude Readjustment Tool."

      Rules for initializing and using globals, rules for maximum method length, code ownership, and small group code walkthroughs can do a lot to prevent the kind of problems you mention.

      Well, a method should be as long as it needs to be and no longer; I disagree with artificial limits that end up breaking one subroutine into n plus one that does nothing but call those parts in sequence. But code walkthroughs/reviews, hell yeah. Not only do they make for better code, they're educational and thus make for better coders.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    8. Re:Design docs by miu · · Score: 1

      Well yeah, if you do nothing more than break longArseFn into laf_1, laf_2, etc. and call the pieces in order then you gain nothing - the "function" is just as long as it was before and you probably even wind up adding some additional glue code. More often though a function winds up doing some extra "stuff" that can be put into a helper function or turns into a routing/dispatch function that uses the infamous copy and paste method of code reuse. It is not absolute, but 100+ line functions seem to be so prone to problems that they cry out to be broken into smaller parts that only do what they need to and have repeated code in a single spot.

      --

      [Set Cain on fire and steal his lute.]
    9. Re:Design docs by Anonymous Coward · · Score: 0

      I remember once, back in the day, writing a MAPI service provider for Outlook... my most disgusting piece of code ever, a 250 line function that populated the property array for Outlook to load my app.

      I fully intended to go back and refactor it once I had a stable provider running, but I quit that job. Oops.

  21. Is maintainability the problem? by gelfling · · Score: 1

    OR is it complex melange of requirements, funding, skills, time, staffing, testing and packaging? I looked at LWN yesterday and noted there were 400+ different distros for Linux. Probably 300 of them are either orphans or one or two person operations or the work of whichever crop of college labrats are working the time. Maintainability in this context is really a matter of discarding 4/5ths of the code out there that should be left to die. Take the time, skills and money and build more cooperative projects over a smaller set of large distros. Or if that's not feasible, then break the problems down into snap ins that more generic.

  22. I guess... by game+kid · · Score: 1

    ...that's where it'll stay, once you get a new PC. I've been seeing less floppy drives built-in these days, if only because of CD-R[W]s, the Internet, and now USB keys and the like.

    --
    You can hold down the "B" button for continuous firing.
  23. Experience may vary... by moz25 · · Score: 2, Interesting

    The more high-profile OSS projects mostly do have quite extensive documentation and various mailingslists and forums to support it. Plus, if official support is lacking, it is always possible to get some sort of support from a third-party company as they have exactly the same access to the software as the original developers. With other words: the spectrum of support you *can* get is much larger, even if the support you *do* get (on the smaller) projects may be lower on average.

  24. Deja vu by Bozdune · · Score: 1

    This is so reminiscent of other stupid claims of the past. "Cars can't go 60 mph." "Planes can't go supersonic." "Computers can't play checkers." "Computers can't play (pick one) expert level/master level/grandmaster level/world champion level chess." And so on.

    Now it's "Open source can't build ERP systems." As if it's that f-ing hard to glue together an MRP system, an accounting package, and maybe some CRM and HR software. I mean, duh.

  25. Re:Bias! Bias! by Anonymous Coward · · Score: 0

    "Informative," please.

  26. No suprise, some projects are best suited for OSS by segmond · · Score: 3, Insightful

    It takes being interested in a project for one to pour himself into it. Most hackers/programmers have a thing for Operating System and programming tools, So it's not suprise that OS projects are doing betters. Or Programming tools, GCC, editors, Programming Languages, Databases... I love to program, but I could never find myself programming an ERP system, just for some company to make money of. How is it going to meet my personal need? There has to be something in it for me!

    This is why accounting software, office software and lots of general use applications "suck" in the OSS word. The "motivation" is not there, even "ego" is not a good enough motivation. My fellow hackers will give me more props for some lousy 500 line python hack which does something weird and not so useful than a complete accounting software suite.

    What would be interesting is to see a group of companies start an OSS project from the ground up, pour their own money, pay programmers. But then again, there is no motivation for that! Big companies are only interested in jumping on OSS projects that happen to have gained fame...

    --
    ------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
  27. You don't want to know what goes into sausage by melted · · Score: 4, Informative

    I've worked on a major product in CRM market, and let me tell you, don't want to know what goes into sausage. If you knew, you wouldn't touch this code with a 10 foot pole much less bet your company on it.

    I'm sure it's the same with ERP. It's just a huge polished turd, but because you don't have the source code you don't know it's a turd. You only see the polish.

    1. Re:You don't want to know what goes into sausage by Anonymous Coward · · Score: 1, Insightful

      Bingo! Actually that's true of most closed source software. Software is usually closed source because the source code is ugly as crap. If you were to buy a building, you'd want to see the blue prints first before the building was built. If you want to buy software, you'd want to see the source code first. Companies don't want you to see the source because then you'd realize the software is nothing but a shakey foundation ready to collapse.

    2. Re:You don't want to know what goes into sausage by Anonymous Coward · · Score: 0

      Best. Post. Ever.

    3. Re:You don't want to know what goes into sausage by Anonymous Coward · · Score: 0
      I'm sure it's the same with ERP. It's just a huge polished turd, but because you don't have the source code you don't know it's a turd. You only see the polish.

      The Polish? The Polish are hiding turds? What kind of racist crap is this?


    4. Re:You don't want to know what goes into sausage by Skuld-Chan · · Score: 2, Informative

      I'm on the support side of a crm product and I totally believe you.

      Its often a case of fix one bug create 2 more. We've got customers who refuse to upgrade because they are worried about losing data, running into strange bugs that didn't exist in previous versions etc.

      I think a lot of stems from the fact that developers of this stuff tend to focus on putting new features in the program rather than stabilizing or documenting it.

    5. Re:You don't want to know what goes into sausage by plover · · Score: 1
      Let me guess: siebel?

      Not that I've dealt with them directly, but I've been forced to wait several hours for AT&T wireless people to fight with unfunctional screens, overloaded servers, and the poorest workflow I've ever seen in my life. It took TWO HOURS to buy three g*ddamn cell phones. TWO HOURS to click on a dozen screens or so. People were walking out of the store in disgust waiting for other people to get activated. It also took THREE HOURS on hold to resolve the issues related to the salesperson selecting the wrong package on the web screen anyway.

      I found out later from a /.er that siebel was responsible for that piece of crap CRM system. (He worked in their call center and dealt with the exact same screens that the salespeople were forced to use.)

      I complained, for whatever that's not worth. The experience left me so soured that I am completely done dealing with AT&T, and that disgust is carrying over to Cingular. The first chance I get to break this contract I'm heading over to T-Mobile like flies to sh!t. As far as I'm concerned, AT&T Wireless bet the company on siebel and lost.

      BTW, if anyone here on /. works for siebel, please don't take personal offense just because I wish your company would be swallowed up by a giant cesspool and all the employees slowly drowned in the feces of the victims of your CRM system. It's just business.

      --
      John
  28. OCO is Loco by KiltedKnight · · Score: 1
    That's what was on a sign in a coworker's office many years ago when I was working at a company that used IBM Mainframes, Solaris, and various other systems too.

    It was one of my first jobs, so she explained it to me by saying that OCO meant "Object Code Only"...

    --
    OCO is Loco
  29. ERP by fatcowtoes · · Score: 3, Insightful

    However, it is still questionable whether systems like ERP could be developed successfully as OSS projects.

    Yeah, it's also still questionable whether systems like ERP can be developed successfully at all. I'd like to see statistics on the number of ERP implementations that go horribly wrong and wind up crippling or even bankrupting companies.

    1. Re:ERP by cardpuncher · · Score: 1

      I'd second that. I know a couple of people who work for ERP companies. The systems are often installed on the orders of senior management who don't actually understand how the business processes work in their own organisations.

      Consequently, the ERP systems, despite lots of expensive customisation, may often integrate poorly with the business they are supposed to facilitate. If the front line staff have the flexibility, they work round the ERP system and get the business done anyway, though the information the managers receive is junk. If there is no such flexibility, the impact on the bottom line can be quite serious (see under HP).

      But that goes for most software used in a commercial environment - there's usually some area in which the business has to adapt to the strictures of the software. Some ERP salesmen would have you believe otherwise, though.

  30. OSS projects should be more maintainable by zutroy · · Score: 1

    In a commercial organization, people are able to have face-to-face meetings and ask each other questions with few problems. In a widely-distributed open-source project, communication can be much slower and misunderstandings abound. All of this should be incentive to make clear, concise interfaces with method names and variables that are clear to another programmer. So it seems to me that the most successful open source projects (the ones with the most developers) probably have very clean and maintainable code. If anyone who has participated in Firefox would like to comment, I'd be interested in the clarity of Mozilla's code.

    1. Re:OSS projects should be more maintainable by jbolden · · Score: 1

      I've seen discussions on this very topic KHTML vs. Mozilla. Mozilla is very well documented and the naming convention is clear but very abstract. KHTML because it got to use QT toolkit turned out to be much more understandable, but the archtecture wasn't nearly so abstract. So KHTML wins now however 15 years from now Mozilla may not be much worse while KHTML (unless it undergoes a rewrite) may be a nightmare.

      Both are far better than what would likely exist in the commercial world.

  31. Guess we'll find out. by Brent+Nordquist · · Score: 2, Informative
    However, it is still questionable whether systems like ERP could be developed successfully as OSS projects.

    GNU | Enterprise

    --
    Brent J. Nordquist N0BJN
    1. Re:Guess we'll find out. by cogitolv · · Score: 1
      --
      Well, sometimes you eat the bear, sometimes the bear eats you.
  32. Why not open-source ERP? by SharpFang · · Score: 2, Insightful

    No joking here. An old question, what's the best accountant's answer to "how much is 2+2" is "whatever you'd like it to be."

    Custom Enterprise Resource Planning software sometimes includes parts no boss would want the IRS or other authorities to know. With Open Source they become blatantly obvious. In this case Security Through Obscurity is the only safe model.

    Sure a HONEST resource planning software can be open source. But it won't ever make the company as successful as one with some... extras.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    1. Re:Why not open-source ERP? by Anonymous Coward · · Score: 0

      The fraud doesn't happen in the software. It happens behind the accountant's desk.

  33. Jakarta code is fairly damn decent. by tod_miller · · Score: 1

    I actually learnt a lot of programming top from just studying the code as I integrated thier solutions.

    People who write OS are because they are so good at what they do they enjoy it.

    Let them manage thier code and quit bitching, not all OSS is a community OSS.

    community (ala jakarta) are awesome and lovely, and better then browsing pr0n.

    greenday on tv. it all keeps adding up... I think I cracking up.... hdfkasu0 rar.

    --
    #hostfile 0.0.0.0 primidi.com 0.0.0.0 www.primidi.com 0.0.0.0 radio.weblogs.com
  34. bogus measurements by bluGill · · Score: 1, Interesting

    I gave up when I read about counting lines of codes with comments. Comments are useful, but they indicate nothing about quality or lack thereof. Some code is self documenting, and thus has few comments. Other code is just uncommented. You cannot safely assume either one, which is what you must do when using any automatically commenting counting method.

    Their other measurements seem bogus too, but I'm not interesting in looking deeper into them.

    1. Re:bogus measurements by Anonymous Coward · · Score: 0

      50K LOC is not self-documenting, never, not even close.

      Prove me wrong by a single counter-example. Self documenting does not mean the author understands the code, it means someone else can pick up the code and understand it easily.

      Some languages support constructs that are somewhat more self-documenting than other languages, Eiffel programming by contract comes to mind. But Eiffel still includes comments for good reason.

    2. Re:bogus measurements by lpontiac · · Score: 1

      posts[11682331].moderate(INFORMATIVE); // moderate post 11682331 as +1, informative

  35. Re:No suprise, some projects are best suited for O by zutroy · · Score: 1

    But what incentive would the companies have to start an OSS project? Why not just make it closed-source and, at the very least, have "security through obscurity" (which DOES work, at least for a while)?

  36. In theory... by the_skywise · · Score: 3, Interesting

    I always thought that if you have enough people "chewing" (working) on the same module that it should eventually self-standardize into a least common denominator of maintainability. Which, if not the most maintainable code, should be as maintainable as possible given the design and interoperability constraints (with other modules). Evolutionarily speaking... it HAS to be maintainable or it "dies" (becomes unmaintained and then unused or superceded by another implementation).

    On the flip side, a closed source module could be built "top down" to a unified set of coding standards that would help maintainability. But it's not a requirement. I've seen plenty of code bases built just this way that were horrific... But still maintained and not changed because management was willing to throw enough money to keep things going (but not enough money to make it more interoperable).

    YMMV.

    1. Re:In theory... by Anonymous Coward · · Score: 0
      Consider a complicated module with few maintainers. Those who maintain it know the workings of the module through long experience. However, the learning curve is steep, requiring months of study to come up to speed. As time goes on, because of the steep learning curve, there are fewer and fewer new maintainers. No one is able to replace the old maintainers who leave. The module becomes more and more unmaintainable.

      Not just conjecture, but his is what happened to the FreeBSD kernel. It has drifted into an unmaintainable condition. PHK is the only person left who (we assume) fully understands the FreeBSD kernel. Most all of the standard written documentation is out of date. Even the smallest code change has a large chance of causing unwanted ripples and side effects. And PHK now requires money as a motivation to continue his work. It's not fun anymore.

      Your conjecture about self-maintainability is accurate if the complexity of the module remains within certain bounds. Exceed the complexity limit and the module ceases to be "self-maintainable". Module complexity will predict whether an open source module has a maintainability advantage. A low complexity module will naturally attract more looks from the pool of willing eyes. Exceed the complexity limit and you lose the maintainability advantage of Open Source Software.

  37. maintainability index = bullshit by idlake · · Score: 2, Insightful

    You can find a description of the maintainability index here.

    If you look at the desription, you'll see that the equation was mainly "calibrated" based on a bunch of projects at HP. But fitting such an equation to a handful of self-selected projects doesn't give you any idea of how statistically valid it is.

    Furthermore, the maintainability index contains measures that you would expect to go up as software systems become bigger; therefore, it isn't even a meaningful comparison of software systems of different size (or a single software system over time): maintaining a 1MLOC project is just a lot harder than maintaining a 100kloc project, but you may be doing equally well on both of them.

    Particularly amusing is a term of 50 * sin (sqrt(2.4 * perCM)) in the maintainability index, where perCM is the average percentage of comment lines per module. As perCM ranges from 0 to 100, the argument for the sin(.) function will range from 0 to 15 (ponder for yourself what that means about how much you should comment).

    Until someone produces sound maintainability data with hundreds of software projects, the use of MI is just bullshit.

    1. Re:maintainability index = bullshit by pclminion · · Score: 4, Insightful
      Particularly amusing is a term of 50 * sin (sqrt(2.4 * perCM)) in the maintainability index

      It's only amusing to people who don't bother to think about why it's there. It's actually a very insightful part of the metric.

      First of all, perCM ranges from 0 to 1, not 0 to 100. Yes, that isn't explicitly stated, but it would be ridiculous otherwise. Second, try looking at the damn graph.

      As I told somebody else, do it now. Don't pretend to do it, GRAPH the damn thing and look at it: sin(sqrt(2.4*x)) for x=0..1.

      That graph makes it completely transparent what they're trying to accomplish with that part of the formula. First off, if comments are 0, the value is 0. Having no comments does not positively impact maintainability! Second, the function PEAKS at around 0.43. This represents an avgCM of 0.03, or 3%. Then, the function begins to go down again, but not as drastically as it rose.

      What this is saying is that the benefit of comments has a maximum at around 3%. Having more comments than this tends to DECREASE the maintainability (and this is borne out by experience). However, having too many comments is better than having too few comments, so the function is skewed to the left side by the sqrt() function.

      You see, every part of that expression makes total sense if you spend more than 2 nanoseconds thinking about it. Sheesh.

    2. Re:maintainability index = bullshit by idlake · · Score: 1

      First of all, perCM ranges from 0 to 1, not 0 to 100. Yes, that isn't explicitly stated,

      Oh, it is quite explicitly stated: perCM is described as a "percentage" (as in "per hundred"), so it ranges from 0 to 100, not 0 to 1. If you are saying that it ranges from 0 to 1, then the description is wrong; the proper term for that is a "fraction". You would think that software engineers, of all people, would be sensitive to using the right names and units, but apparently not.

      What this is saying is that the benefit of comments has a maximum at around 3%. Having more comments than this tends to DECREASE the maintainability (and this is borne out by experience).

      Well, what you illustrate again is that the MI is a seat-of-the-pants kind of measure that was thrown together because it looks nice, not because anybody thought about statistical validity.

    3. Re:maintainability index = bullshit by pclminion · · Score: 2, Informative
      Oh, it is quite explicitly stated: perCM is described as a "percentage" (as in "per hundred"), so it ranges from 0 to 100, not 0 to 1.

      The etymology of the word is irrelevant. In practice, people use the term "percentage" to mean parts-in-100 OR a fraction. Look at the second definition listed in the dictionary. It's a "part of a whole." I've used it both ways many times. So has every engineer I've ever worked with. It's usually obvious from the context, as it was in this case.

      Well, what you illustrate again is that the MI is a seat-of-the-pants kind of measure that was thrown together because it looks nice, not because anybody thought about statistical validity.

      Do you even know what the term "index" MEANS? It's a magical number used to quantify the unquantifiable! It's dimensionless! What, do you think the Consumer Price Index is any less black magic? Nobody ever implied that the number has any statistical validity, it is just a number which happens to do a fairly good job at helping people compare things.

      If it's useful to you, use it. If not, don't.

    4. Re:maintainability index = bullshit by idlake · · Score: 1

      In practice, people use the term "percentage" to mean parts-in-100 OR a fraction

      Numerically, it only means one thing: "fraction or ratio with 100 understood as the denominator". If you are using it in any other way, you are using it incorrectly.

      The fact that colloquially people confuse the two sometimes is no excuse. Colloquially, people also confuse "power", "strength", and "force", but as an engineer, you better keep them straight; that's part of your job.

      Look at the second definition listed in the dictionary. It's a "part of a whole."

      Yes, but not as a numerical value.

      Nobody ever implied that the number has any statistical validity, it is just a number which happens to do a fairly good job at helping people compare things. If it's useful to you, use it. If not, don't.

      So, you agree then: the maintainability index is bullshit because nobody has established that it actually tells us anything about the maintainability of software. It simply is a number that everybody can determine for themselves whether they find useful.

      Of course, that means that the paper we are talking about has no significance: since its measure of maintainability has not been validated, we can draw no conclusions about the maintainability of OSS from the MI.

    5. Re:maintainability index = bullshit by pclminion · · Score: 1
      So, you agree then: the maintainability index is bullshit because nobody has established that it actually tells us anything about the maintainability of software.

      I agree with everything about your statement except the "bullshit." Do you really divide the world into two halves like that, where everything that isn't statistically solid is "bullshit?"

      In fact I'm having a hard time imagining a type of metric that you WOULD consider valid. Care to explain?

    6. Re:maintainability index = bullshit by idlake · · Score: 1

      In fact I'm having a hard time imagining a type of metric that you WOULD consider valid. Care to explain?

      The problem is that a "maintainability index" claims to measure something called "maintainability", but how it defines "maintainability" is arbitrary and ad hoc. What it calls "maintainability" has a priori nothing to do with what "maintainability" means to a software practitioner, namely predicting how much effort and money fixing bugs and adding features will take over time.

      There are lots of "metrics" (in the SE sense, i.e., things you can measure about code, not in the mathematical sense) that don't suffer from that problem. You can easily define and measure what LOC or man months or cyclomatic complexity mean. Those are metrics where it is perfectly valid to say that "if you find them useful, you use them" because they don't pretend to measure anything other than pretty straightforward code properties. When people use those metrics, they generally calibrate them themselves for their own environments, so the user of those metrics determines how properties like maintainability and cost depend on those measured code properties.

      So, you can't just attach arbitrary names to some ad hoc combination of code complexity measures; as this paper shows, if you call something a "maintainability index", people are going to use it as such, and the fault is partly with naming it incorrectly. The term "maintainability index" should be reserved for what the term suggests: a numerical value whose order (but not necessarily magnitude) reflects as closely as possible the amount of money and effort required to maintain a software project.

    7. Re:maintainability index = bullshit by pclminion · · Score: 1

      Then I think we understand each other. You're arguing that the concept of "maintainability" is inherently unquantifiable, or that it's too vague a term to be quantified. I mostly agree with that. What I was taking issue with is the statement that the sin(sqrt(...)) was essentially just mathematical voodoo. It actually tries to represent something that we intuitively know to be true -- too few comments are bad, too many comments are bad, but it's better to have too many than too few.

    8. Re:maintainability index = bullshit by waveclaw · · Score: 1
      What this is saying is that the benefit of comments has a maximum at around 3%. Having more comments than this tends to DECREASE the maintainability (and this is borne out by experience). However, having too many comments is better than having too few comments, so the function is skewed to the left side by the sqrt() function.

      You see, every part of that expression makes total sense if you spend more than 2 nanoseconds thinking about it. Sheesh.


      You math skills are excellent, but I question the critical reading that has been put into this article. Try thinking a little harder this time: by what criteria are you selecting your comments to make that 3%?

      The problem with metrics (a science unto itself) is that they are frequently malformed, miscalculated and misunderstood. From reading the paper, I don't see where Samoladas, Stamelos, Angelis, or Oikonomou has done the basic engineering homework to clearly define any metrics. Certainly, such as you have, they throw numbers and equations around.

      Unforuntely, without dimensions or expected values and lacking in definition and precision, the conclusion drawn from this and other indices they use is worthless. This paper has data, but the paper's conclusions require knowledge that hasn't and cannot be derived from the data since they are as you put it 'dimensionless numbers' and nothing more[1]. Dimensionless, meaningless numbers are okay as long as you realize that they are meaningless and don't try to conclude something from them. Metrics require a lot more substative though into where the are derived, the consuquences of various values, and implications of typical changes in value. I realize that none of that is 'math' but so should any reader of a paper purporting to make conclusions such as this one.

      Reading this paper, at the most, I know that certain computable metrics (defined by their references) have values have been reported for certain OSS software projects. Furthermore, I know those projects have obtained values comperable to known values for traditional (closed source) examples in the literature. Unforuntely, I know that this tells me nothing.

      The paper hand waves it's backing data with

      Percentage of lines of comments with respect to the number of lines of code (PerCM) describes the self-descriptiveness of the code.

      I can get 3% comment ratios by including a chunk of shakespear with every function. As long as I use shakespearian function and variable names, I'm certainly going to meet Samoladas, et al.'s criteria for descriptive.

      The problem is that a LOT of comments, while describing the code, do not contribute anything.

      For example: /usr/src/linux/drivers/net/sunhme.c

      /* Would you like fries with that? */
      hme_write32(hp, tregs + TCVR_FRAME,
      (FRAME_WRITE |(hp->ipaddr...

      Certainly, the old Sun driver code hits near the 2-5% mark. However, unless you're looking for comedy in the Linux kernel code comments, this doesn't help the maintainability or understanding of this line of code.

      There are a lot of good metrics defined in the references for this paper and a lot of good research on maintainability was quoted. From reading this paper, however, I can say that this is not a reference that should join them nor does it say anything useful.

      ------
      1. The metric Netwon defines force, the meters-per-second-squared defines acceleration and the kilogram defines mass. The equation F=MA relates these three quantities, but even in it's absence they have numerious properties they give to any assocated quanities. It is these properties and their implications that make Newtons and kilograms usefull. Quantities without dimension are rare in a real science, such as physics or biology and typically arise from equations that define them as well as any other

      --

      "You cannot have a General Will unless you have shared experiences. You cannot be fair to people you don't know."
  38. No ERP, eh? by Anonymous Coward · · Score: 1, Informative

    However, it is still questionable whether systems like ERP could be developed successfully as OSS projects.

    It is funny how sourceforge lists several ERP-systems then. And the list goes on, by the way.

  39. Re:No suprise, some projects are best suited for O by Homology · · Score: 1
    What would be interesting is to see a group of companies start an OSS project from the ground up, pour their own money, pay programmers. But then again, there is no motivation for that! Big companies are only interested in jumping on OSS projects that happen to have gained fame...

    There are several examples of companies doing this, singly if not in group. For instance, Subversion has paid developers to design and implement Subversion. X11 has seen quite a bit of paid development by various companies.

  40. were you reading the same paper? by idlake · · Score: 2, Interesting

    From the conclusions:

    Using tools such as MI derived for measuring CSS quality, OSS code quality appears to be at least equal and sometimes better than the quality of CSS code implementing the same functionality.

    So, apparently, the authors think that OSS is as a general rule better than CSS from a maintainability point of view.

    1. Re:were you reading the same paper? by aminorex · · Score: 1

      That is consistent with my experience. Minor projects with one or two or three developers will often be a morass, but when an OSS project scales to perhaps 5 or 6 developers, and dozens of patch contributors, it has to have it's ducks in a row,
      or it will get forked by someone more competent.
      Documentation is less reliably good than is design.
      "Architects" who puff up unimplementable dream
      designs don't exist in the open source world.

      --
      -I like my women like I like my tea: green-
  41. Re:Extremely Ridiculous Publishing by ergo98 · · Score: 1

    It's Enterprise Resource Planning, and is a catch-all phrase that allows large enterprises to dump millions on garbage solutions.

    It really boggles the mind that ERP is presented as some sort of mythical height - most ERP systems are absolutely abysmal, terrible monstrosities. Most commercial software bought by Joe and Martha Average has a complexity, and quality, surpassing ERP systems.

  42. Re:No suprise, some projects are best suited for O by segmond · · Score: 1

    If they are going to join and support an existing OSS project, then why not start one? Of course, why open source a project from the get go when they can sell it?, that's the problem. Just like they don't have any incentive for pure OSS project unless there is cash in it for them, OSS hackers don't have incentive for business type of software unless there is cash in it.

    --
    ------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
  43. Martin Taylor would say... by E+IS+mC(Square) · · Score: 1

    Windows? Ask Martin Taylor. He whould say in some very specific scenario on some very specific platforms, for some very specific tasks, Windows code is, say, more maintainable by some certain set of people.

    In other words, if he can paraphrase it, its like 'Hey, i can still compile it (windows code) in some specific cases!'.

  44. Open Source ERP by stiller · · Score: 5, Interesting

    However, it is still questionable whether systems like ERP could be developed successfully as OSS projects.

    I could be mistaken, but isn't Compiere an established OSS ERP implementation?

    I think the questin shouldn't be: 'Can software like ERP be developed as OSS?' But rather: 'Are there enough people in the OSS community interested enough to develop this kind of software without any form of financial support?' I think the answer has turned out to be 'no'. The same goes for things like (good) financial software, and anything that would require heaps of work, high precision and coordination, but no spectaculair result for the common man to brag about.

    1. Re:Open Source ERP by hey! · · Score: 1
      IIRC Compiere requires Oracle, which is not free as in beer or in speech.


      But rather: 'Are there enough people in the OSS community interested enough to develop this kind of software without any form of financial support?'


      Hmm. I wonder though. How many large/important OSS projects are run without people who do not receive some form of compensation from their employers for at least part of their efforts? After all, organizations have itches too.


      It would be interesting to do a study of this; leaving aside marquee names like Linus Torvalds or Larry Wall, could you characterize the various ways that OSS development is related to putting bread on the table for developers? The argument in the early days was always that programmers would starve. Well, obviously they haven't. Somehow the people doing this stuff are making a living. How much of it is scratching their employers itches, how much of it is on the sly, and how much of it is hobby work?

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    2. Re:Open Source ERP by jbolden · · Score: 1

      This was the argument as to why OSS could never develop a GUI until the KDE project came along. A really good widget set and people recruited who were interested in doing GUI work (and not X work) changed everything.

      I'm not sure there aren't OSS programmers who would like to do something like an ERP system. I'm just not sure the pieces are in place yet. For example we still don't have any open source database which is nearly as rich as Oracle.

    3. Re:Open Source ERP by kbahey · · Score: 1

      There is another example of Open Source ERP: SQL-Ledger.

      It is open source, and uses PostgreSQL as the database, not Oracle.

      My brother uses it to run his business for years now.

      He contributed the Arabic internationalization part of it. He was interviewed by the Egyptian LUG on that some time back.

    4. Re:Open Source ERP by Anonymous Coward · · Score: 0

      I'm an open source developer, and i've hired a few other programmers to help me. Over the last 5 years i have been working on a complete open source ERP solution. Its not easy, on your time or finicially.
      But i will get there. And i know there are others that will try also. My framework: http://bond.treshna.com

  45. Confusion by shaitand · · Score: 1

    These gentlemen seem to be implying that open source is a development model when in reality it is a licensing scheme.

    Microsoft might want you to believe open source is a development model they can learn from and harass the benefits of, but the truth is that open source is a set of rights and philosophy related to licensing. An open source project can use any development model.

    1. Re:Confusion by PickyH3D · · Score: 1
      The general idea of "open source" is the development of open programs. In projects, (not just something some guy puts out for the world to see), just about anyone can submit code and help out.

      You can have OSS that is completely commercial, but who wants to help out with that if they are not going to get any benefit from it, while the parent company receives all of it?

      I am far from an OSS fanboy, but one thing I will say OSS is NOT, is license dependent.

    2. Re:Confusion by shaitand · · Score: 1

      The general idea of open source is FREEDOM. It is the that everyone can see, manipulate, modify, and redistribute the source code and that nobody can lock them out.

      Yes, the purpose of source code is development, so they go hand in hand, but there is no one specific "open source development model" there are as many development models as there are projects.

  46. Corporate OSS is an Ad-hoc Corporate Alliance by Mr.+McGibby · · Score: 3, Insightful

    Good corporations understand the value of corporate alliances. Often, the cost of doing something by yourself isn't worth the payout. Business support software is one of those. Companies don't make money from selling their internally developed software. OSS provides a means for lots of small companies to get together to create this kind of software, without having to create a formal agreement. Sure, some companies are going to take advantage, but if it is open, then every company can add the features that it wants.

    The problem with a software company filling this role is that their system is proprietary and unmodifiable by the client. Most companies *do* have the resources to hire a programmer or a contractor to add a feature to a piece of OSS.

    Anyone have any ideas on how to prevent abuse of such a system? That is, too many people using the system and not enough people contributing?

    --
    Mad Software: Rantings on Developing So
    1. Re:Corporate OSS is an Ad-hoc Corporate Alliance by rjstanford · · Score: 2, Informative

      The problem with a software company filling this role is that their system is proprietary and unmodifiable by the client. Most companies *do* have the resources to hire a programmer or a contractor to add a feature to a piece of OSS.

      Not quite. Most enterprise software comes with source available, and pretty much all of it gets customized once you get into bigger customers. Its actually a real PITA when it comes time to do upgrades. And yes, I'm an architect at an ERP vendor.

      --
      You're special forces then? That's great! I just love your olympics!
    2. Re:Corporate OSS is an Ad-hoc Corporate Alliance by Ogerman · · Score: 1

      Not quite. Most enterprise software comes with source available, and pretty much all of it gets customized once you get into bigger customers. Its actually a real PITA when it comes time to do upgrades.

      That's exactly it.. if in-house customizations were made cleanly using proper APIs and proper modular design techniques, they could be contributed back to the community codebase such that all future upgrades would automatically include the improvements and thus reduce the need for patch & hack work. Sure, there's a fair bit of work to do either way, but the advantages to this approach are obvious. To get your own code accepted into the community codebase, it must conform to rigid quality specifications. But in return, you also get high quality improvements from others. Done properly, this is a hands down win-win for all companies involved.

      The problem is that much of today's software is not designed well enough to allow for this. Customizations too often require modification to core application code. This needs to change, but Open Source alternatives are the perfect place to start. So, in contrast to the view of this article, I would argue that "ERP" and other business softwares are the perfect place for OSS. But this is a purely corporate form of OSS.. not hobby-hacker OSS.

      What we need are some "professionals-only" projects aimed at meeting business needs. They can be commercially-supported or they can be designed to build ad-hoc commercial alliances. Make no mistake. This is the "killer app" of OSS in the business world -- not Linux or OpenOffice. (Although these and others will also skyrocket in popularity once the door of Free software is flung wide open.)

    3. Re:Corporate OSS is an Ad-hoc Corporate Alliance by Ogerman · · Score: 2, Interesting

      Anyone have any ideas on how to prevent abuse of such a system? That is, too many people using the system and not enough people contributing?

      In my experience, you can't worry about the people who don't contribute. It's their own loss -- though most will realize with time that it isn't worth the cost of maintaining private forks.

      The business decision for OSS is always a very calculated one. It comes down to this: after investing in development of any necessary improvements to an OSS package, are you still saving money? The answer is often different depending on the term -- such as in the case of a less-mature project that needs more work. It is easy to envision a world where the short term costs of choosing OSS are always cheaper because everyone else has already done the majority of the work. But this is not where we are at today. As a result we need a maximum of cooperation with the realization of those involved that the beginning stages are the roughest and most expensive. Perhaps this is why we've seen the most OSS involvement from larger companies -- they have the resources to think longer-term and take more risks. For the rest, we probably need more heavily commercialized OSS business software to spread the load/risk.

  47. I wish people would stop talking about... by m3741 · · Score: 2, Interesting

    the lack of technical support for open source software. I have gotten more help on more issues by searching Google than I have EVER gotten from some "central" help center for any closed source application.

    1. Re:I wish people would stop talking about... by Random+Walk · · Score: 1
      If a Fortune 500 company wants to roll out some software, they don't care about Google, mailing lists, forums, and the like. They will want to hire a consultant who will deliver the thing.

      The simple fact is, most companies will ignore OSS because there are no consultants for it. And there are no consultants, because companies are not interested in the software (kind of circular problem).

  48. Re:Extremely Ridiculous Publishing by Bozdune · · Score: 4, Insightful

    Right, and what the hell does "Enterprise Resource Planning" mean?

    It used to mean the combination of MRP ("Material Requirements Planning") + Accounting. Then along came PeopleSoft and kinda changed it to HR + Accounting. Then along came Siebel and everyone scurried to make it MRP + HR + accounting + CRM (not quite there yet, though). Then they noticed Kronos and they all scurried to make it MRP + HR + Accounting + CRM + Time & Attendance. And failed, because Time & Attendance is a big pain in the butt. Heh. So they partnered with Kronos instead.

    The march of "embrace and extend" continues. Next app up: Expense Reporting (say bye-bye to Concur, etc., that's an easy app). Already on deck: data warehousing (say bye-bye to Cognos, Business Objects, etc., say hello to SAP BW). Soon to come: business process automation (say bye-bye to Ariba, etc.)

    And so on, if you believe the pundits.

    "ERP" has become a meaningless acronym, an umbrella under which every business app known to man is rammed into the same stinking pile of multi-million dollar shit. At some point it will probably implode from its own weight, and we'll go right back to the "best of breed" interoperable software model.

    But it will be a while yet. I suspect in the meantime there will be some Open Source alternatives. I sure hope so.

  49. bah! "experts" by Anonymous Coward · · Score: 2, Funny
    From TFA: "Four computer scientists ... argue that Open Source software development should..."

    I stopped reading at that point.

    If they think they're so smart, those 4 guys are welcome to fork whatever project they want and do it themselves.

  50. Sin(Sqrt(comments_in_percent)) ??? by phkamp · · Score: 2, Insightful

    Have you guys looked at the formula ?

    They take sin(sqrt(mumble_percent)).

    Now, I'm all for emperical data, but that is just bistromatics and totally insane.

    They don't even say if the argument to the sine function is in degrees or radians and one is left to wonder if they even know themselves...

    I have no doubt that if you take a piece of code and does a before&after check after some major rewriting it may tell you something.

    But comparing two different pieces of code with this formula is just plain bogus.

    Poul-Henning

    --
    Poul-Henning Kamp -- FreeBSD since before it was called that...
    1. Re:Sin(Sqrt(comments_in_percent)) ??? by pclminion · · Score: 3, Informative
      They take sin(sqrt(mumble_percent)).

      Now, I'm all for emperical data, but that is just bistromatics and totally insane.

      Metrics are already "black magic." This one is no worse or better than any other dimensionless metric I've seen.

      Obviously the input is in radians. The argument to a trig function is always assumed to be radians unless otherwise specified. Now, the sqrt(mumble percent) can only range from 0 to 1, so what we're looking at here is the graph of the sin function from 0 to 2.4 radians.

      Do it now. Graph it. Graph the function sin(sqrt(2.4*x)) from x=0..1

      Notice that this function (you might call it a transfer function) ramps up and peaks at 0.43 radians. That corresponds to a comment percentage of 3%. Then it begins to go down again. What does this mean? It means that there is a point beyond which more comments are not useful. If more than 3% of your code is comments, there's something wrong. That's all that part of the equation means!

      You only classify it as "bistromatics" because you're too lazy to do the thinking and figure out what it's for.

    2. Re:Sin(Sqrt(comments_in_percent)) ??? by stoborrobots · · Score: 1

      Maybe I'm doing something wrong... but I get:

      gnuplot> plot [x=0:1] sin(sqrt(2.4*x))

      Which is clearly not what you're describing...

    3. Re:Sin(Sqrt(comments_in_percent)) ??? by sparre · · Score: 1
      Have you guys looked at the formula?

      Yes. Unfortunately.

      They take sin(sqrt(mumble_percent)).

      Which is bad. But I still find taking the logarithm of a line count worse, and by any sensible scientific measure undefined.

      Now, I'm all for emperical data, but that is just bistromatics and totally insane.

      That's not fair to bistromatics.

      I have no doubt that if you take a piece of code and does a before&after check after some major rewriting it may tell you something.

      I doubt that. I could probably hack a script, that could optimize the "maintainability" of the code after the major rewriting. Just adjusting the number of comment lines can apparently do wonders to the maintainability of a program.

      But comparing two different pieces of code with this formula is just plain bogus.

      Using that formula for anything is plain bogus. You may be lucky that there is a correlation, but a function just selected for optimal fitting to a few data-points without any (apparent) regard to simple things like keeping units straight and some version of common sense, has no place in science. I'm actually quite disqusted that ACM Queue would print that article.

      Besides the general problem of not keeping the units straight, I find it very hard to imagine that a single formula can be used to measure the maintainability independently of programming language. And how can anybody argue that a comments to code ratio different from zero is universally optimal? (zero is trivial to argue for, but I have a feeling it isn't correct)


      Jacob
      --
      "There is nothing worse than having only one drunk head."
  51. Functions by Ann+Coulter · · Score: 0, Redundant

    This might sound too removed from the "real world" but as you will see very soon, I will give a perspective that is more practical than what I will assume to be a procedure used in a lot of development groups.

    Every function must have an expectation specification that defines what the mapping of the said function is. The expectation specification must also define the domain of the function as well as the co-domain. Whatever variables that unchanged, up to an isomorphism, by the mapping can be excluded from both the domain and co-domain.

    The expectation specification defines a Platonic object that is given an element from the domain and maps it to an element in the co-domain. The two important points here are that the specification is definite and that it is Platonic.

    We never ever destroy an expectation specification. This point can not be stressed enough. An expectation specification defines everything about a function. If one were to destroy an expectation specification, then the associated function must never be reused. Therefore, one must never destroy an expectation specification.

    We will now discuss the practical formulation of an expectation specification of a function. Each function accepts a subset of the entire system state and maps it to a new subset of the system state. One can give any isomorphism of an element of the domain. The isomorphism and the function makes the general form of the function become g^{-1} (f(g(x)). Here, f is the function and g is an isomorphism. Note that we have never mentioned how we should represent the mapping, domain, or co-domain or elements of the latter two.

    One can assume that the result of the mapping will replace the element from the domain in most practical computer installations.

    We have established that a function is defined by an expectation specification that is Platonic. This Platonic object is what developers will strive to emulate in any implementation of a function. Notice now that we have invoked the concept of an implementation. An implementation must never take precedence over the specification in the minds of developers. One function can have many implementations. Furthermore, a function can exist as an expectation specification with the specification represented somehow. Note, however, that an implementation is almost meaningless without a specification.

    In conclusion, the specification is the function. A function may adopt various implementations for any number of reasons. The important point is that when one develops a function, it must endure. It might be used or kept somewhere, but a function must never be destroyed or changed.

    With regards to the beginning statement, one must never omit the Platonic function. A very common mistake made by a lot of developers is the destruction of specifications. While their intentions might be benign, even a slightest change in a function must always lead to a branch into a new function. One can call the new function anything in the implementation language, and in a lot of situations, it is recommended. However the specification must always endure. The strict adoption of the approach where one develops an expectation specification, forbids any destruction of a function, and develops implementations based on the expectation specification, is crucial to the development of any project.

    1. Re:Functions by cogitolv · · Score: 1

      Oracle makes a product for Platonic functions, called Oracle Forms. he he.

      --
      Well, sometimes you eat the bear, sometimes the bear eats you.
  52. Re:Extremely Ridiculous Publishing by srini91 · · Score: 1

    Quality is lower for ERP? Yes. Complexity is lower for ERP? Not true. That 90% of things that no one uses in commercial software? Doesn't always apply to ERP. The dependency graphs on large ERP implementations is just huge.

  53. Quality is still a happy user by mcdtracy · · Score: 3, Insightful

    Quality is still a happy user. Users like software
    the works well and hopefully doesn't need a lot of documentation to make it work well. Great software
    tends to teach the user how to make it perofmr or at least motivate the user to want ot invest the time to master the software for a particular use.

    These guys need to understand that this approach to quality applies to all software, irrespective of
    development model behind it. A software product with a lot of customers creates the momentum to maintain and enhance that product. An OSS product can be infused with similar energy due to acceptance by a large community of users (esp if many are programmer's too). The feedback from the users incents the programmers to maintain and enhance the product.

    New models can be built from hybrids of OSS (donated programming in the commons) and products
    that one must buy. If there emerges an ERP OSS app then there will be a business opportunity to document/train, support/fix/enhance/customize that application... and Oracle will feel the same frustration competing with that model that MS does competing with Linux.

    These complaints against OSS as a model (no obtion to buy support or docs) are a business opportunity
    that has been put into play by JBOSS, MySQL, and soon to be hundreds of others. The low barrier to entry is the key to high usage... It's try and don't buy (unless you'd like some training, customization, focus product enhancements, etc).

    Volume, usage and effectiveness drives the software world. Quality just makes the ride more comfortable. And OSS gets more comfortable everytime the train puls through the station.

  54. Failure to strip license header by LetterRip · · Score: 1

    There metric that measures self descriptabiity, is going to be way off if they don't strip out the GPL license for projects that include it in every file.

    LetterRip

  55. The article says OSS is as good or better. by khasim · · Score: 1
    From page #2, almost at the end:
    1. Using tools such as MI derived for measuring CSS quality, OSS code quality appears to be at least equal and sometimes better than the quality of CSS code implementing the same functionality.
    The article is rather thickly written so it's difficult to find, I had to read through it twice.

    But, OSS wins.
  56. Was in "Look at the Numbers!". Positive results. by dwheeler · · Score: 3, Informative
    It's worth noting that a slightly older variation of this paper was already referenced in Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers! back in 2004-09-30. Look at their results, the actual numbers give a rather positive story: "1. Using tools such as MI derived for measuring CSS quality, OSS code quality appears to be at least equal and sometimes better than the quality of CSS code implementing the same functionality."

    OSS is no silver bullet. Their last point is "OSS code quality seems to suffer from the very same problems that have been observed in CSS projects." Er, big surprise, they're all software.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
  57. Re:Extremely Ridiculous Publishing by Anonymous Coward · · Score: 0

    I work in a fairly large entertainment company with worldwide reach (posting AC for obvious reasons). Not long ago the company abandoned the system they had (EMS) and spent billions (yes, billions with a "B") replacing it with the abomination that is SAP.

    Yes, it's sad but true that the new system can't do something as simple as prevent duplicate invoices from being paid--something the old system did quite fine. I swear--whoever came up with the stinking, rotting, fetid piece of garbage that is SAP ought to be forced to use it. Their heads would implode after about fifteen minutes or so.

    One would hope the relentless march of consolidation would end and end soon, but I doubt it. As long as decisions to purchase business software is in the hands of people who don't have to deal with it, things are only going to get worse.

  58. description, development, documentation by Mungkie · · Score: 1
    I havent read the article(why should I?)
    but i will post some redundant, irrelevant, and misinformed spam.
    Development sux when more than one person is involved.
    What would improve open source development would be:

    Every project MUST have a concise description of objectives.

    A concise architecture overview.

    Some flow charts?

    Modularity.

    What would be nice is if someone designed a nice CVS like system where anyone could submit patches. The system would force submitters to create a useful description of:

    what the patch does,

    how it works

    why the patch is needed,

    what sections of architecture it may effect

    possible future improvements required

    documentation

    other notes
    The system would workout what files the patch effects and any other stats and create a database entry, then post a report on a relevant section of the projects web site. Patches could then have a rating system so users could vote on quality of patches, quality of patch documentation, add comments, improvments, etc..

    Would this be better than the typical mailing list?

    I dunno but i think sometimes when people make patches they are often hacks that are not of sufficient quality for inclusion in a project or are only of use for a very narrow audience. If a project allows all submissions to be shown and rated it would give more democratic control and make it easier for project leaders to sift the wheat from the ergot.

    This has probably been done already(I just havent seen it yet), tho I doubt this helps anyone and complex things are never going to be made easy.

  59. How many projects have died for maintainability? by coldtone · · Score: 3, Insightful

    I have seen many a software project disregard performance, features, and development speed all in the name of maintainability.

    We can't use JSP's, there hard to maintain!
    We can't use Javascript, it's loosely typed!
    We have to use an Object Broker, SQL is not maintainable!

    All the projects that I have been on where code maintainability has been the primary goal have one thing in common. They all failed.

    If you spend all of your time worrying about how the code looks, you will never finish the project. Talk to people who have built successful software. (The ones that sold millions of copies.) Very few of them are proud of the code the wrote, but they are happy with the product.

    The focus should always be on product quality, not code quality.

  60. Language and coding style by bonch · · Score: 1

    It's just my opinion, but I think if people stopped using older languages like C and moved to more self-documenting languanges, things would be a lot easier. For instance, Objective-C self-documents its own methods (i.e. "[object doThis:that forThis:that];").

    1. Re:Language and coding style by pclminion · · Score: 2, Insightful
      It's just my opinion, but I think if people stopped using older languages like C and moved to more self-documenting languanges, things would be a lot easier. For instance, Objective-C self-documents its own methods (i.e. "[object doThis:that forThis:that];").

      I don't follow. How is that any more or less clear than:

      object->doThis(that);
      object->forThis(that);

      Are you trying to say that the former is better because it looks more like English? Weird argument to make, considering the majority of the world's population doesn't speak English as their first language, so it's irrelevant that it happens to look like English.

      Any language (except maybe assembler) can be written in a readable way. You just have to learn the idioms.

    2. Re:Language and coding style by CableModemSniper · · Score: 1

      What you wrote is not the same thing as what he wrote. The equivalent would be object->doThis(that, that); Or possibly even: object->doThisForThis(that, that);

      --
      Why not fork?
    3. Re:Language and coding style by Anonymous Coward · · Score: 0

      considering the majority of the world's population doesn't speak English as their first language

      Are you suggesting that we all code in chinese?

      Most Popular Languages

    4. Re:Language and coding style by pclminion · · Score: 1
      Are you suggesting that we all code in chinese?

      No, I'm suggesting we all code in programming languages instead of forcing everything to be like human language.

    5. Re:Language and coding style by stoborrobots · · Score: 1

      Are you suggesting that we all code in chinese?

      What about Sanskrit?

  61. The language is very important by doc+modulo · · Score: 4, Interesting

    - C++ is more readable than assembler
    - C# and Java are more readable than C++ ...
    - At the end of this list are functional programming languages.

    If you can read source more easily, then maintainability will be better.

    This article will tell you why you should be interested in functional programming languages. If you're smart and open minded, you will be convinced.

    The best functional languages are Haskell and Erlang (click "next" at the bottom of the page).

    For example, with Java you prevent bugs by static typing variables, example:

    int numberOfTries = 3;

    If you later try to fill "numberOfTries" with a string, the compiler will warn you of a bug and you'll have prevented it.

    With Haskell, you don't have to type int. Haskell will figure out the type for you, you get the benefit of preventing bugs with the convenience of not having to type variables.

    The reason I chose Erlang is because with functional purely functional programming languages like Erlang, you can automatically multitask your program over several CPU's (or this will take minimal effort). Nice feature to have in the future because every CPU manufacturere is going multi-core chip now. Also, you can easily make a server that never goes down with Erlang because your server is automatically clustered. Just plonk down a couple networked PC's and if one dies, the server cluster will just keep on going (a bit slower) until you replaced the power supply of the broken PC.

    There are tons of other advantages but, as I said, the above links will convince you if you're smart. Haskell is a bit more academic in nature, they're figuring out the best possible language and Erlang is more polished and ready to go. It was invented by Ericsson to create ultra reliable realtime servers.

    --
    - -- Truth addict for life.
    1. Re:The language is very important by Anonymous Coward · · Score: 0

      Esperanto may be clearer than English if you know it. But the odds are still a lot higher that the random person will find English easier to read then Esperanto. You really need to take reality into account.
      And paul graham is the wanker that wrote an article that said:
      java coders = stupid
      python coders = smart
      Which is utterly retarded. As some other slashdotter pointed out: what about the people who are writing jython?

  62. Can I ask a stupid question? by rastin · · Score: 3, Interesting

    Are there standard methodologies for making non-oss code maintainable? If there are its news to me, every place I've worked has been uterly bass ackwards with their source code. Redundant libraries that do the same functions (one writen by Bob the other by Fred). Documentation that is years out of date with reality. And all the dead objects floating around, (its safer to leave them in that pull them out). With non-oss you get a pretty users manual, maybe that is what people call maintainable. Not to say there can't be sloppy OSS code. I think a great topic for discussion would be just plain maintainablity, whether its OSS or not.

    The article mentions doubt on whether an ERP system can be build OSS, why not? Are they planning on giving every end user the source code and ability to recompile the company's ERP? When I install Linux and friends on my mother-in-law's computer I don't plan on giving her the source code, is it implied that OSS is less maintainable because you cannot tell if someone has an altered version? It just freaking code!

  63. A Plead For Generic Code by knipknap · · Score: 2, Insightful

    I found that progress of open source software can often be measured by the availability of generic code. Once that code has been written as a generic library, collaboration is easy and higher level code is more maintainable. This is where Open Source software can have one huge advantage: Collaboration can take place on the libraries, and many applications take profit from that work *between different projects*. You have much more possibilities then in commercial software projects, where you seldom share much work between companies.

    That also makes generic code even more important for OS. We have seen huge progress in the last years and most of the lower level stuff has appeared or become more mature.
    Unfortunately though, this is also what I still found to be the most lacking in higher level libraries. Most projects go like this:

    "We need a really cool search front-end for Google. Let's see whether there's a cool library for this. Nothing yet? Ok, then let's just start from scratch."

    And then a library is implemented, with an API for searching using Google. It is perfectly usable for exactly what the developer wanted.

    Now this seems reasonable at first, but think about this: In OS development, we are not bound to time lines. Why should we chose a half-hearted attack on a problem that will surely hit others after us again? Instead, the developer could also ask, "if I create a generic library, how generic can I make it? Do we have to limit it's capabilities to requesting stuff from Google? Or maybe I could even create a library that allows to query any search engine? Or maybe, provide an API the lets you query anything, like search engines, your local hard disk, p2p networks and a local database."

    In commercial software development, this would be completely unreasonable overkill. In OS however, it's a great way to collaborate. And once implemented, the foundation for a lot of applications has been lied. And it's also fun - writing libraries is fun. It is a great component model either. And it is also a pleasure to see when the work is done, because once the foundation was set writing the actual application is as easy as plugging components together.

    There are also good examples, of course. Gstreamer is one. But there is still so much potential. I would like to see this kind of thinking more and more.

  64. cash for quality, cheap for free by zogger · · Score: 2, Insightful

    what about star office -> open office? Isn't that sort of close to what you want?

    But ya, I know what you mean. I'm not a coder, just a consumer, but I would be more than willing to pay good cash (not x -hundreds, but maybe x-couple/3 dozen dollars) for an OS (once a year, not 3-4 times a year scamola) that paid all the developers, was still open source, had fewer apps but all of them *worked* and if I had a question or problem still remaining, I could go post on their bulletin board and get an actual for-real honest informed reply, from a paid company person, that answered my question or resolved the problem or at least determined that it was in fact pretty close to impossible to be resolved. Tell me the truth in other words, I can live with it. I'm getting sorta tired of "yep, we gots us a real community volunteer effort and it's gonna be the bestus and it almost works, just you wait until the next release!!11!1" stuff.

    There's an open source business model that might work to sell a real joe consumer desktop and still pay the coders. I'll pay for 20 really well written apps with extensive user accessible written in hoo-mann speech docs, said apps that work and serve basic normal computing functionality for this "the masses" guy (moi and probably millions more), but I am not going to pay for two hundred or one thousand "almost works" volunteer apps on 6 cds and a dvd plus download even more!, etc , including the no credible help even if they have a so called wiki or board or mailing list or irc channel. Nope. I used to believe that but not any more. Not prudent any longer. This is 2005. We have entered the "better work right now right when it's installed" era, not the "coming soon" era, that was LAST century.

    signed, joe consumer

  65. Some languages invite a more formal approach by synthespian · · Score: 2, Insightful

    Although you intented to flamebait, the joke invites the consideration that some languages make it harder to write clear specifications and some make it easier.
    In Perl's case specifically, the language lends itself to quick scripting and shorthand. This is great for little tasks, but as everyone knows, it doesn't scale well. This isn't Perl's or Larry Wall's fault. It was designed to /also/ allow for "quick and dirty" style which is ideal for little tasks. If you maintain that style for larger programs, it is exclusively the fault of your lack of talent, methodology and wits as a programmer.
    However, I would like to point out that some languages actually enforce a clean specification. In particular, the functional languages almost literally *force* you to it. I am thinking here of the likes of SML, Haskell, OCaml, Clean, etc. This is not the place to discuss the fact that they also have a sane type system, where others have a broken one (e.g., C - see: http://perl.plover.com/yak/typing/). Language advocacy sucks, anyway ( http://www.perl.com/pub/a/2000/12/advocacy.html).
    There's this story a guy posted once on comp.lang.functional about how once he wrote a Haskell program, handed it to the manager and he said: "great, you wrote a specification, now write the program." (!) The manager actually though what was executable Haskell code was just a "spec." Haskell fully suppports Knuth's literate programming approach.
    If you ever tried writing something in those languages you know how they force you to write clean code. It is simply the easier way to break code in small functions. "Factoring", I believe it's called.
    My point is that I feel the OSS community could greatly benefit from non-mainstream languages. These languages have seen nearly 2 decades of intense research. Arguments pertaining to performance just don't hold anymore vis-a-vis other mainstream languages like C#, Java, Python, Perl, etc. Clean has a video-game library to prove the point (http://www.cs.ru.nl/~clean/). OCaml, SML and Clean approach C performance (Ocaml coming second to C in some "language shootouts" for most benchmarks, for all its worth). Also, some of these have been used in large "real world" problems. OCaml has been deployed in the C code verification for correctness of the flight control software for the Airbus 340 airplane, for instance (http://www.astree.ens.fr/). It is widely known that Ericsson uses Erlang for their telephony switches (www.erlang.org). The CIL - Infrastructure for C Program Analysis and Transformation is written in OCaml and if more widely known, could prevent the weekly flow of buffer overflows developed in Berkeley and can be used *right now* in large OSS projects (http://manju.cs.berkeley.edu/cil/). They've tested it in the Linux kernel, for example (whether they sent patches or not, I don't know).
    Of course, you have to have an open mind, and be willing to learn and throw some old tricks out and work using a different approach/mindset. Learning things thoroughly is always hard work, but the OSS shouldn't dismiss functional languages as "academic" - and for that matter, other serious approaches, like Squeak Smalltalk, for instance.
    My 2 cents.

    PS: I'm no expert at programming, just a beginner, but I offer my opinion here because I feel some people just haven't been introduced to some facts and haven't heard of some stuff. Not everyone has a big company to promote their language.

    --
    Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    1. Re:Some languages invite a more formal approach by dgatwood · · Score: 1
      While it is true that languages that force certain design patterns result in cleaner, more maintainable code, it is not without tradeoffs. Usually those tradeoffs end up being in speed, in readability, in writability, in code volume or in some combination (usually all) of the above.

      Don't get me wrong, I like playing with functional languages (Lisp, Scheme, Haskell), but I wouldn't write a large piece of software in such a language. The amount of code needed to do something that you can do in a one-line Perl regexp could end up being several hundred lines of Lisp, for example, thus Perl is a great language for text manipulation.. The simplicity of integrating HTML and PHP makes that an ideal language for web design, and so on.

      For systems where reliability is the primary requirement and development cost is secondary, or for hobby projects where the development cost is irrelevant, functional languages make a lot of sense. They significantly reduce the ability to generate edge cases in your code that aren't obvious. However, they are not the be all and end all of programmng, IMHO.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    2. Re:Some languages invite a more formal approach by synthespian · · Score: 1

      YMMV.
      FYI, you're a bit outdated on the Lisp side of things. The most widely used package for regex - CL-PPCRE (portable Perl-compatible regular expressions for Common Lisp) - is faster than Perl.
      There are now great frameworks for integrating HTML and code, all much simpler than PHP. Some support continuations, which is a hot topic.
      Lisp, Scheme and Haskell are not just "for play."

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
  66. Re:How many projects have died for maintainability by Jerf · · Score: 3, Informative

    We can't use JSP's, there hard to maintain!
    We can't use Javascript, it's loosely typed!
    We have to use an Object Broker, SQL is not maintainable!

    All the projects that I have been on where code maintainability has been the primary goal have one thing in common. They all failed.


    If that is their idea of "maintainable", they didn't fail because they shot for maintainable, they failed because they drank the kool-aide and trapped themselves into software paradigms that only work when oodles of resources are thrown at them. Smaller teams require more agile methods to get results, and that is also the mechanism whereby smaller teams can produce software where larger teams failed. (It goes both ways, I'm not claiming that as an absolute. But that small teams can and have beaten much bigger ones is an unassailable fact.)

    Certainly you've got some good facts at hand to learn from, but I think you're taking the wrong lesson away. Projects that simply ignore maintainability fail, too. Can you imagine Mozilla with no concern for maintainability, or the Linux kernel?

    The focus should always be on product quality, not code quality.

    If you don't have quality code, you don't have a quality product. You may have an adequate product. You may be in a situation where an adequate product is all you need. I have an adequate set of knives in my kitchen, because I can not afford quality knives. But I do not pretend that they are therefore quality knives.

    You're calling for a classic short-term focus, and you can and will suffer the classic penalties for short-term focus. I know, I've seen it first hand and dragged software products out of their local optima by the sweat of my brow. It's not easy, but either it happens or the product dies a code-quality death.

    You need to use the proper metric for quality. Inappropriately using and paying for a strong type system is anti-quality in my book; that goes for your other two examples as well, when done correctly. (SQL and JSP code both need to be rationally minimized via the application of Once and Only Once, but they are not the cause of the unmaintainability; the abandonment of Once and Only Once is. Once and Only Once is one of the most important aspects of any proper quality metric.) Your quality metric should have functionality built into it.

  67. Right. by the_skywise · · Score: 1

    In my experience, that's "petrified" code. Suppose the last maintainer dies (or becomes a Windows programmer). For someone to pick up the code base then the code itself has to be of a skill level lower than the person using it OR documented enough to explain those complexities that aren't readily understandable.

    That's the one area where Open Source is weak. Closed Source can (again) throw money at the problem and fund a code "archeologist" to go through and resurrect the code base. Open Source requires individuals willing to have the passion to do so (although other open source individuals could fund the resurrection and then modify it to make it more open). But I think it more likely that if BSD did "die" this way then most people would just switch to Linux rather than spend the effort. (Not to be offensive, I'm just being pragmatic.. I could be wrong on the passion and number of BSD people).

  68. I dunno... by Anonymous Coward · · Score: 0

    This sounds kinda fishy...they say they "measured" 5 OSS projects but never mention which ones or which versions. You would think that this sort of "impirical analysis" would provide actual projects so the results could be verified.

  69. Re:Extremely Ridiculous Publishing by luvirini · · Score: 1
    Well, then there are companies , like the one we sell, that take ERP to mean Accounting + logistics + + HR + CRM + Expenses + Business Process automation + Time & atterndance + Point of Sale + E-commerce + Production Planning + Hotel Room Management + Few dozen other things...

    Talk about one software to do it all...

  70. Re:How many projects have died for maintainability by Skuld-Chan · · Score: 1

    Developers often have this attitude hold no reguard for the people who have to support it. I can tell you that its a nightmare to support applications, toolkits etc that half-baked features ie - things that may actually work in testing, but in a real environment are impractical and unsupportable.

  71. What did I spend that money on, again? by Anonymous Coward · · Score: 0

    "The disadvantages of OSS development include absence of complete documentation or technical support."

    The article went on to say "On the other hand, the disadvantages of commercial software include absence of complete documentation or technical support."

  72. Was this really a surprise?-Inedible. by Anonymous Coward · · Score: 0

    "All the comments and documentation in the world won't make spaghetti understandable or maintainable"

    A jar of spaghetti sauce will however make it edible.

  73. At least...Unnecessary work makes Jack kill! by Anonymous Coward · · Score: 0

    " If it's sufficiently important to you, then you can pay someone else to grok the code for you."

    Yes. Now once again, why should you make more work for either yourself or others?

    1. Re:At least...Unnecessary work makes Jack kill! by emurphy42 · · Score: 1
      Now once again, why should you make more work for either yourself or others?
      Note the implicit disclaimers "at least" and "if necessary" in the grandparent post. Obviously this shouldn't happen - this isn't the best case, in fact it's the worst case. The best case is one in which the community of those-who-already-grok-the-darn-thing remains vigorous.

      The relevant questions are: How much confidence do you place in your ability to choose software whose community will remain vigorous? Absent such confidence, would you rather have your worst-case scenario be difficult or damn-near-impossible?

      The grandparent post points out that it's difficult to rebuild the level of expertise that the former community possessed. However, you probably don't need to. You're not dealing with many different people/companies, whose needs may vary widely; you're only dealing with your own needs. This greatly reduces the extent to which you need to expand the software in future, and even the extent to which you need to understand what the software currently does (because you can generally just ignore any features you don't use).

  74. Bleh-OSS BDSM by Anonymous Coward · · Score: 0

    "Yeah, but don't blame it on OSS. This is simply another embodiment of the long-tailed distribution of human stupidity. In any human endeavor there are a large number of people who are Unskilled and Unaware of it [phule.net]. These people will try their hand at whatever catches their attention, and the results usually range from mediocre to terrible."

    And we're inviting most of them over from Windows, and encouraging them with tools like Mono.

    Maybe OSS is just Mashovanist?

  75. Experience may vary...Third Party Passthrough by Anonymous Coward · · Score: 0

    "Plus, if official support is lacking, it is always possible to get some sort of support from a third-party company as they have exactly the same access to the software as the original developers. "

    And have to jump through the same hurdles as everyone else.

    1. Re:Experience may vary...Third Party Passthrough by moz25 · · Score: 1

      Yes, but with access to the code and (some) documentation, the theoretical limit for support -- including completely customizing the entire application -- is much higher.

  76. further research indeed by famebait · · Score: 2, Funny

    While they admit further research is needed,

    It's not usually all that hard to get people to "admit" that they'd like more funding.

    disclaimer: that was not meant as a rant, I work in science myself. But "more research is needed" is a running joke in the community. It doesn't detrect from the work, but every publication on the planet includes it, and every serious reader treats it as a mere formality and silently ignores it.

    --
    sudo ergo sum
  77. OSS ERP project already exists by Halo1 · · Score: 1

    TinyERP, GPL licensed. Note: home page is in French. And the fact that it's GPL does not mean you can download it for free from the author's website.

    --
    Donate free food here
  78. Code is the documentation by OSXexpert · · Score: 1

    Code is art, and good art is a joy to interpret. Bad art is well, bad needing little to no documentation at all. So, in the end, code is self documentating. I can look at code for seconds if not less and determine if it was done by someone with style, a thorough understanding and a desire to share that vision with others, by the work. Not someone telling me what it should or could do, but what is apparent by its implementation. I find documentation sort of like a salesman for a art gallery, its always hovering over interpreting the work for you or how great the artist is supposed to be. I'm usually left unimpressed, and much wealthier as a result for not buying into the habitual lies.

    --
    --- Old Time NeXThead
  79. Wow, and this should be insightful? by Anonymous Coward · · Score: 0

    "Perl is "unclean" for a reason - it is there just to get the job done quickly, not necessarily cleanly."

    I have to admit that it is harder to write readable code in Perl than in other languages.
    There are a lot of features that are the cause of this, namely anonymous hashes and functions. The strange object oriented syntax. The default variable $_ ...

    On the other hand I can express a lot more in one line of Perl than I could in e.g. C.
    And with a little practice even a line such as this:

    return undef unless defined $self->{test};

    gets readable. It even looks a lot like Python.

    So what do you do to solve this dilemma?
    Comments of course. Comment every regular expression and also every function.

    And don't come back to me with C. Missing support for hashes and dynamic arrays (if you don't use glib) and missing garbage collection is a too big drawback.
    My advice: don't use C for anything that can get messy..

    1. Re:Wow, and this should be insightful? by tomhudson · · Score: 1
      Missing support for hashes and dynamic arrays (if you don't use glib) and missing garbage collection is a too big drawback.
      Come on, writing routines that grow or shrink a chunk of memory, or search that memory as a series of key-> value pairs, doesn't require any special libraries.

      Most of the "missing garbage collection" could be handled if sloppy programmers got into the habit of, as soon as they write a malloc() call, write the corresponding free(), and only then fill in the code between the calls.

      Forgetting to call free(), calling it too many times, assigning to a non-null and leaving the previously-assigned memory unreachable, and not checking return values are all easy habits to get into, and remove the need for a gc for a lot of cases.

    2. Re:Wow, and this should be insightful? by tomhudson · · Score: 1
      habits to get into
      oops - meant get out of - it's been such a habit of mine to do all these things that I don't think twice when describing them, especially when posting while eating breakfast (should have posted from the office while reading my spam or some other work, like I usually do).
    3. Re:Wow, and this should be insightful? by 21mhz · · Score: 1

      Come on, writing routines that grow or shrink a chunk of memory, or search that memory as a series of key-> value pairs, doesn't require any special libraries.

      Come on, writing routines that have already been written, stepping into bugs and inefficiencies that have already been taken care of elsewhere, is totally unnecessary in this day and age. This is what glib is for.

      --
      My exception safety is -fno-exceptions.
    4. Re:Wow, and this should be insightful? by tomhudson · · Score: 1
      Why bother with all the bulk of an existing general class with way too many methods, etc., when you can make a simple, clean implementation that can be written, tested for all corner cases, works exactly as you want it to, and has no extra fat or cholesterol?

      Fewer lines == fewer bugs to creep in.

      Besides, there are times when glib isn't available (for example, at boot time).

    5. Re:Wow, and this should be insightful? by 21mhz · · Score: 1

      Why bother with all the bulk of an existing general class with way too many methods, etc.,

      The "bulkiness" penalty of the general class for your purposes (taking the points below in consideration) is something that should be backed with some research. Specifically, plugging in a DSO that implements everything and a kitchen sink is not a penalty if you're using a small part of it, since it comes from a memory mapped file.

      when you can make a simple, clean implementation that can be written, tested for all corner cases, works exactly as you want it to, and has no extra fat or cholesterol?

      This approach has one little disadvantage: you have to actually spend resources to write the code, test corner cases, etc.

      Fewer lines == fewer bugs to creep in.

      Again, you don't have to write and debug these lines if you are reusing code that's been in wide usage for years.

      --
      My exception safety is -fno-exceptions.
  80. Re:Those who forget history are doomed to reimplem by Eunuchswear · · Score: 1


    In my day, we used punch cards, and once you made a hole, it was there for life.


    Ah, the holes may have been there for ever (modulo tricks with sticky tape), but clever people could always make more holes.


    P.S. I'm not joking, If all they keypunch machines were in use it was sometimes faster to modify a card or two using the hand punch, adding extra holes to a card.


    UEA computer lab, 1977-78.

    --
    Watch this Heartland Institute video
  81. Re:How many projects have died for maintainability by Anonymous Coward · · Score: 0

    "All the projects that I have been on where code maintainability has been the primary goal have one thing in common. They all failed."

    They all had one other thing in common as well: they all had *you* working on them..... :-P

  82. Except that's not developers who focus on features by melted · · Score: 1

    That's management. Developers want to do what's right, but their management allocates about a half of the time it would take to do something right to any given task at hand. A polished turd is good enough for the management. Pressure developers to work on "compressed" schedule, then pressure test to certify the product before the deadline, throw all the bugs test finds over the fence to the next version. That's the product cycle of a software product for you. And then the product goes to sustained engineering team who doesn't know jack about the codebase and they fix it using their own assumptions. This is why fixes often result in more bugs - their assumptions may not be correct.

    And no, developers don't have time to go back and revisit the TODOs everywhere in the code. TODOs remain TODOs forever.

  83. Automated test suites are *under*-rated by Anonymous+Brave+Guy · · Score: 1
    Automated test suites are vastly overrated. If all your subprograms have cleanly defined functions, cleanly defined I/O, and are small enough, it is very easy to run them through a few critical test cases.

    And the chances of picking up a subtle bug in a comprehensive automated test system that runs at least nightly, compared to running "a few critical test cases" on the whim of a developer, are orders of magnitude higher.

    Please don't confuse the bad idea that is "test driven design" with the good idea that is designing your code so that it can be tested regularly and automatically. The two ideas are completely orthogonal.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  84. Urban legend alert! by Anonymous+Brave+Guy · · Score: 2, Informative
    People, if your function is more than 10 lines long, you should start to consider splitting it. If it's more than 100 lines long, you're probably doing something wrong.

    So I've been told, sometimes by some of the biggest names in programming. Unfortunately, a firm belief among the industry doesn't make them right.

    Rather than debunking this one here, I'll simply refer you to Steve McConnell's excellent Code Complete. McConnell cites a large amount of hard data to show that longer routines can be at least as good on both development time and error count grounds as shorter routines, and indeed exceptionally short routines (the 10-liners you're advocating) are amongst the worst on both metrics.

    As an aside for general interest, since I'm sure a lot of people reading this comment also found that book very good, it seems a second edition has recently been published, updating the examples by a decade or so and putting much more emphasis on recent coding approaches, particularly OO. Whether that is an improvement remains to be seen, but I'll certainly be buying a copy. I guess if he's reversed his position based on more recent studies, I'll have to eat my words, too, but I doubt it. ;-)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Urban legend alert! by Rei · · Score: 1

      There are a number of conflicting theories about all of software development. While McConnell tends to be on the "long functions" side, even he stated "Ease of testing is another good reason to keep your routines short and your boolean expressions simple" (597)

      A routine should do one thing, and do it well. It's the philosophy of Extreme Programming and many other development systems. As a person who's been refactoring long functions, I can attest to how many bugs we've found in the process and how much cleaner the functions end up being.

      --
      "Well, then fire it up and show me what this..." (sigh) ... "coccoon can do."
    2. Re:Urban legend alert! by Anonymous+Brave+Guy · · Score: 1
      A routine should do one thing, and do it well.

      Indeed, but that goes both ways: a function doing 0.2 of a thing, combined with four other functions each doing a different 0.2 of that thing, is as bad as one function that does several things.

      As a person who's been refactoring long functions, I can attest to how many bugs we've found in the process and how much cleaner the functions end up being.

      It's funny you mention that. I've spent most of the last year refactoring a lot of the core code in the project I work on, tidying up various oddities that have accumulated over a decade or so of development. The vast majority of bugs I've found have been caused by one-off special cases or unfortunate interactions between features that were developed independently. The bugs generally haven't been in the long but well-planned algorithms, as it's far easy to hide special cases in a raft of smaller functions than in one long but well-structured one.

      In fact, the single biggest improvement I've made was basically to draw numerous one-off possibilities scattered through the codebase into a single, fairly long (probably around 150 lines) function. There you could easily see the order in which they occurred and the potential interactions between them.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  85. Function pointers by Anonymous Coward · · Score: 0
    "inheritance is a lot cleaner than using function pointers."

    Inheritance IS using function pointers. C++ classes are really just structs with function pointers in them. C++ does it formally and probably cleaner than many programmers would, but to say "function pointers are evil" and then promote inheritance is a bit contradictory.