Definition of Open Source
Generally,open source refers to a computer program in which the source code is available to the general public for use and/or modification from its original design.Open-source software is software whose source code is published and made available to the public, enabling anyone to copy, modify and redistribute the source code without paying royalties or fees. The open-source movement in software began as a response to the limitations of proprietary code, and has since spread across different fields.
Before the phrase open source became widely adopted, developers and producers used a variety of other terms. Open source gained hold with the rise of the Internet, and the attendant need for massive retooling of the computing source code. Opening the source code enabled a self-enhancing diversity of production models, communication paths, and interactive communities.
Open-source code is meant to be a collaborative effort, where programmers improve upon the source code and share the changes within the community. Typically this is not the case, and code is merely released to the public under some license. Others can then download, modify, and publish their version (fork) back to the community.
In production and development, open source as a development model promotes universal access via a free license to a product's design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone.
Features of Open Source Model
- Source Code
This is one of the major principles/features of the Open Source Model. It means that the source code of a software has to be generally available or it’s not open source. In most cases, the source code is made available with a license which places a restriction on the redistribution and use of the source code. This is a major difference between Open-source software and Free software (Free software allows you to freely redistribute the source code, modify and sell it without any restrictions whatsoever).
- Peer Production/Community/Mass Collaboration
A main principle of open-source software development is peer production, with products such as source code, "blueprints", and documentation available to the public at no cost. Open-source code can evolve through community cooperation. These communities are composed of individual programmers as well as large companies. Some of the individual programmers who start an open-source project may end up establishing companies offering products or services incorporating open-source programs.
Advantages and Disadvantages of Open Source Model
- Lower Cost
Open source software are generally cheaper to produce when compared to their proprietary competitors because they are supported by communities that actively contribute to the software.
- No Vendor Lock-In
Using open source software also means that you’re not locked to using a particular vendor’s system that only work with their other systems.
Open source software are usually more secure because the source code is available for everyone who cares to go through it any security backdoors, vulnerabilities, viruses or worms that have been planted there by the developers will be easy to detect.
- Better Quality
Because open source software has many users poring over the code, it generally has better quality and is less prone to bugs and errors when compared to its proprietary competitors.
- Because there is no requirement to create a commercial product that will sell and generate money, open source software can tend to evolve more in line with developers’ wishes than the needs of the end user.
- For the same reason, they can be less “user-friendly” and not as easy to use because less attention is paid to developing the user interface.
- There may also be less support available for when things go wrong – open source software tends to rely on its community of users to respond to and fix problems.
- Although the open source software itself is mostly free, there may still be some indirect costs involved, such as paying for external support.
- Although having an open system means that there are many people identifying bugs and fixing them, it also means that malicious users can potentially view it and exploit any vulnerabilities.
Developmental Tools in Open Source
- Revision Control Systems
Revision control systems such as Concurrent Versions System (CVS) and later Subversion (SVN) and Git are examples of tools that help centrally manage the source code files and the changes to those files for a software project. Revision control systems are needed in order to identify changes to the source code and so as to track changes to the code base over time.
- Internet Communication Systems
Tools such as mailing lists, IRC (Internet Relay Chat), and instant messaging provide means of Internet communication between developers. The Web is also a core feature of all of the above systems.
Comparisons with Other Developmental Models
- Proprietary Software
Proprietary software is software that is owned by an individual or a company (usually the one that developed it). There are almost always major restrictions on its use, and its source code is almost always kept secret. However, open source software is a software with its source code made availablewith a licensein which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose.
- Free Software
The primary difference between the terms open-source and free software is where they place their emphasis. "Free software" is defined in terms of giving the user freedom. This reflects the goal of the free software movement. "Open source" highlights that the source code is viewable to all; proponents of the term usually emphasize the quality of the software and how this is caused by the development models which are possible and popular among free and open source software projects.
- Source-Available Software
As the name suggests, source-available or shared-source is a term used to refer to software where the source is available for viewing but which may not legally be modified or redistributed. Since one of the primary features of Open Source is freedom to modify and redistribute the software, there exists a big difference between open-source and source-available software. It is necessary to make this distinction because some people think that once the source code for a software is available, it’s open source.
Why We Need To Collaborate
In a world that demands cost-effective, secure and high quality solutions, we discover that software developed today have extremely high standards set for them. When we consider some of the biggest open source software in the world today, we discover that the open source model of software development is starting to emerge as the very best.
Linux, Android, Mozilla Firefox, Drupal, WordPress, Joomla, MySQL, Apache and PHP are major success stories of what happens when developers collaborate to work on projects (all of the above mentioned software are open source software). In their respective markets, these open source software have the largest market shares.
We need to collaborate for the following reasons:
Most projects which later become open source projects started as someone’s private/bedroom project. Drupal, PageCarton, PHP and many other started like that. However, those projects only started to experience phenomenal growth and popularity when they stopped being private and evolved into collaborative software. Collaboration is very necessary for growth and expansion of software.
- Creative Abrasion
Creative abrasion is used to describe the friction individuals/communities experience when they start to share ideas with other individuals/communities that share very different beliefs. Clashes occur when two or more groups of people have different ideologies and this generally improves the quality of the software produced.
- Longer Life Time
Projects built on collaborative efforts last even after the demise of the original founders/project leads. For example, Debian Linux still exists all right even after Ian Murdock’s death in December 2015 (the –ian in Debian is his first name). The Debian community has no chance of slowing down even after the original founder’s death. That is a strong example of what happens when people collaborate.