Comparison of open source and closed source

From Wikipedia, the free encyclopedia

Open source (or free software) and closed source (or proprietary software) are two approaches to the development, control and commercialization of computer software. Open source approaches differ from the proprietary model of software licensing by allowing other individuals and organizations to view, modify and redistribute the source code.

Contents

[edit] Background

Computer software is an unusual commodity. Once written, it can be copied and reproduced for very little cost, and can have great commercial value. However, the original source code created by the authors, if publicized, would allow anyone to duplicate and extend their work easily. The commercialization of software through the 1970s and 1980s led to program code hidden from anyone outside the company that developed the software and the code was treated as a trade secret.

Under the closed source model, source code must be hidden from the public and competitors who might otherwise reproduce, study or modify the code, either to resell the product, learn from the product or for other reasons. Software companies that follow the closed source model see it as a way to protect their products from software piracy or misuse, from reverse engineering and duplication, and to maintain competitive advantage and vendor lock-in. Closed source software usually is developed and maintained by a team who produces their product in a compiled executable state, which is what the market is allowed access to. Microsoft, the owner and developer of Windows and Microsoft Office, along with other major software companies, have long been proponents of this business model.

The open source model allows for any user to view and modify a product's source code. Organizations and individuals[who?] that adhere to this model believe that the benefit that they gain from improvements to their software provided by the community of software developers is more important than protecting their competitive advantage. Common advantages cited by proponents for having such a structure are expressed in terms of trust, acceptance, teamwork and quality.[1]

Most of the open source software is licensed under what is often termed a "copyleft" license[citation needed], a term which emphasizes the license's reversal of the principles of copyright. A traditional license is used to limit freedoms, which the free software movement considers essential, the "four software freedoms",[2] taking them away from the users either completely ("you may not distribute the software") or partially ("you can use the software for an evaluation period of 30 days; after that you must either pay a license registration fee or discontinue the software"). By contrast a copyleft license protects the "four software freedoms" by explicitly granting them and then explicitly prohibiting anyone to strip them away when redistributing the package or reusing the code in it to make derivative works. Some licenses grant the four software freedoms but allow redistributors to remove them if they wish. Such licenses are sometimes called permissive software licenses.[3] An example of such a license is the BSD license which allows derivative software to be distributed as closed source products, as long as they give credit to the original designers.

Open source can and has been commercialized, both by purely open source companies such as Red Hat and more traditional software companies such as IBM and Novell. The archetypal open source software is the Linux operating system.

[edit] Collaboration and project management

Closed source projects ("CS") tend to collaborate either only to a limited or peripheral degree with third parties (other than project co-members), or under non-disclosure agreements. Corporate development is usually run by teams or structured groups, with workload, agendas, intended results, and deadlines, centrally agreed, and use paid developers to achieve these goals as required.

Open source projects ("OS") by contrast can be voluntary for many of those involved, and who are doing it for fun (however, an increasingly large amount of open source code is written by paid programmers). New code is developed and reviewed in a less formal process by many people – in some cases hundreds of thousands, or millions – and since many of these are intimately familiar with the system concerned, the quality of review and final writing tends to be extremely high on such projects and the speed of development can be very fast[citation needed]. Collaborative work is also resource efficient, since duplication of effort is avoided.

CS and OS projects tend to view their priorities as different. CS projects tend to work to deadlines, the date at which (for corporate, market or investor purposes) a new product or update must be released, or a new feature made available. OS projects, lacking investor pressure, tend to be more actively interested in how to do a job well, as well as produce it quickly, and in producing work to a high standard. However, feature creep is often prevalent in various smaller OS projects where the project fails to lock down milestones for releases which leads to frequent unpolished releases that are user unfriendly. This is not unique to OS projects, but as CS projects are driven by the market their releases do tend to be cleaner for the user (even if they end up slower and more messy under the hood).[citation needed]

