This guide places all the basics of open source in context to help you get started in the most wide-ranging, growing, and dynamic field of software development today. The developerWorks Open source zone is your source for how-to information, tools, and project updates to help you develop with open source technologies and use them with IBM® products. Topic areas include Eclipse, Apache Derby, Apache Geronimo, scripting languages such as PHP, Python, and Perl, as well as broader discussions on open source licensing and open source development.
In a word, open source is collaboration. More specifically, it's public collaboration on a software project. IBM has committed to open source in a big way with contributions to more than 120 projects, including more than $1 billion in Linux® development. According to the Open Source Initiative (OSI), it can be defined this way: "Open source promotes software reliability and quality by supporting independent peer review and rapid evolution of source code. To be OSI certified, the software must be distributed under a license that guarantees the right to read, redistribute, modify, and use the software freely."
Open source can also apply to the popular movement of individuals, organizations, and companies that seek to put such software into mainstream usage. According to the Open Source Initiative, open source consists of 10 points, which are reproduced below. Open source doesn't just mean access to the source code. The distribution terms of open source software must comply with the following criteria:
1. Free redistribution
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
2. Source code
The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
3. Derived works
The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
4. Integrity of the author's source code
The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
5. No discrimination against persons or groups
The license must not discriminate against any person or group of persons.
6. No discrimination against fields of endeavor
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
7. Distribution of license
The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
8. License must not be specific to a product
The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
9. License must not restrict other software
The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open source software.
10. License must be technology-neutral
No provision of the license may be predicated on any individual technology or style of interface.
See the developerWorks articles "Open source licensing, Part 1: The intent" and "Open source licensing, Part 2: Academic v. reciprocal" for additional information.
Also, be sure to check out the white paper, "Integrating Open Source into your business" for more information about open source and open computing, the benefits and challenges of open source, and how to integrate open source into your IT strategy.
The initial attraction that most computer users have to open source software is the price. Open source programs are often given away by the author. However, zero out-of-pocket cost is not an intrinsic quality of open source software.
There is a pragmatic and philosophical argument favoring open source development:
- Open source programs allow a developer to look at the code, see if it can be improved, and use it in a program of their own. Contributors from around the world can contribute and offer translations, documentation, bug reports, and help in other forms. A free exchange of ideas speeds innovation.
- According to the GNU Manifesto, people have a moral right to the human-readable form of a computer program.
The English word "free" is tricky in that it can mean either freedom or gratis, as in no-cost to the taker. When open source proponents get up on their soapboxes, they often have to preface their remarks so the listener knows if the speaker is referring to "free" as in "free speech," which is a matter of policy, or "free" as in "free beer." As any college student can report, someone needs to bear the cost of creating the beer (or software) while others consume the beer (or software) and enjoy it with no out-of-pocket costs.
The decision to start developing open source software is a political and licensing decision and less so one of technology. See the OSI list of approved open source licenses and make your selection according to your needs and plans for your project. See the developerWorks articles "Open source licensing, Part 1: The intent" and "Open source licensing, Part 2: Academic v. reciprocal" for additional information. You may want to consult with an attorney specializing in intellectual property if you find the terms of the existing licenses confusing or if you have questions.
In early 2005, open source license luminaries predicted the community would see fewer open source licenses, although it's unclear if that prediction is more of a hope than an expectation.
LAMP stands for Linux, Apache, MySQL, and PHP. However, depending on who you talk to, the P can stand for Perl or Python. In general, P is assumed to be PHP. LAMP has a bigger meaning, too. LAMP represents a nonproprietary, flexible way to create a server-based application. Each of the programs comprising the term can be replaced with an alternative that best suits the needs of the application. Each component can be upgraded independently, although this is usually done with care and planning. Best of all, each program in LAMP is free, or almost free in both meanings of the word.
All of them. The technology behind open source is not the most important element of open source. The important element is the decision of the author or authors to release the software as open source and use one of the many open source licenses.
Yes, and almost everyone who uses e-mail or surfs the Web is an open source software user. Most e-mail passes through an open source server during its travels across the Internet. Most Web servers rely on open source software. Google is based on open source. As OSI points out, the running gears of the Internet, including the mail transports, Web and FTP servers, are virtually all open source-based.
Open source software is not warez, which is software distributed without permission of the copyright holders or a proper license.
In a nutshell, IBM is a significant force supporting open source innovation and collaboration. The company participates in more than 120 collaborative projects contributed to the open source community, including Eclipse, Apache Derby, and Apache Geronimo. IBM is also contributing to Apache Tuscany and Apache Harmony.
Yes, the Common Public License. See Common Public License (CPL) Frequently asked questions for background information on the CPL.