🧠Knowledge Series #41: Open source explained
What it is, why it matters in the AI age and real world examples from companies like Meta, Dropbox, Airbnb and more.
🔒The Knowledge Series is a unique collection of easy to read guides designed to help you plug the gaps in your tech knowledge so that you feel more confident when chatting to technical colleagues. Clearly explained in plain English. One topic at a time.
If you’re a free subscriber and you’d like to upgrade to unlock them you can do so below. Or you can learn more about paid access here.
Hi product people 👋,
Meta recently unveiled a series of new open source AI models and at the same time, Mark Zuckerberg published a public letter on the subject entitled “Open Source AI is the path forward”1. As a result, there’s currently a debate raging about whether the future of AI is open source or not.
But what exactly is open source and how does it work in practice?
Sure, many of us know the basic characteristics and principles of an open source software approach but in this Knowledge Series, we’ll go a little deeper to understand its role in product development, real-world examples of how top tier tech companies are approaching open source software (including AI) and some of the potential downsides, too.
Coming up:
What does open source mean? The core principles and concepts explained
How product teams can use open source software
What are the benefits and potential downsides of using an open sourced approach?
Real world examples of open sourced products and technologies from companies including Dropbox, Airbnb, Microsoft
How open source AI models work
Terminology worth knowing
What does open source mean?
I always find that one of the best ways to understand a concept is to flip it on its head and first understand what the opposite of the concept is.
In this case, the opposite of open-source software would be proprietary software. That is, software that isn’t shared with the public, can’t be distributed, copied or modified in any way and is legally owned by a single company or small selection of companies.
Examples of proprietary software would include things like Microsoft Windows, Adobe Photoshop or MacOS. But even when you dig deeper into examples of proprietary software, there are still elements of it that will be based on freely available open source software.
Open source software then, is the opposite of proprietary software in many ways:
It’s open and transparent, not closed
It’s often developed and owned by a community, not a single corporation
It can be modified, copied and distributed
But open source isn’t as simple as software that’s free for everyone to use in whatever way they wish. The use of open source software is often subject to licensing terms which must be adhered to, just like proprietary software.
We’ll come onto some examples of those licensing terms in a second but first, let’s take a close look at some of the key characteristics of open source software.
Key characteristics of open source software
Here’s a snapshot of some of the key characteristics of open source software, along with some examples of open source projects that are used by modern product development teams.
Open source is typically developed and maintained by a community of contributors with the source code made freely available to developers who want to view, duplicate, modify or contribute to the source code in some way.
Most open source projects are hosted on GitHub which gives them complete transparency; other engineers can view the code, grab a copy for themselves or make suggestions of how to potentially change and improve it. This commitment to transparency is one of the most important characteristics of open-source software since it often means source code can be improved over time with bugs and problems highlighted - and fixed - by the community.
But open source doesn’t mean that anyone can do whatever they want with a project’s source code.
What are the licensing terms for using open source software?
When you first hear the term open source, your immediate assumption is probably that the software is free to use. But that’s not necessarily true - and different types of open source software will be governed by different types of licensing.
The most common types of licensing used by open source software are: general public licenses, MIT licenses, Apache licenses, BSD licenses, Mozilla Public Licenses.
If none of these terms make any sense, here’s a summary of the key features of each of the licenses along with some real world examples:
You’ll notice that each of these licenses also includes a reference to terms like “Copyleft” and “Permissive”. Ignore these for now and we’ll come back to this later. The differences between the key features of each license type is what’s most helpful to know about for now.
How product teams can use open source
Most of the products we use simply wouldn’t exist without open source software.
Many of the technologies and programming languages that are used to build products are open source. Javascript, HTML, Python etc are all essentially open sourced - and can be used freely by anyone to build whatever they like. If engineers had to pay a license to use a programming language, the web wouldn’t exist.
Many companies have also dedicated teams and initiatives for open source where they’ll commit to building tools that are shared with the wider engineering community to be used by third parties.
It’s fair to say then, that product teams typically use open source software in one of two ways:
To help themselves build features for the product they work on by using other people’s open source software
To help others build products they’re working on by releasing open source software
Examples of some open source software used in the development process include libraries and frameworks like:
React
Ruby on Rails
WordPress
React was developed internally by Meta and this is common among big tech companies; since they have significant resources available to them, they’ll often be in a position to build dedicated teams who can focus on building open source projects that can be used by the wider engineering ecosystem.
How a team can use open-source projects in their own products
If a team wants to use an open-source project in their own product, this typically means downloading a copy of the software onto an engineer’s machine and hosting it as part of the main code repo.
The upsides of open-source are significant (with the fact that much of it is free being the obvious upside), but a major downside of using open source software is that it is then the engineer or engineer’s company’s responsibility to host it safely and securely.
Without the necessary expertise required to manage open source software, it can be problematic, but most tech companies are fairly well equipped to do it if they decide it’s worth it.
Real world examples of open source products and technologies
To bring this to life a bit more, let’s take a look at some examples of some open source products and technologies together.
Microsoft
Microsoft, like other big tech companies has a series of dedicated open source projects that product teams can use in their own product development process.
Given Microsoft’s size, there are far too many to go into in detail, but here’s a few which might be of interest:
Fluent UI components
Visual Studio Code: A popular, free, and customizable code editor that runs on Linux, macOS, and Windows.
TypeScript: an open-source programming language that builds on JavaScript by adding static types and type-checking.
.NET: a cross-platform, open-source development framework for building various types of applications.
As we mentioned during the Knowledge Series on development environments, Visual Studio is the most popular code editing software used by professional developers. And it’s free to use under an open source license.
Microsoft’s Fluent design system is also popular. Like Google’s Material Design system, Fluent is a series of design components that can be used by product designers and developers who want to leverage a series of pre-built designs for popular web components used in UX design.
The Fluent design system was adopted by Microsoft in 2017 and is now available for product teams to use under an open source license. Aside from wanting to help give back to the product design / engineering community, there’s a strong strategic reason for doing this, too.
Microsoft has traditionally struggled with some elements of developer relations and by open sourcing both its code editor and design systems, it is positioning itself for potential future product releases that are dependent on developer support. This is one of the major reasons companies decide to bring projects into the open source community; building trust with the engineering world is a delicate art which, once broken, is very difficult to reclaim.
Dropbox
It might not be classed as big tech, but companies like Dropbox also have dedicated open source projects for engineers to use. Given Dropbox’s strategic focus on privacy and security as a file sharing / collaboration company, it makes sense that some of these are privacy-oriented projects.
They have over 200 projects in total which span various things like:
Password strength tester
A Jpeg file size compressor
Repositories containing scripts that simulate attacks against LLMs to teach engineers about the security risks involved when working with LLMs
Dropbox takes open source seriously. In fact, one of its earliest employees was Guido van Rossum, the creator of the Python programming language.
Airbnb
I worked at a startup a few years back and we were building a booking system for employees to book holidays. We were looking for inspiration on how to design a date picker (it’s a lot trickier than you might imagine for some use cases!) and one of the of the engineers suggested using Airbnb’s open-sourced date picker.