What is Open Source Software?
Open source Software is software that is made available under a license in which the publisher provides users the rights to make changes and copies. It is developed using collaborative resources and often maintained by a global community of developers. The source code of an open source software is accessible to everyone and any member of the community can contribute to the code by submitting pull requests or making suggestions for new features.
The main characteristics of open source software is that it's open, accessible, collaborative and transparent.
Open source software (OSS) is open and accessible at its core - it's what distinguishes it from other pieces of software that are closed source or proprietary. OSS is made publicly accessible. Anyone can see all of the source code and make copies and changes as they see fit.
This public accessibility often results in it being a collaborative and community driven process, where teams or individuals form together to drive the progress and direction of the software. This can be done because they have access to the source code and has a transparent view of how it works.
The transparency of open source software enables anyone to make improvements to the source code. These improvements will often be merged into the main version of the source code and thereby enabling all other users to take advantage of these improvements.
Frequently asked questions about open source software
- What does open source software mean?
- How does open source software work?
- What is an open source license?
- What is open source code?
- What are some examples of open source software?
- Why use open source software?
- What are the problems with using open source software?
- Why make open source software?
- How does open source companies make money?
- How do you start contributing to open source projects?
- What is an open source CMS?
What does open source software mean?
The definition of open source software is one that makes its source code publicly available to its users. But making the source code accessible does not automatically make your software open source.
The Open Source Initiative has listed 10 criteria that any software must follow to be open source, among which are the free redistribution of the software and that it doesn't discriminate or restrict any users or other software.
The software will operate under an open source license that governs what users allowed to do with the software.
Overall it's mostly common to use flexible licenses such as the MIT License, where the user has very high degrees of freedom in how they can copy and modify the source code of the software. This will also allow users to make their own versions and distribute these to others.
Open source software is often free, but is not the defining factor as to whether or not it is open source or closed source.
How does open source software work?
As with any other piece of software, open source software has a creator that controls the source code and decides how it's distributed and made available for others. This can be anything from a single person to a bigger company or organization.
The creator is ultimately the main decision maker and can govern it however they want to. This means that while the software itself can be open source, it doesn't automatically make the development of it a collaborative effort.
This only comes from decisions that the creators make, which will often vary from a closely governed development process to more widespread collaborative efforts.
To ensure the best possible piece of software the creator will have to maintain, update and develop new features for it. This process is often partly or fully distributed to collaborators and handled by submitting contributions to the source code such as pull requests. This way, the community of users can contribute with their own code and this can be merged in to the core product by the creators. This collaborative effort is one of the key features of open source software and allows all of the users to have an impact on the direction of the software and becomes empowered to improve it with their own code.
What is an open source license?
Any open source software will have an open source license that grants the user rights to modify and distribute it. Such a license is used to remove or ease some of the actions that traditional copyright laws would prohibit. The license determines the degree of flexibility that you have when modifying and distributing the software.
The Open Source Initiative maintains a list of approved open source licenses that fully live up to their definition of open source software. These are typically classified as given the user high degrees of flexibility in modifying and distributing the source code without any discrimination or restrictions.
One of the shortest and most flexible licenses is the MIT license, which is why it's one of the most widely used free-and-open-source licenses around the world. It originates at the Massachusetts Institute of Technology and grants the users a lot of freedom and flexibility when it comes to modifying and sharing the software.
What is open source code?
At the heart of any software is the source code. It's everything that makes the software what it is and is the primary asset or building block that is distributed when a new user gets their hands on the software.
This source code is normally maintained and modified by the creator, who maintains exclusive control over it. When it is distributed, its users must agree to license agreements that prohibits the way they can use and redistribute it. This kind of software is called proprietary or closed source software.
Open source software on the other hand offer an open source code and makes it publicly available to copy, modify and share.
What are some examples of open source software?
Open source software comes in many shapes and sizes, but chances are you're using one of more pieces of software that are actually open source - maybe without even knowing it. For some, choosing open source is an active choice, but for others it's simply a matter of picking the best software available and it just so happen to be open source.
Some examples of open source software:
- Linux (operating system)
- Mozilla Firefox (web browser)
- MySQL (database)
- Apache (web server, office suite and much more)
- Python (programming)
- Umbraco (Content management system)
Why use open source software?
The main advantages of using open source software are:
- Bigger userbase and community
- Collaborative environment
- Flexible solutions
- No vendor lock-in
- Faster time to market
- Try before your buy
The biggest advantage of using open source software is its inherent openness and accessibility. With the open source code and the freedom given from the license, it's easier and faster to get started with open source software.
Often the software is free to download online and you can get started without prior signup, registration or obtaining a license for it.
This accessibility is at the core of open source and while it's far from the only advantage, it's the key differentiator that makes open source software what it is, compared to closed source or proprietary software.
With the open source code and the public accessibility, any open source software will also be very transparent. There are no hidden parts in the code it's easy to know exactly how it works and what it does.
This level of transparency also means that any changes made to the software will be publicly available as well and will show the direction the software is taking. These changes can come from community pull requests or from the creators, but they'll always be transparent and clear to anyone using the software.
This transparency can also extend to public product roadmaps and open Github issue trackers. And if you as a user feel like the software is going in the wrong direction you're always free to make your own copy and modify it any way you like.
3. Bigger userbase and community
Due to the accessibility of open source software it'll often result in a bigger userbase and community compared to closed source software. This is by no means a guarantee or an automatic quality stamp of the software, but often a direct result of the accessibility of the software.
As the userbase and community grows, the quality of the software will often follow. With the open source code and the added users, it'll result in new users contributing to the software with their own code. This code can come in many forms: new features, bug fixes, code optimizations or spin-off products and extensions that enhance the quality for the users. These spin-off products and extensions can even turn into a business for their creators.
4. Collaborative environment
One of the key elements of an open source project is that anyone can contribute to it with their own improvements, bug fixes or completely new features. This sparks a collaborative environment around the project and empowers the users to help improve the software they're using.
With every new improvement made by a user, every other user of the software wins. This dynamic creates an environment of collaboration and empowerment, where the individual users can help each other out. This can even go as far as communities going together to make improvements in certain areas of the project.
5. Flexible solutions
If you can dream it, you can build it.
With an open source license, there's often very few limits as to what you can do with the software. If you have specific needs that are not currently met by the software you are not met by limitations, but with opportunities.
A license such as the MIT License will give you the freedom to modify the software however you see fit. This means that the only limit in what you can achieve is your own skills, time and resources.
If you want to make integrations to other systems or completely overhaul certain parts of the source code, then it's possible. This gives you an enormous flexibility in how you can use the software and make it fit to any use case. And since everything is open source you can even take your modifications and share with other users.
6. No vendor lock-in
With a proprietary software you'll often have some level of vendor lock-in. This can be in the form of contracts or limitations in how much you can take with you if you want to use a different software. This will often result in high switching costs if you were to ever choose a different piece of software.
With open source software, that's not as much of a problem. Any changes you have made to the software will be your own and will be transparent and portable if you choose to switch to a different software.
The low switching costs can ensure that you're never stuck using a certain software if it at some point becomes obsolete or no longer is a good fit for you.
Open source software is not always free, but will in most cases be very cost-effective. The cost of obtaining the software in itself will in most cases be lower and further development or maintenance will often come at a lower price. With open source software the source code is accessible for anyone, which means you're not limited in who can help you. Either you can do it yourself or hire outside freelancers or agencies to help you.
The key difference here is that the open source code won't limit your choices, which will be at your advantage when getting help. With a bigger userbase, there'll also be more developers out there to help you with your solution. This creates a market with many players which will help keep the prices lower than if there were only a few that could help you.
8. Faster time to market
With high accessibility and low barriers of entry, open source software can help you get started faster than proprietary software. Often the only limitations when choosing open source is your own time and resources.
Most open source software is free to download and start using right away, which means you can start using it right away.
An example can be an open source content management system. Simply by downloading it you can power it up locally and start working within minutes. This means you can get off the ground without any waiting time.
If you need to customize the solution there's also the possibility that someone else already did it and has made it available for you to use. And if you've previously used the software, you can re-use it on new installations to get going faster.
In a time where everything moves fast and new trends come and go, getting to the market is a key feature for any software.
9. Try before you buy
What if this software isn't the right fit for you?
With proprietary software this is often a problem as you can potentially get locked in to software that turns out to be a bad fit for your needs. With open source this is rarely the case.
The accessibility of the source code means that you can always try it out before you buy. That way you can test it out and make sure it's a good fit before committing. This will ultimately save you a lot of headache, time and money.
What are potential problems with using open source software?
While there are many advantages to open source software, there are also some problems and concerns.
One of the main problems with using open source software is the questions about its longevity and future. With a community-driven open source project, there's no guarantee that it will keep being around or be updated regularly. If the interest fades, the software could be abandoned and you as a user is stuck maintaining and updating it yourself.
A way to mitigate this problem is looking at who's behind the software and how invested they are in it. Some open source projects are almost completely run by a community, while other projects are fully backed by a commercial company. If the project is run by the community and it's relatively new it will be much riskier than a project that has been around for many years or is run by a commercial company.
Another potential problem is the ongoing costs of maintenance. While you'll often get this as part of a proprietary software, this is rarely the case for open source. If you run into issues and need support, you'll have to pay for it. If you need updates, you'll have to pay for it.
While it will often prove to be cost-effective in the long run, it's important to think of these costs. They might not occur up front as a license fee, but they can accumulate over time and even end up costing you more than if you'd chosen proprietary software.
Why make open source software?
Making a choice to develop open source software is not easy, as it completely changes the business model for the creator. But choosing open source is less about the money and more about the product.
The fundamental belief is that open source will make the product better than if it was closed source. The open source code will be the key element for creating a culture of contributing and collaboration in the community of users. Everyone will be invested in making the product as good as possible, which in the end will result in more contributors to the project than if it was only a sole company or group controlling the source code.
The open source foundation also means that there’s no payment barrier, opening up for anyone to use it and contribute. And that’s a huge benefit for you as a user. Why? Because by opening up for the possibility to contribute, the software keeps evolving, and perhaps most importantly, is evolving with the help of the people who actually use the software every day!
This will decentralize the software development and will ultimately help the product become better for the users, as their voices will be heard and they will have an influence on the direction of the project. With proprietary software this is often centralized and the direction is heavily influenced by what will increase the company profits.
How does open source companies make money?
Any company needs to make money to stay afloat. The same goes for companies that develop open source software.
With the product being free however, other revenue streams and business models need to be adapted into the company.
Some of the most common revenue streams for open source companies are:
- Offering support or training to its users
- Partnerships with resellers or other software companies
- SaaS offerings of the product
How do you start contributing to open source projects?
The best place to start, if you're interested in contributing to open source projects, is by going to the project's website. Any open source software will be happy to welcome any new contributions and will most likely have further information on how you can contribute.
Contributions can often come in several different forms and how you contribute depends on what you want to contribute with.
If you're looking to contribute to the source code, you'll need to find guidelines for how the source code is handled and how the contribution process works. Is the project using Github to handle contributions? Are there any guidelines as to what you can/can't contribute to? And how should the actual contribution be submitted?
If you're looking to contribute to the community, there's often many different ways to do it. Most of which are easy to get started with. First off there's simply sharing your knowledge through various help forums and channels where users are discussing the project. This can be anything from an official project forum to social media channels or groups. If you're looking to start community meetups or events, there'll often be guidelines for getting involved with these as well. Beware though, that some projects are not backed by a commercial company and might have limited resources to help you.
If you're looking to contribute with your own custom code or features, it's very popular for open source software to have a section for extensions or packages. In some cases it will even be its own marketplace or store where you can add your own packages - either free or paid. This is handled very differently from project to project, so do your research before starting to work on it.
If you're in doubt how to get started, all you have to do is reach out and ask questions. Most open source projects are very friendly and open to new contributors and will do their best to help you get started. It might be scary to do, but remember that everyone is in it together. If you can help make the software better, then it's in everyone's interest to help you.
What is an open source CMS?
When it comes to content management systems (CMS) there are open source and proprietary CMSs. A proprietary CMS is an opposite to open source CMS in a way that it is completely built and maintained by a single company. The source code of such CMS cannot be changed or distributed without complying to licensing agreements. The license owner can restrict the use, access, and modification of their source code.
Umbraco is open source
Umbraco CMS is an open source CMS and it operates under the MIT license. This license originates at the Massachusetts Institute of Technology and is one of the shortest and most flexible licenses. MIT license is also one of the most widely used free-and-open-source licenses around the world.
The open source nature of Umbraco means that anyone can contribute to Umbraco’s source code; currently, we have an over 200-thousand-large community that makes Umbraco better every day.
Ability to contribute to Umbraco’s source code does not mean that all the contributions will be merged to the core of the software. Those contributions (more commonly known as pull requests or PRs) that make the user-experience with Umbraco better for as many people as possible will be added to the core source code.
And those that are also great suggestions, but perhaps not suitable for most solutions, might instead end up being great add-ons that will be used by many. That is up to the contributor.
Who decides whether pull requests will be merged into the core? That is up to the company behind the software - Umbraco HQ.
Why is Umbraco open source?
Ever since Umbraco saw the light of day, our vision was to empower tech talent by putting the power and control into their hands (or keyboards), so they have the freedom and flexibility to create amazing work without being limited by the software.
Being open source also means transparency, as we provide you with a window to our software and let you in on our roadmap. It is also what makes Umbraco “alive” and provides continual growth and improvement.