Software development is a game of creativity and intellectual property in which developers use their knowledge of coding, logic, algorithms and systems to solve complex problems.
This sometimes results in proprietary, or closed source, tools. Other software is open source: released openly to the global developer community, which can change, refine, build upon and reuse its code in other projects.
For decades, these two models have been the main approaches to software availability and licensing. But today, the open core software model -- which shares attributes with both open and closed source -- is also gaining ground. In this article, we explore the use cases, benefits and limitations of open source vs. open core software for developers and business leaders.
What is open source code?
Open source is a general distribution and licensing model that makes code freely available for use, modification and redistribution within the terms of the open source license.
The Open Source Initiative uses 10 criteria to define open source software:
- The software's code can be redistributed freely.
- The source code is provided.
- The software license allows derived works, alterations and redistribution.
- The software author can place limited restrictions on modification permissions.
- The license does not discriminate against people or groups.
- The license does not prohibit use in specific fields of endeavor.
- No additional licensing is needed to use the software.
- The license is not specific to a tool.
- The license does not restrict other software.
- The license is technology neutral.
Under the open source model, individual developers and organizations can create software and release it into the open source domain, where it can then be used, modified and combined with other software. Any resulting work can itself be redistributed as open source software.
The following are examples of open source software:
- Apache Web Server
- Mozilla Firefox
- virtual network computing
- VLC media player
Anyone can create open source software, from enthusiastic individuals hoping to contribute to the development community to large enterprises that decide to release a tool or platform as open source code.
While open source software can be distributed and used without direct costs or specific agreements with the creator, its code is governed by formal licenses that define it as open source and outline the specific terms for its use and redistribution. There are numerous open source software license models, including the following:
- Berkeley Software Distribution licenses
- copyleft and permissive licenses
- Eclipse Public License
- GNU General Public License
- MIT License
Open source code is pervasive across the software development industry -- it's increasingly difficult to find an application or platform that does not include at least some open source components. The following are some of the many use cases for open source software, with examples in each category:
- Big data
- Apache Hadoop
- Development and programming languages
- Ruby on Rails
- AlienVault OSSIM
- Server management
- Apache Web Server
The pros and cons of open source software
Before adopting open source code or platforms, organizations should carefully consider the pros and cons of the open source model.
The central advantage of open source is savings. Software is built from modules and algorithms, and finding existing code that fills specific needs can accelerate a project and free developers to focus their efforts on other areas. Similarly, using an open source platform can reduce the costs associated with acquiring and licensing a software platform.
However, the downsides of open source software can be significant. First, freely distributed open source software has no official support beyond documentation and community response. Although paid support options are often available, open source tools generally don't have dedicated technical support. This can make adopting open source code and platforms difficult and time consuming, and organizations need experienced IT staff to integrate and maintain open source code.
Open source software can also present compliance problems for developers and businesses. Open source code might contain vulnerabilities that are only caught at the review and static testing stages or might fail to meet the organization's coding standards. Similarly, open source platforms can contain exploitable flaws that are challenging to fix, and patches or updates might be too infrequent to meet the organization's code quality needs.
Finally, open source licensing typically demands continued open source treatment of the original code as well as any code derived from open source components. Consequently, a business developing proprietary or tool-specific software might not be able to meet the obligations imposed by open source licenses.
In such a scenario, using open source software is impossible or would put the business at risk of violating open source licensing terms. Thus, adopting open source elements must be consistent with the terms and conditions of the components used.
What is open core code?
Open core is a hybrid software distribution and licensing model that combines the characteristics of the open source and closed source approaches.
Open core software typically follows the guidelines of the open source model for the core features and functionality of a component or platform, while making other advanced features and functionality proprietary and limiting access using a fee-based structure, such as a paywall. This is also called the freemium model, common in many subscription services and applications.
There are three main differences between the open source and open core models:
- Features. Open source software exposes all source code, features and functions for free, whereas open core software exposes only a limited set. Through fee-based upgrades, users can access premium features and functions, without accessing their underlying code.
- Flexibility. Users of open source software can modify all its constituent code to suit their needs. Open core software, in contrast, restricts the amount of code users can access or change for free. This curtails redistribution and limits the changes users can apply.
- Cost. Open source software is free to use, but is routinely monetized using alternative methods, such as voluntary donations or consulting and support services. Open core software, on the other hand, requires users to pay a fee for full functionality.
Alternatively, open core tools and platforms might not develop or deploy proprietary modules at all, instead providing the code necessary to combine two or more open source projects into a cohesive package -- an approach dubbed glue code. Glue code offers a proprietary way to process data or facilitate interactions among several open source modules.
Open core software companies include Docker, Elastic, GitLab, MongoDB and Redis. Examples of this monetization style include Kubernetes or a Linux kernel modified to serve cloud providers, who then charge users a fee to use that uniquely modified codebase within their cloud services.
The pros and cons of open core software
Because the open core model is relatively new in software development, its benefits and disadvantages are still emerging.
In general, open core software has the advantage of clear differentiation between free and paid features and functionalities. This helps users make informed choices about corresponding costs and capabilities. With the revenue generated by paid features and functions, developers can provide technical support and reinvest revenue back into the project for more frequent updates and fixes.
However, rules and limitations around open core projects can become murky, especially if multiple licenses are involved. Adopters must consider how to access the open source part of the code, if desired. Paid or proprietary licensed code must be clearly delineated, as any uncertainty can make open core software challenging to adopt in traditionally open source environments.
The open core approach can also limit the size of the software's developer and user community. Open core adopters are more dependent on the original developers, as they must defer to the developers for consultation and support. This, in turn, can translate into higher risk and make adopters less likely to modify and redistribute the core software.
Other software distribution and licensing models
It's handy to compare open source and open core against two other standard software distribution models: closed source and source available.
Closed source refers to commercial or proprietary software that businesses build and license for development. Closed source software is fundamentally a black box: Users rarely have insight into the code, and many closed source licenses deliberately prohibit decompiling or reverse-engineering the code. The software is treated as complete, with ongoing updates and support for installation and troubleshooting.
A source available software approach is a slight modification of the closed source model in which commercial software is developed and licensed for a fee. Source available tools offer a higher level of transparency by making source code available for review and analysis. This benefits software customers that are concerned with security and code quality issues, such as government entities.