Embracing Open Source: Types of Open Source Software

Why some companies charge for Open Source Software when it is free?

Zohaib Khan

8 minute read

Why some companies charge for Open Source Software when it is free?

Why some companies charge for Open Source Software when it is free?

Before my immersion into open source software and getting to know it intimately, the question of paying for it seemed quite tricky. After all, why would someone pay for a piece of software when its source code is available for free to download, use and modify. It turns out that there are several types of open source software available today for consumption and all of them are not created equal.

So then, what are different types of open source software? And which one should you choose?

Broadly speaking, there are three major types of open source software out there:

  • Community Open Source
  • Enterprise Open Source
  • Open Core or Partial Open Source

Community Open Source

Community open source is the nascent form of open source software that is out there. It is built, tested, fixed and enhanced all within its community. People download it and use it in their software projects, fork it and add new features and give feedback to the community. If there are defects or bugs, they are reported back to the community where someone fixes it. A lot of times users also contribute code fixes and the community adopts them and the maintainers merge them with the main trunk. I have discussed this process at length in my last article explaining open source software in general .

With all the activity in the community, it moves really fast to add new features, retire early design decisions to make way for newer and/or better approaches and continuously evolve the software to make it more cool and relevant for people to use. If a certain version of the project is deemed widely used, the community usually freezes that version in time and continues development on newer versions to add more features or make major change.

Few characteristics to keep in mind if you are using community open source:

  • The community decides the version changes based on number of contributions it receives. This means that most popular open source software usually moves really fast and new features are release very quickly.
  • Security and/or bug fixes are usually applied to the most recent version of the software. This implicitly forces the consumers to upgrade their open source software at the pace of the community.
  • Bug fix cycles could be out of sync with your needs if the community does not prioritize an issue you reported and you did not provide a fix yourself. However, this could work very well if your team has members who contribute to open source and can fix the defects themselves and then release it back to the community.

The chart below shows a high velocity open source project, OpenShift Origin. Note the total number of commits (49,378) and 30-day commit number (699).

Velocity of OpenShift Origin project

Credit: Openhub.com

Enterprise open source is a special branch of community open source software. It gives you the best innovation that comes from the community and takes care of all the nuances to make it more stable and consumable.

Enterprise Open Source

What if you could take all the good experiences in using open source software and not have to worry about dealing with all the upstream interactions, rather pay someone else to take care of the rest? What if a vendor offered quality open source software, competitive with proprietary one, without you becoming a DIY shop? Well this is where enterprise open source comes in.

Enterprise open source is a special branch of community open source software. It gives you the best innovation that comes from the community and takes care of all the nuances to make it more stable and consumable.

Generally, an enterprise version is sourced from the same root as the community branch, funneled through rigorous testing and hardening, modified and benchmarked to perform at the desired throughput in real world use scenarios and maintained over longer periods of time for support. There is a whole lot of work that goes behind making enterprise open source software that requires an article of its own.

A lot of times a bunch of community open source projects, along with custom enhancements go into making an enterprise version, as one community project alone may not provide complete feature set for it to be consumable in an enterprise. Think of it like assembling a car, where engine may be sourced from one project, chasis from the other, transmission from the third and so on. It is a tightly knit supply chain that works in lockstep.

Here is a graphic that shows the relationship between community upstream projects and Red Hat’s Enterprise Open Source software.

Red Hat’s Enterprise Open Source software and their upstream projects

As you can see, managing multiple upstream projects, their version parities, compatibilities, keeping it enterprise class and finally supporting it for longer periods of time is hard work. On top of that, the enterprise version has to be stable, relevant to the demand and on the forefront of innovation. This may begin to answer why Enterprise Open Source software costs some money. In the larger scheme of things it is very little cost with very large upside for enterprises that want to leverage open source.

Main characteristics of Enterprise Open Source are:

  • A vendor stands behind it. Which means a single throat to choke and single point of contact.
  • Enterprise versions are more stable than community version and have longer cycles of support. If a particular version has a defect, then the vendor will probably provide a fix in the same version you are using, not forcing you to upgrade unnecessarily.
  • Most enterprise versions bring the best of breed upstream projects together in an easy to use package. This alone is worth the price of admission as it will take a feat of engineering for a team in an enterprise that wants to use technology to solve business problems.
  • It is completely open source.

Most enterprise versions bring the best of breed upstream projects together in an easy to use package. This alone is worth the price of admission as it will take a feat of engineering for a team in an enterprise that wants to use technology to solve business problems.

Open Core or Partial Open Source

Fundamentally, the enterprise version has to be fully open sourced to comply with the underlying licenses. If it is not, then it is what we call Open Core or partial open source. In this type, a vendor would usually have a portion of their software available as open source, while the rest, usually enterprise version is either proprietary or partially built on the open source bits. Either way, the enterprise version’s source code is not freely available. This usually happens when the vendor does not want to encourage scrutiny of their underlying software and/or may have some unique features that are not available elsewhere.

Some important things to keep in mind about Open Core are:

  • Enterprise version is still supported by a vendor and has a single point of support.
  • The licensing of its open source flavor could be restrictive than popular open source licenses. Carefully evaluate the licenses before using it pervasively.
  • The enterprise version may be built from a combination of various open source projects and proprietary code. It may not offer the full advantages of open source software. In this respect, it might be similar to buying software from proprietary vendor.

Here is a quick comparison of all the types of open source software in a quick glance:

Types Characteristics
Community Open Source
Fast release cycles, on pace with contribution in the community.
Security and bug fixes are usually done on the latest code branch.
Community prioritizes the fixes, new features and design direction.
Issues and defects require working with the community.
Enterprise Open Source
Stable release cycles.
Longer support horizons of various versions.
Support from single vendor for fixes and new features.
Off-cycle fixes are usually supported by the vendor.
Have features that are more consumable by the enterprise.
It is completely open source.
Open Core
Single point of support by a vendor.
Not completely open source. Only a smaller subset is available as open source.
Might have restrictive license.
Stable release cycles and longer support horizons.

In a nutshell, community open source is how most open source begins and evolves. Enterprise open source model brings the best of both worlds, that is, cutting edge innovation from the community without the delicate dance of managing dependencies all by yourself and get supported by a single vendor. Open core or partial open source is also another model that might offer similar benefits of enterprise open source but with a slightly restrictive access.

I hope this series on Open Source Software is informative and gives you some useful information that you can use. In order for me to gauge the effectiveness of the content, I depend on your valuable feedback. So go ahead and leave a comment to let me know your thoughts or ask me any questions. If you liked it, let me know by sharing it on LinkedIn or Facebook, liking it and/or tweet it.

Embracing Opensource Series

  1. To CIOs and CTOs: To Embrace Disruption, Default to Opensource
  2. Embracing Open Source: What is Open Source Software anyway?
  3. Emracing Open Source: Types of Open Source Software.
  4. Embracing Open Source: How to consume opensource software in enterprise?
comments powered by Disqus