Blog | A month ago | 4 — 6 mins

Introduction

Free and Open Source Software (FOSS) is software whose source code is freely available for anyone to read and modify. Since its origins in the GNU and Linux projects in the 1980s, FOSS has grown to encompass an incredible range of tools; today, FOSS tools exist for almost every use case imaginable. Understanding the pros and cons of using FOSS tools will help you decide when to use FOSS over proprietary or managed software.

What is FOSS?

The idea of releasing source code for free began with Richard Stallman as far back as the 80s. Stallman believed users should be as free to understand and control the software running on their computer as they are to disassemble and upgrade the computer’s hardware. Stallman began a movement to replace the then-standard Unix operating system with an open, collaboratively developed alternative. This effort grew into GNU and Linux projects which today are used by millions of computers and devices worldwide.

As the GNU and Linux projects grew popular, additional software tools were developed using the FOSS model. Today FOSS options exist in a wide variety of domains: for example, operating systems like Android and Linux, data-processing tools like Spark and Hadoop, scientific computing tools like SciPy and R, and AI/ML tools like Tensorflow and Scikit-Learn.

While FOSS began as a way for volunteers to collaborate in the open, in recent years, it has been embraced as a distribution model by many private firms. Large companies like Google and Microsoft use FOSS to distribute software like the Android OS and the Swift programming language. Smaller companies like DBT and Databricks focus on providing managed infrastructure and support for their FOSS products. 

The pros & cons of FOSS

There are many benefits to software developed in the open. There’s a saying: “given enough eyeballs, all bugs are shallow” - a reflection that having a large community of developers and users results in problems being discovered and fixed quickly. Established FOSS tools benefit from active communities to ensure security and stability and to provide support.

The FOSS ethos emphasizes software that’s “free as in speech, not free as in beer,” but FOSS projects are also free to install and use. The up-front cost of FOSS tools is often low, allowing you to start solving problems without going through lengthy sales and procurement processes.

Another benefit of open-source code is the flexibility it provides. You’re always free to add missing features or modify the tool to suit your needs.  FOSS software is generally free of vendor lock-in; you can run it anywhere.

Open development has downsides as well. Without dedicated QA and security testing, some problems can be overlooked, especially in tools with less active communities. Without a dedicated support team, it can be difficult to get problems fixed. Many FOSS users aren’t (and don’t want to be) experts at debugging and extending those tools. While some tools’ communities are open and supportive, others have complained about abuse and poor content moderation.

The low up-front cost of FOSS tools can hide significant long-term maintenance costs as projects move from early-stage experiments to business-critical infrastructure. Maintaining FOSS infrastructure can mean hiring teams of engineers with deep experience in tools like Spark or Hadoop; otherwise, system failures end up being the responsibility of engineering and operations teams who are non-experts in the specific tools.

A final drawback of FOSS tools is the potential disconnect between the developers of a tool and the intended user of the tool. This disconnect often leads to awkward and unpolished user experiences.

When to use FOSS

So when should you choose FOSS tools over proprietary or managed tools?

The first category of ideal use-cases are experiments and prototypes. When you’re first exploring a new problem domain, the low barriers to adoption and up-front cost can allow you to focus on getting to an initial solution without wasting time and money on tools that might not be appropriate. In many cases there exist multiple tools for a given problem domain, and often the easiest way to discover which is most appropriate is to try a couple. With FOSS tools, it’s often possible to get a feel for a tool’s capabilities in less time that it would take to get a call-back from the sales team of a proprietary tool.

Another category of use-cases where FOSS tools shine is when a mature, purpose-built tool exists to solve the specific problem you’re working on. Tools like Spark and SciKit-Learn have active communities ready to help if you run into problems and have been battle-tested in a multitude of applications. Community-provided support leaves a history of solutions that are often just a quick search away.

The final place where FOSS tools make the most sense is for core systems, where the flexibility and extensibility of open development makes it possible to deliver results by building on the work of others. Starting from a foundation of robust tools that can accelerate product development and allow you to focus on what’s unique about the problem you’re solving.

Conclusion

There are many places where FOSS tools are the best option. Early on, the fact that these tools are free makes it easy to explore and prototype new ideas. Mature tools with active support communities have become industry standards for solving many problems. Where a standard solution doesn’t exist, you can often solve a problem by combining parts of other tools.

FOSS tools have some critical downsides that you should consider. They can become difficult to manage over time at scale, especially data infrastructure tools like Spark. FOSS tools may not exist to solve cutting-edge and niche problems or problems experienced by non-engineers. Finally, the total cost of managing these tools, financially and in terms of the needed expertise, can be hard to predict. Fortunately, in many cases, there exist platforms providing managed versions of popular FOSS tools. These platforms ensure that the tools they provide “just work,” provide professional support and development, and have a predictable price model - in many ways providing the best of both the FOSS and proprietary software delivery approaches.