Introduction

Much of the technology we interact with on a daily basis will have utilise open source technology. Open source refers to source code which is made freely available for use or modification by other developers and is often developed as a public collaboration.

Licenses

The three most popular licenses used in 2019 were as follows. Taken from choosealicense.com...

MIT license (MIT): A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

<!-- -->

Apache License 2.0 (Apache-2.0): A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

<!-- -->

GNU General Public License 3.0 (GPLv3): Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.

Not just the little guy

The interesting thing is that it is not just individual developers contributing to open source code. Many of the big names in tech contribute major projects to the open source community.

From Chromium and Android (Google), through to React and GraphQL (Facebook), Typescript and Visual Studio Code (Microsoft), open source is becoming ubiquitous amongst the top technology companies. But why would these big tech companies want to open source their code in the first place?

Why big tech open source

Of course, different companies will have different reasons for open sourcing their code. The main drivers for this decision can include some of the following.

Innovation

Open source exposes companies to a huge pool of talented and innovative programmers. Coding in a collaborative, open way will naturally tend towards unique and well reasoned solutions to problems. The wider a range of input you can have to a problem, the more likely that innovative solutions appear. If you control the project, not only do you get this benefit, but you also have the final say on the direction of the project -- you keep control.

Bugs happen

No code is perfect. If it is written by humans, there will always be unintended bugs somewhere. Mature, open source projects tend to be some of the most robust because of the breadth of usership. It is likely they will have been extensively battle tested in the wild by a wider range of developers. This helps find those edge cases (often unintended use cases) where the hardest to find bugs live. Developers using your code have a vested interested in making it run as well as it can.

Non-core components

As a side note, it is important to say that it is very rarely the company's core intellectual property that is open sourced. More frequently it tends to be an infrastructural component that does not directly bring in money for the company. Facebook's React framework is used extensively within the company but it is not their primary focus.

Trust

As the name suggests, open source is source code that can can be viewed, modified and used freely (depending on license limitations). This has the added side effect that developers can dive into the source code of any open source project and audit the implementation for security issues, code quality and even coding style. As a developer, this boosts the level of trust in the code that you will be bringing into your project and the trust you have bringing in that company's propriatary code.

Community

I think it's important not to underestimate the power of community on brand image. Open source by its very nature is communal; anyone can read and contribute to the code base. Having a community of developers who feel positive about a project can be beneficial for the value people place on the company as a whole.

Many companies will build products that utilise existing open source code. People rightfully feel that, as they are benefitting from the results of other people's efforts, they should reciprocate. Many people simply believe in the philosophy of open source -- collaboration, transparency and innovation.

Conclusion

It may seem strange for big companies to make their source code publicly available and to spend time contributing to open source projects. The benefits of this, however, can greatly outweigh the costs. As it is often not the company's core intellectual property, they benefit from better peripheral or infrastructural tools that are battle tested by a wide user base and improved by a myriad of different viewpoints.