Most software that is bought comes with a program code, called the source code. This code was developed by the program’s creator. A program, called a compiler, translates the source code so the computer can use the program. It is very difficult to alter the compiled version or see how it was originally developed. This prevents others from duplicating the code and gives developers control of the quality and the features found in the software.
Open source software, however, does the opposite. The source code is provided with the compiled version and modification is even encouraged. Open source developers believe that by allowing other interested developers to alter the source code, it will improve over time. It becomes a collaborative effort with programmers sharing the modifications.
The following criteria are necessary to be considered open source software by the software development industry:
- The program needs to be distributed freely.
- Source code needs to be included.
- Anyone is permitted to modify the source code.
- Modified versions may be redistributed.
- The license must not exclude other software or interfere with the use of other software.
For example, consider the case of Linus Torvalds. He created a new operating system based on Minix, a derivative of Unix, which he called Linux. Torvalds released version 0.02 of Linux as open source software. Many people worldwide downloaded Linux and began working with it. Programmers made modifications to the source code that he included. Torvalds obtained these modified versions from the other programmers and then released Linux version 1.0.
Apart from Linux, other popular open source software includes Mozilla (Netscape browser core), Apache (Web server), PERL (Web scripting language), and PNG (graphics file format). You can also find various programs to compete with almost any commercialized program. GIMP, and open source image-editor, can compete with Photoshop in terms of features.
With all the advantages, consider open source the next time you need a program.