Slashdot stories can be listened to in audio form via an RSS feed, as read by our own robotic overlord.

 



Forgot your password?
typodupeerror
Programming IT Technology

Opensource Code More Refined Than Closed? 270

Posted by CmdrTaco
from the no-surprise-here dept.
zonker writes "In this poorly titled cnet story (as opposed to an earlier story stating a similar theme), a company named Reasoning says that at first open source code has marginally worse quality than closed source code of the same maturity, but it tends to become better refined through the open-natured development process than closed source. They mention Apache and Linux as examples, however they don't mention the 'competitors' they tested against by name. ."
This discussion has been archived. No new comments can be posted.

Opensource Code More Refined Than Closed?

Comments Filter:
  • Re:Stupid (Score:2, Informative)

    by znaps (470170) on Tuesday July 01, 2003 @07:28AM (#6338244)
    It's more about quality in terms of the code being well-written, bug free, and maintainable. These are the things which create a lasting, reliable and hence popular product.
  • by Advocadus Diaboli (323784) on Tuesday July 01, 2003 @07:33AM (#6338276)
    If I read the Datasheet [reasoning.com] for the automatic code inspector there is a funny example. They find a memory leak in their example. I had a quick code review and found the following bugs:

    27 fspec=malloc(strlen(dir) + 2 + 1);
    28 strcpy(filespec, dir);
    30 if ((ix = strlen (fspec) ....

    First of all it looks like line 29 is disappeared, but maybe it was just whitespace. Looking at the code above show me that the strlen function is called with the pointer returned by the malloc in line 27. That's great, since strlen is looking for the "null termination byte" in the string it will return the position of whatever random zero byte will be next in the allocated memory because nobody was writing anything to the allocated space. I suspect, that line 28 should refer to "fspec" instead of "filespec" but since the program obviously compiled it can also be that filespec is a valid global identifier.

    Anyway, this simple example from them shows, that their automatic tool doesn't find all bugs and so the numbers returned can be just a sort of wild guess. BTW: I would really like to know what their code inspection tool will report if they use it on their own code inspection software. :-)

  • by Bagsy (176584) on Tuesday July 01, 2003 @07:48AM (#6338345)
    This is a M.Sc paper [ludd.luth.se] that tries to explain how the open source development is working. It's an interesting read.
  • Example: TCL Source (Score:1, Informative)

    by Anonymous Coward on Tuesday July 01, 2003 @08:05AM (#6338454)
    As an example of very nice open source code, take a look at the TCL source code. IMHO, it is almost a work of art. Uniform block comments describing each function, perfect mixture of block and inline comments -- block comments to tell you what each major section does, in-line comments at a few key points so you don't get lost.

    As a counter-example, there is some very, very bad Java code that I have seen recently. 5000 line classes, hardcoded database locations, total confusion about connection caching. I was supposed to fix some bugs while the developer was on vacation. It took me two weeks just to figure out where the problem was!

    I think if you know your peers are going to see your code, you put the extra effort into it, hoping someone else will say "Nice Job". (I think that is one of the reasons engineering in general is such a great job. You KNOW you've done a good job because a) it works and b) your peers say so.)

    -- ac at work

  • Re:Software quality (Score:1, Informative)

    by Anonymous Coward on Tuesday July 01, 2003 @08:43AM (#6338683)

    Sorry, but main() must be declared either as int main(void) or as int main(int argc, char ** argv) (or equivalent). In particular, void main(void) is not standard-conforming, and is thus wrong.

    If you had written int main(void) you would still have been wrong as you are supposed to return a value, with return 0 or exit(0) (or possibly some other integer).

  • Re:Who Knows? (Score:3, Informative)

    by e2d2 (115622) on Tuesday July 01, 2003 @09:07AM (#6338840)
    You forgot the most important feature of XP = security. XP is based on the NT kernel and hence has the same security features, a huge step beyond the 9x kernels. Not too mention the improved multi-process handling improvements.

  • by Lispy (136512) on Tuesday July 01, 2003 @09:17AM (#6338896) Homepage
    ...but my experience differs. I used to work in a beta testing group for a small german software publisher [franzis.de]. Actually my job was to implement this team since there was nothing like this before. When we started I was confident that we could enhance the quality of our products but reality cured me: The only thing that changed was that they put a huge sticker on the boxes "Quality tested by our great beta testing team!" or something like that. But they turned down EVERY single review we wrote and whenever it would have caused a delay for launching the product they just didnt care. After two years they shut the betatesting group down again since we didnt improve the product quality [cough]how could this be?[cough]. As far as I know they kept the stickers, though. ;-)
  • Re:Software quality (Score:1, Informative)

    by Anonymous Coward on Tuesday July 01, 2003 @09:32AM (#6338985)
    That does not mean that your code is any more valid. You fail to check the return value of a function that returns an error (printf()) which is technically a code error.

    #include <stdio.h>
    #include <stdlib.h>

    int main( void )
    {
    char *message[] = {"Hello ", "World"};
    int i, retval = EXIT_SUCCESS;

    for(i = 0; i < 2; ++i)
    if( printf("%s", message[i]) != strlen( message[i] )
    {
    retval = EXIT_FAILURE;
    break;
    }

    if( printf("\n") != 1 )
    retval = EXIT_FAILURE;

    return( retval );
    }
    Which is better, but I'm just waiting for one of the loonies who infest comp.lang.c to pop up and quote cross-referenced paragraphs of ANSI standards at me..
  • Re:Who Knows? (Score:5, Informative)

    by TheNetAvenger (624455) on Tuesday July 01, 2003 @10:54AM (#6339702)
    Win95-->Win98-->WinME--->WinXP is a case in point.
    Nothing for a user in XP, that he can't do with Win95.


    Not even considering that they are two 'completely different' operating systems, I can probably name at lesat 50 major things off the top of my head that you can do in XP that you cannot do Win95.

    Should we start the list?

    1.) NT Kernel Layer - Abstracts Win32 Kernel from OS, giving system stability, and the ability to add additoinal OS subsystems on the NT Kernel in addtion to the Win32 subsystem.

    2.) NTFS - Journalled File System
    3.) NTFS - Object Oriented Based file Security System.
    4.) NTFS - File/Folder Encryption
    5.) NTFS - File/Folder Compression
    6.) System Restore Protection
    7.) OS Self Repair and File Protection
    8.) DLL abstraction (multiple DLL instances in memory)
    9.) Increased Boot & ShutDown Speeds
    10.) Suspend to Disk Hibernation
    11.) Full ACPI support with Scheduler with Even Scheduler - Wake Up Support
    12.) RDP - Remote Desktop
    13.) Telnet Server
    14.) FTP Server
    15.) IIS Server
    16.) Application Crash protection that catches bad Memory and API calls in Real-time and prevents application crashes without the user ever knowing it is happening.
    17.) POSIX supported naming conventions
    18.) NTFS - HardLinks
    19.) NTFS - Mount Points
    20.) NTFS - Reparse Points
    21.) DFS
    22.) NTFS - 16exabyte Partions
    23.) 4GB of RAM Access - 64bit Desktop 16GB RAM - Server 64GB/512GB RAM
    24.) Native CDR-CDRW Support
    25.) Intellimirror
    26.) Offline Network Files & Synchronization
    27.) ZDLabs reports 27 percent faster than Win95/Win98 with more than 64Mb of RAM
    28.) Internet Connection Sharing
    29.) Basic Firewall (Built In Firewall mechanisms for third party Firewalls to directly Plug In)
    30.) Full Unicode Support
    31.) Mutli-Processor Support (2 in Professional - 32 in Server)
    32.) IPSec
    33.) Smart Card Support
    34.) Built in WiFi and UPnP
    35.) Native Multi Monitor Support
    36.) ClearType Throughout the OS
    37.) Remote Assistance
    38.) NLA
    39.) Full VPN Support In & Out
    40.) Driver Rollback (Windows Protection)
    41.) Network Bridging
    42.) Web Folder Support
    43.) Fast User Switching
    44.) WMI
    45.) Group Policy (Local & Active Directory)
    46.) Enhanced Power Management (Supporting CPU Throttling in addtion to other device Power control for improved Mobile battery Life)
    47.) Kerbos
    48.) IPv6
    49.) Qos
    50.) Volume Shadow Copy (Shadow Volumes - Versioning on Server)

    That is just 50 'technical' things I could pull off the top of my head.

    Should we also list another 100 other items that are in the UI of XP like common folder tasks, photo printing, built in Zip Folders, Image Acquisition, etc?

    "Yeah, there sure is not anything in XP that a Win95 user can't do." - Said the person living in a cave.

    You can easily spot the people that either do not get this stuff, or just have not used XP and only base their experience on the time they used Win9x and the FUD they read about XP.

    In addition, as I said before, I also use OSX, Mac System 8.1, Mandrake, FreeBSD, Solaris, and Redhat everyday, so I am not a sold MS XP zealot by any sense of the word.

    Nevertheless, saying that XP does not offer a user anything more than Win95 is just ridiculous.

    Geesh...
  • by anonymous loser (58627) on Tuesday July 01, 2003 @01:33PM (#6341504)
    It's not the programmers that pay for large-scale code cleanup, it's the company. A good commercial software manager realizes it's a large investment in time and money to completely refactor code, so if the planned functionality doesn't require a rewrite of that magnitude, they won't do it.

    Open-source applications aren't limited by hard deadlines, demanding customers that want the feature yesterday, and budgets that limit the man-hours that can be devoted to a project. An open-source project manager can take all the time in the world to completely redesign a project from scratch and slowly build up the infrastructure necessary to make it happen. As soon as there are thousands of paying customers calling up with feature requests, bug reports, etc. then it's the company's job to fulfill those requests in as timely a fashion as possible, lest they lose their customers. That often means fixing the bug, but leaving an underlying problem in the infrastructure that could be rewritten, but doesn't adversely affect developing or releasing the next version of the software.

Real Users find the one combination of bizarre input values that shuts down the system for days.

Working...