Open source development involves publishing the source code of a software system and inviting volunteers to participate in the development process. Rooted in the Free Software Foundation, advocating for open availability of source code for examination and modification.
Open-source software recruits a large population of volunteer developers via the Internet, with many users also contributing. Contributors can report and fix bugs, and propose new features, but successful projects often rely on a core group of developers.
Open-source software is usually cheap or free to acquire; documentation and support may incur costs. Mature open-source systems are known for their reliability due to a large user base capable of fixing problems promptly.
For a company involved in software development, two open-source issues have to be considered:
Should the product that is being developed make use of open-source components?
Should an open-source approach be used for the software’s development?
The answers to these questions depend on the type of software that is being developed and the background and experience of the development team. If you are developing a software product for sale, then time to market and reduced costs are critical. If you are developing in a domain in which there are high-quality open-source systems available, you can save time and money by using these systems. However, if you are developing software for a specific set of organizational requirements, then using open-source components may not be an option. You may have to integrate your software with existing systems that are incompatible with available open-source systems. Even then, however, it could be quicker and cheaper to modify the open-source system rather than redevelop the functionality that you need.
If developing a product for sale, leveraging existing high-quality open-source systems can save time and costs.
For specific organizational requirements, integration with incompatible systems might require modifying open-source systems.
Some companies adopt an open-source development model not reliant on selling software but on selling support.
Open source is more applicable for general software products rather than specific organizational applications.
Concerns include revealing confidential business knowledge to competitors.
Small companies may find open sourcing reassuring for customers' long-term support.
Open-sourcing a system doesn't guarantee community involvement.
Most successful open-source products are platform products rather than specialized application systems.
Example:
Linux operating system, widely used in servers and desktop environments.
Other notable examples include Java, Apache web server, and the MySQL database management system.
Major industry players like IBM and Sun support the open-source movement.
In summary, open-source development offers cost benefits, reliability, and a collaborative community, but its suitability depends on the nature of the software, business goals, and the development team's expertise.
Open source licensing:-
The fundamental principle of open-source development is that source code should be freely available, but this does not mean that anyone can do as they wish with that code. Legally, the developer of the code (either a company or an individual) still owns the code. They can place restrictions on how it is used by including legally binding conditions in an open-source software license (St. Laurent, 2004). Some open-source developers believe that if an open-source component is used to develop a new system, then that system should also be open-source. Others are willing to allow their code to be used without this restriction. The developed systems may be proprietary and sold as closed-source systems. Most open-source licenses are derived from one of three general models:
The GNU General Public License (GPL). This is a so-called ‘reciprocal’ license that, simplistically, means that if you use open-source software that is licensed under the GPL license, then you must make that software open source.
The GNU Lesser General Public License (LGPL). This is a variant of the GPL license where you can write components that link to open-source code without having to publish the source of these components. However, if you change the licensed component, then you must publish this as open source.
The Berkeley Standard Distribution (BSD) License. This is a non-reciprocal license, which means you are not obliged to republish any changes or modifications made to open-source code. You can include the code in proprietary systems that are sold. If you use open-source components, you must acknowledge the original creator of the code.
Licensing issues are important because if you use open-source software as part of a software product, then you may be obliged by the terms of the license to make your product open-source. If you are trying to sell your software, you may wish to keep it secret. This means that you may wish to avoid using GPL-licensed open-source software in its development.
The companies managing projects that use open source should:
Establish a system for maintaining information about open-source components that are downloaded and used. You have to keep a copy of the license for each component that was valid at the time the component was used. Licenses may change so you need to know the conditions that you have agreed to.
Be aware of the different types of licenses and understand how a component is licensed before it is used. You may decide to use a component in one system but not in another because you plan to use these systems in different ways.
Be aware of evolution pathways for components. You need to know a bit about the open-source project where components are developed to understand how they might change in the future.
Educate people about open source. It’s not enough to have procedures in place to ensure compliance with license conditions. You also need to educate developers about open-source and open-source licensing.
Have auditing systems in place. Developers, under tight deadlines, might be tempted to break the terms of a license. If possible, you should have software in place to detect and stop this.
Participate in the open-source community. If you rely on open-source products, you should participate in the community and help support their development.
The business model of software is changing. It is becoming increasingly difficult to build a business by selling specialized software systems. Many companies prefer to make their software open source and then sell support and consultancy to software users. This trend is likely to accelerate, with the increasing use of open-source software and with more and more software available in this form.