What's that?

Basically it is software which allows you to view its source code.
Shortcuts I'll use: OpenSource = OS, ClosedSource = CS

There are many different licenses that define what you are allowed to do with that source code.

In practice OS products have their version-control-system repository publicly available.
These may also include functionality to report issues/bugs, have discussions and contribute to the product.
The platform GitHub is the current de-facto standard platform for such repositories.
But one can choose from a large array of tools that provide a similar functionality.

Working on a project as a community has its challenges. There is a need for management and rulesets so it takes 'the right path'.

There are some common team roles:
  • maintainer: main contributor and able to approve changes to the product
  • contributor: community member that is contributing to the project
  • manager: filter and respond to issues/discussions and organize group work

Overview

Most programming languages themselves are OS.

Most scalable software is nowadays hosted/running on some unix-based operating system.
Many of them are OpenSource.

Nearly all the time software products have a foundation of OS software.
Fundamental functionality is most of the time handled by OS libraries. (p.e. SSL-handling by OpenSSL)

You can be able to scale your product fast and cost-effective as there are no licensing costs.
Note: Larger OS projects sometimes offer a paid-for tier that provides additional enterprise-grade functionality and support.

To decide if to implement such a product you might want to consider:
  • CS solutions can have more capabilities - might be less admin-work and easier to integrate and maintain
  • You can get locked-in to one CS-solution.
    Companies like to build their own IT ecosystem that will be integrated best with their own toolset.
    Interfaces to 3th-party tools might be neglected for more profit. Just look at Apple of Microsoft..
  • When evaluating CS software, you should mind that some companies might promise more than the product can actually deliver.
    Sadly - not everyone values moral decisions over higher sells.
    I've had to deal with such whitewashing multiple times in the last years.
  • Custom addons/plugins are supported by many OS products as extensibility and ability to customize functionality is a fundamental mindset in the community.
  • The behavior and documentation of OS software can be more transparent.
  • When using OS software - the organization depends on its internal specialists.
  • When using CS software - the organization depends on external specialists.
  • Larger/matured OS projects will have a larger community.
    This can be useful to find external personal that has experience with it.
  • You should check if an OS project has multiple contributors! See: GitHub

Security

Some people have strong opinions about the security aspects regarding OS products.
But as always there are multiple angles one needs to consider.

Open software can be analyzed by everyone. That makes it easier to find vulnerabilities.
This may sound alarming - but it also has a positive aspect, as these issues will be found, reported and fixed faster.

In my experience - the most critical vulnerabilities are found in closed-source products (p.e. MS Windows, VMWare). Of course this might be a subjective viewpoint.

If you have ever worked on a project intensively you might also have experienced a 'tunnel vision'. That's when you don't recognize an obvious problem because you are only viewing the project from your standpoint/perspective.
In my opinion this is a benefit that should not be neglected.

There are some software products that need to be CS. Like an algorithm that is defending against bot-attacks. It this exact ruleset would be known, it could be easily evaded. Of course one could work around that negative aspect of OS if the actual ruleset is not defined inside the software, but stored in a (secret) database/configuration like done in machine-learing and AI-driven products.

Issues

Working in a community can be challenging.
Opinions and personalities might clash from time to time.

There is a dependency on the maintainers.
If there are only a few people actively maintaining the product, it might run into problems like fixes not being published in time. This may also be frustrating for contributors of the project.

Money & time.
People might love to work and contribute to a project. But the available time in a given day is limited. Even more so if the product does not yield its maintainers financial funds.
This can lead to frustration, overworking and burnout.

Personal view

I personally was introduced to the world of OpenSource not that long ago. (5-10y)

First I was not sure how to feel about it. I took my first steps at engaging with OS software in my years as junior IT-Systems engineer because of an assignment. A few hundred hours deep - I had a working infrastrcture but did not feel like I could rely on its stability. There were too many complex components to keep track of.

At the company I worked that time we did not use OS. So there was no feasible way I could gain the needed experience.

Everything changed once I moved on to work at a company that did exaclty that. Combining OS software with an automation tool named Ansible changed the game for me. I also started to learn software development at that time - that too did help to get to know 'the full picture'.

Also to note: I feel like OS products have made a huge jump in quality in the years from 2015-2020. But that might just be a subjective view.

Nowadays I believe OS software to be a great achievment of mankind. Closed-source software will vanish with the companies supporting it - but OS can be developed over multiple generations.
It helps us exponentially build more useful and reliable tools faster.

We'll see where the road leads once AI-tools mature..