Opensource Code More Refined Than Closed?
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. ."
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.
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. :-)
This is a M.Sc paper that tries to explain how the open source development is working. It's an interesting read.
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
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).
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.
...but my experience differs. I used to work in a beta testing group for a small german software publisher. 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. ;-)
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..
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...
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.