Example:

  • Microsoft Windows is closed source, it is the most common operating system on personal computers and a de facto standard on these. Proponents would tend to agree that most versions of Windows has contained major changes to previous versions. Because it is developed by one company, it can be centrally managed and co-ordinated, and there are fewer "odd gaps" in its development as such. However against this, a huge effort has gone into protecting and preventing others from benefiting from this work in unintended ways, there has been much conflict over "hidden code" allegations, and security and quality have consistently been criticized by independent third parties over the years.
  • Wikipedia itself is open source, both its software (mediawiki) and the actual content, is collaborative. In five years it grew from under 1000 articles, to millions of articles, and its software is continually updated by a developer community that spans the world. The software is as a result very robust, since millions of people have access to it and any untoward happening has been analyzed by many developers at a moment's notice. The information contained is broader, more comprehensive and more in-depth than any corporate team could produce, and grows extremely fast in quality and scope, and there is a huge user base of millions of contributors; however as there is no central control, there are many articles not yet up to the intended long term standard and no article can be 100% relied upon without additional checking by the user.

[edit] Commercialization

The primary mechanisms for making money from closed-source software all seem to involve imposition of artificial scarcity constraints on something that, by its nature, can be very easily and cheaply copied and distributed. It has famously been said that "information wants to be free"; closed-source vendors would counter this by saying that "information providers want to be paid". Thus, they impose various limitations on what can be done with their software, first of all by usually not giving customers access to the source code, and then backing this up by restrictions on copying, enforced using both legal (copyright law) and technological measures (copy protection and digital rights management).

Thus, in closed-source software, there is an element of the design which means that the product is designed to prevent the customer from doing some actions that the company feels would result in an opportunity cost to them, even if this is something that isn't source compromising, or something the consumer wishes to do.

Open-source, on the other hand, abandons all such attempts at forcing the customer to do things in a certain way. Instead, the revenue model is based solely on what customers can be persuaded to pay for of their own free will.

Another important factor in the closed-source revenue model involves fending off competitors (both actual and potential) by continually raising the barriers to entry. Thus, new versions of the software are continually being introduced, with lots of new features being added. Competitors then have to come up with their own answers to these new features (otherwise they will not be seen to "remain competitive"), which they have to reinvent essentially from scratch[citation needed], which adds to their own costs. Typically these features are added with little thought for their impact on the conceptual integrity of the overall product[citation needed], leading to the well-known phenomenon of software bloat.

Another problem with the addition of these features is that they often add to the software vendor's own costs; when they try to adapt the product to new markets and new applications, then the more feature-ridden the product is, the less flexible and adaptable it becomes.[citation needed] For example, operating systems built on the Linux kernel are available for a wider range of processor architectures than Microsoft Windows, including PowerPC and SPARC. None of these can match the sheer popularity of the x86 architecture, nevertheless they do have significant numbers of users; Windows remains unavailable for these alternative architectures, although there have been such ports of it in the past.

The most obvious complaint against open source software revolves around the fact that making money through some traditional methods, such as the sale of the use of individual copies and patent royalty payments, is much more difficult and sometimes impractical with open source software. Moreover, many see the introduction of open source software as damaging to the market for commercial software.[who?] Most software development companies sell licenses to use individual copies of software as their primary source of income, using a combination of copyright, patent, trademark and trade secret laws (collectively called intellectual property rights laws).[citation needed] Fees from sale and licensing of commercial software are the primary source of income for companies that sell software.

Additionally, some companies with large research and development teams develop extensive patent portfolios, with the purpose of making money from patent royalties. These companies can charge licensing fees for the use of their patents in software, however open source distribution creates the potential for an unlimited number of derived works using the patented technology without payment to the patent holder.

