Open & Closed Source

If I asked you to name some examples of software you use often, you’d probably reply with an app you use at work (Google Docs or one of the Microsoft Office tools), to pass a few spare minutes (Twitter, Instagram or TikTok) or to relax after a long day (Netflix).

Closed source

All of the software examples I’ve just mentioned are known as closed-source _or proprietary software_. The name “closed source” relates to the software’s source code – it’s “closed” because it is not shared publicly. This code is a valuable business asset and probably contains commercially valuable information, so the owners do not want it to be publicly accessible.

Closed source software is normally governed by a software license that lets you use the application, while the copyright holder (the person or company that made the software) maintains all ownership rights to the code.

It might surprise you to know that in many cases, when you buy a software product, even in a one-off purchase, you are technically only buying a license to use the software, and if you read the Terms of Service, there may be some “interesting” restrictions on how you are legally allowed to use it.

But not all software is closed.

Open Source Software

Open Source Software (_OSS, commonly referred to as _open source) is a category of computer software where the copyright holder has decided to give other people the right to use, modify and distribute the source code and software to anyone else for any purpose.

Much of the underlying technology powering the internet is open source; for example, a large percentage of web servers run versions of the open-source Linux operating system, the open-source content management platform WordPress powers millions of websites, and developers write code using Microsoft’s open source Visual Studio Code text editor.

With the rise of platforms like Github (a site that stores source code online for backup and shared access), it has become easy for developers to collaborate to write software. There are hundreds of thousands of open-source software projects hosted on Github, and collaboration is usually open to anyone willing to contribute – as long as the code that they write is good enough.

alt_text

Why make your open-source software?

But why would anyone (much less a for-profit company like Microsoft) want to give away their work for free? There are a few reasons.

Less time spent “reinventing the wheel”

When people and companies can share resources, they don’t have to keep remaking versions of the same basic software tools.

For example, if a company wants to create a blog, they don’t have to hire software engineers to build one from scratch; they can just use WordPress. This lets their developers spend more time working on high-value problems that provide real value to the business.

More eyes to find and fix bugs

All software has bugs, so the more people there are checking the code, the greater the odds are of finding them before they cause problems.

Contribute to the community

Many open-source software projects are provided because the code developers strongly believe open-source software benefits their community.

Working on open source can help build positive brand associations for companies, especially in developers’ eyes.

A recent example is Microsoft, which has received much more positive attention in the development community since it released popular open-source products like Visual Studio Code.

Easier to hire developers

Developers like to work on interesting problems, and many enjoy contributing back to the community, so if they see a company contributing to open-source projects, they may be more inclined to work with them.

Easier to get hired as a developer

And finally, but probably most importantly for those interested in working in a technical role – working on open-source software can give you a great portfolio of publicly viewable work you can share with potential employers.

Many employers will be more interested in speaking to a developer with open-source contributions than with one who has completed some tech-related courses at university, which is great news if you are coming to tech from a non-traditional background.

Next:
User Interfaces (UI)