This complaint is countered by a large number of alternative funding streams, which are actually better-connected to the real costs of creating and maintaining software. After all, the cost of making a copy of a software program is essentially zero, so per-use fees are perhaps unreasonable. At one time, open-source software development was almost entirely volunteer-driven, and although this is true for many small projects, many alternative funding streams have been identified and employed for open source software:

  • Give away the program and charge for installation and support (used by many Linux distributions).
  • "Commoditize complements": make a product cheaper or free so that people are more likely to purchase a related product or service you do sell (this is a primary reason for OpenOffice.org; Sun gives away the office suite to encourage users to buy their computer hardware). This is similar to The Gillette Company giving away razor handles so they could make money on razor blades, or Radio Shack giving away :CueCat scanners.
  • Cost avoidance / cost sharing: many developers need a product, so it makes sense to share development costs (this is the genesis of the X Window System and the Apache web server).

Increasingly, open source software is developed by commercial organizations. In 2004, Andrew Morton noted that 37,000 of the 38,000 recent patches in the Linux kernel were created by developers directly paid to develop the Linux kernel. Many projects, such as the X Window System and Apache, have had commercial development as a primary source of improvements since their inception. This trend has accelerated over time.

There are some who counter that the commercialization of open source is a poorly devised business model because commercial open source companies answer to parties with opposite agendas. On one hand commercial open source companies answer to volunteers developers, who are difficult to keep on a schedule, and on the other hand they answer to shareholders, who are expecting a return on their investment. Often open source development is not on a schedule and therefore it may have an adverse effect on a commercial open source company releasing software on time.[4]

Additionally, it is worth noting that open source programmers may have non-financial reasons for developing software. An analogy is that of Wikipedia, where people contribute without expecting compensation.

[edit] End-user support

Computer software is complex enough that users frequently need help with it even after they have got it set up and working to begin with. Software also invariably has bugs in it, which may adversely impact the users' ability to get work done and so need to be fixed. A user may also see areas in which the functionality of the software may be improved, to help not just that user but others as well.

Closed-source software vendors typically provide a "one-stop shop" for all support matters: since the vendor developed the software (and appropriately licensed any included components that were developed by others), the vendor also provides all necessary support functions. Nobody else can provide the level of support that the original vendor does, simply because nobody else has the requisite access to the source code (not just to understand how it works, but to make modifications and fix bugs).

This kind of model works well up to a certain point. However, as the number of customers increases, its effectiveness decreases. The better-known PC software packages of today have customer bases numbered in the millions. With that many users, support needs to be delegated to a group of people separate from the software developers (otherwise the developers would have no time to work on the software). This group increases development costs, and invaritably, not all bugs may be fixed fast enough to remain profitable. Another problem when a closed source project is this big is hackers trying to compromise other users' systems, often outnumbering the bug-fixers.[citation needed] (However, some say that it is easier to find bugs in open source software, as bugs can be more easily found with source code.[who?])

Open-source offers an alternative model, where easy access to the source code allows the proliferation of a multitude of alternative support organizations, each remaining small enough to remain responsive to the needs of its own set of customers. With ready access to the source code, any programmer can find a bug or shortcoming in the software, and submit a patch for it all the way back to the original software developers, who in turn can very quickly decide whether the patch is worth accepting or not. It is often said that the more eyes looking for bugs reduce them, and with more people looking for bugs, than looking to exploit them, it is no wonder bug fixes may be faster for open source projects.[5]

[edit] Innovation

Open-source software has often been accused of being more derivative than innovative. This is true to some extent, mostly in the desktop arena. For example, GIMP is in many ways a reinvention of the functionality of Photoshop, while OpenOffice.org is primarily designed as a plug-compatible replacement for Microsoft Office.

Many of the largest well-known open source projects are either legacy code (e.g., FreeBSD or Apache) developed a long time ago independently of the free software movement, or by companies like Netscape (which open-sourced its code with the hope that they can compete better), or by companies like MySQL which use open source to lure customers for its more expensive licensed product. However, it is notable that most of these projects have seen major or even complete rewrites (in the case of the Mozilla and Apache 2 code, for example) and do not contain much of the original code.

However, one should not overlook the many innovations that have come, and continue to come, from the open-source world:

  • Mozilla Firefox is a Web browser which has managed to take increasing market share from Microsoft's Internet Explorer, to the extent that version 7 of Internet Explorer offers many features similar to those already in Firefox. Firefox, however, copies many features from closed-source browsers such as Opera.
  • Beowulf MPI is an open-source framework used for building parallel-processing applications that run on Linux and other UNIX-like operating systems. It has proved itself so powerful that Microsoft has adopted it as a crucial part of its own efforts to establish a presence in the supercomputing market.
  • The Gmail Filesystem is a good example of the collaborative nature of much open-source development. Building on FUSE (which allows filesystems to be implemented in userspace, instead of as code that needs to be loaded into the kernel) combined with libgmail, which is a Python library for programmatic access to a user's Gmail message store, the result is the ability to use the multiple gigabytes of Gmail message space as a fileserver accessible from anywhere on the Internet.
  • Perl, the pioneering open-source scripting language, made popular many features, like regular expressions and associative arrays, that were unusual at the time. The newer Python language continues this innovation, with features like functional constructs and class-dictionary unification.
  • dcraw is an open-source tool for decoding RAW-format images from a variety of digital cameras, which can produce better-quality output than the closed-source tools provided by the camera vendors themselves.
  • Nicholas Negroponte's $100 laptop uses Linux as its operating system. The decision was made after months of discussions with vendors of closed-source alternatives. There have been recent developments to use Microsoft Windows as an alternative.
  • A number of laptop models are available with a particular emphasis on multimedia capabilities. While these invariably come preinstalled with a copy of Microsoft Windows, some of them[6][7] also offer an alternative "fast-boot" mode based on Linux. This gets around the long time it can take to boot up Windows.
  • JACK is an audio-routing architecture that has been found sufficiently useful to be ported to Apple's Mac OS X.
  • Songbird, AmaroK and Exaile are open source music players that integrate internet-based data sources to an unprecedented degree, taking song information from MusicBrainz, related track information from last.fm, album cover art from amazon.com and displaying an artist's Wikipedia page within the player.
  • While admittedly inspired by Mac OS Xs Quartz graphics layer, Compiz Fusion has pioneered the concept of "plug in" window decorators and animation effects. Users can develop their own creative and unique effects.

[edit] Compatibility and interoperability

One issue that needs to be watched with software as it evolves is the need to maintain compatibility with other software, whether via common data formats, communication protocols or APIs. Closed-source software has a particular problem with APIs, since old, obsolete ones may need to be supported essentially forever, because they are still being used by other software that has never been updated.

For instance, consider the migration from 16-bit to 32-bit x86 processor architectures. Microsoft brought out its first 32-bit version of Windows, Windows NT 3.1, in 1993, yet it wasn't until 2001, with the release of Windows XP, that it was able to put out a mass-market 32-bit OS that did away with most of the backward compatibility with 16-bit code. Now there is the next transition, to 64-bit processor architectures. Windows XP Professional x64 Edition was released in 2005, but full 64-bit support in the way of applications and hardware drivers still remains thin on the ground, and the migration looks likely to be at least as protracted as the 16-to-32-bit one.

Contrast the situation with Linux. That has been available on a range of processor architectures, including 64-bit ones, since early in its history. Now that 64-bit processors are commonplace in the mass market, all the major Linux distributions offer full 64-bit-native versions, running full 64-bit binaries and using full 64-bit drivers.

[edit] User freedoms to make use of software

The politics of Open Source is an area that is so controversial, often even Open Source advocates themselves cannot agree what it should be.

The free software movement demands the following four freedoms:

  • Freedom 0: The freedom to run the program for any purpose.
  • Freedom 1: The freedom to study and modify the program.
  • Freedom 2: The freedom to copy the program so you can help your neighbor.
  • Freedom 3: The freedom to improve the program, and release your improvements to the public, so that the whole community benefits.

Freedom 3 includes the freedom for language communities to localize software into their own languages, and to adapt it to local cultural and legal requirements.

However, one thing all are agreed on is that Open Source software is never designed to prevent users from doing things they might legitimately want to do.

[edit] Integration and overall "feel"

When people compare the user experience with using Microsoft Windows versus typical Linux distributions as a desktop system, they generally agree that Windows works in a more seamless fashion.[citation needed] Every bit of the system was produced by one company, so naturally the parts work together well. A typical Linux distro, on the other hand, is a combination of pieces from a large number of independent groups: the Linux kernel itself, basic operating system infrastructure from the GNU Project, basic GUI functions from X.Org on top of which one may run window managers or alternatively more elaborate GUI environments such as GNOME or KDE, and so on.

But on the other hand, all the different open-source groups have a strong interest in having their projects work well together. They achieve this by having a fondness for open interoperability standards, such as those promoted by Freedesktop.org and the Linux Standard Base.

This cooperation between different groups naturally has to be conducted on a more structured basis than that between different departments of the same company. This turns out to have benefits in some respects.

An example of why integration needs to be done on a carefully-structured basis, compare the systems for applying updates to operating system installations in Windows versus typical open-source operating systems. In versions of Windows up to XP/2003, updates (patches) are applied to the OS as a monolithic whole:[8]

One of the new features under consideration for the next version of the Windows Installer is the ability to uninstall a patch. Currently you must uninstall the whole product or use a hacky anti-patch style mechanism.
...
Currently patches are applied by MSI in the order they are received at the client, not the order they were created by the author. This can get really nasty in some scenarios, because applying patches in the wrong order can actually result in files being down-reved.

Most Linux distributions, as well as the BSD operating systems, on the other hand, include package management systems as standard. The various components of the installation are carefully separated into individual packages, with clearly-defined dependencies between them. An attempt to upgrade a package on which another package depends will trigger a message to that effect, perhaps with an offer to automatically upgrade the latter package as well. Two packages that do not depend on each other can be independently upgraded, and if a problem is revealed with the new version of one of them, it can be independently reverted, regardless of the order in which the two were upgraded.

Since the package management systems are open-source and public, it is straightforward for third parties to set up additional package repositories (such as Packman for SUSE Linux) that integrate cleanly with the original vendor/developer provided ones.

A complication arises from the abundance of alternate free-software programs to meet a given need. For example, multimedia frameworks like GStreamer, Xine and Mplayer compared to the one centralised API, DirectShow, on Windows. In Windows, any media software can play any file format as long as the appropriate DirectShow codecs have been installed. In Linux, the appropriate codec must support not only the correct file format, but also the right framework: codecs for one framework are not compatible with another. This can lead to an inconsistent user experience, where some player software can play certain files, but other software cannot. The issue of DRM further complicates things. Only closed-source Operating Systems, most notably Windows Vista[9], and closed-source media players can play DRM protected content. This is something which is unlikely to ever get support in open-source software as the purpose of DRM is to limit the rights of the user, which is antithetical to the open-source movement.

[edit] Security

Open source advocates usually believe that open source programs are more secure[citation needed], mostly because flaws in the code can be seen and fixed by anyone. Different studies reach different conclusions about security through obscurity versus open source. Also note that proprietary software companies may not always release advisories for all bugs in their software. Closed source advocates, including Microsoft corporation, argue that since no one is responsible for open source, there is no way to know whether it has been fixed. Open Source advocates argue back that no one knows what bugs exist in a closed source product, since there is no one independent and credible checking in depth claims made by its vendor nor any open process addressing problems whose quality can be examined by 3rd parties.[who?]

Some people believe that closed source software is more secure than open source software.[who?] With any given piece of software, it's much easier for a black hat to find and exploit security holes in any given piece of software when he has the source code than without it. For example, many open source web programs using PHP have serious security problems which may or may not be in the process of being fixed.[citation needed]

Other people believe that open source software is more secure than closed source software. The availability of open source code leads to faster discovery of security issues, and faster resolution of these issues. They point to the exploitation of proprietary software such as Internet Explorer.[who?] But others claim that such software is exploited because it has a large market share—making it an attractive target for attackers—and claim that open-source software would also be exploited if it attracted the attention of those attackers.[who?] Open source advocates often counter by pointing to Apache, which is more popular than its main competitor, Microsoft IIS, but is also exploited less often.[who?] This argument is analogous to one in cryptography: it is believed that a secure encryption scheme has to be able to withstand attacks from people who have access to the code, and that security through obscurity is not a good thing. Though cryptography and software development are different things, the goal in question is the same: security.

Flaws certainly occur in both closed-source and open-source software. However it has frequently been the case that a patch to fix one security problem in closed-source software has created another problem[10][11][12][13][14][15][16][17] or failed to fix the actual problem,[18][19][20][21] and other times[22][23][24][25][26][27] a vendor may leave a known flaw unpatched for months or even years at a time. These sorts of issues seem to be less common in open-source software.[28]

[edit] References

  1. ^ The GNU Manifesto - GNU Project - Free Software Foundation (FSF)
  2. ^ The Free Software Definition - GNU Project - Free Software Foundation (FSF)
  3. ^ Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF)
  4. ^ http://www.packettrap.com/pdf/white_paper_open_source.pdf
  5. ^ Enterprise Developers Programming Speed? Check. Time to Fix Bugs? Not So Fast. | Advice and Opinion
  6. ^ Toshiba launches multimedia Qosmio notebooks | InfoWorld | News | 2004-07-22 | By Martyn Williams, IDG News Service
  7. ^ PC World - Acer Readies New Notebook, Tablet PC
  8. ^ InstallSite: Windows Installer WebCasts and Presentations
  9. ^ Microsoft Buffeted By Criticism Over Vista DRM - Software Technology News by TechWeb
  10. ^ Windows patch backfires on the security-minded - CNET News.com
  11. ^ Microsoft fixes Windows 2000 update - CNET News.com
  12. ^ Microsoft: Windows patch is flawed - CNET News.com
  13. ^ QuickTime patch hits trouble - CNET News.com
  14. ^ Microsoft fixes can cause Windows Media Player trouble - CNET News.com
  15. ^ Excel patch locked out far-eastern users - The INQUIRER
  16. ^ IE7 goes into the ditch on some PCs
  17. ^ MS update sends PCs 'haywire' | The Register
  18. ^ Expert: Flaw still dogs Windows patch - CNET News.com
  19. ^ ;http://www.eweek.com/article2/0,1895,1909445,00.asp
  20. ^ Fix for Microsoft Automatic Updates not working | InfoWorld | News | 2007-05-11 | By Gregg Keizer, Computerworld
  21. ^ AOL fails to fill nasty Aim hole - The INQUIRER
  22. ^ Unpatched flaw found in Microsoft software - CNET News.com
  23. ^ eWeek
  24. ^ Oracle in war of words with security researcher | The Register
  25. ^ Unpatched QuickTime Bugs Strike Both Windows And Mac OSes - Software Technology News by TechWeb
  26. ^ IE 'unsafe' for 284 days last year | The Register
  27. ^ Responsible disclosure, the Microsoft way | Zero Day | ZDNet.com
  28. ^ Patch this! Musings on Microsoft's Windows patching

[edit] See also

[edit] Quotes

From the European Parliament investigation into the Echelon system (05/18/2001):

"As far as firms are concerned, they should take strict measures to ensure that sensitive information is only transmitted via secure media.... If security is to be taken seriously, only those operating systems should be used whose source code has been published and checked, since only then can it be determined with certainty what happens to the data." report mirrored on fas.org website, PDF, p.83