Software; everyone uses it. From Microsoft Word to the calendar application on your phone, software has been fully integrated into everyday life. All software has code behind it which makes it function. Unfortunately, it’s not magic. Someone has to write the code and maintain it. Humans are not perfect, we all make mistakes and since we create software, there are bound to be issues. These are called bugs. The more people who test and look at the source code can determine and correct bugs. This brings us to the two main methodologies of how software is developed, open source software and closed source software.
What is Open Source Software?
Open source software simply means the source code is available for anyone to view. This allows people from around the world to suggest edits and make improvements to the software. It’s quite a powerful tool which gives anyone the ability to check your work and make corrections as needed. Simply because the source code is available does not mean the software is vulnerable, it’s actually quite the opposite. As stated earlier, open source code allows anyone to view how a program works, find issues, and make improvements. With closed source software, it’s nearly impossible to fully understand how the program functions. We have no idea what it might be doing without our knowledge. The epidemy of open source software is Linux. Linux is an operating system, like Windows, but fully open source. People from around the world contribute to it. The project became so big they had to create special software to manage changes to the source code.
Closed Source Software
Closed source software is simply the opposite of open source software. The software is developed by a group people in a closed environment. Only a limited amount of people can work on and view the code. The general public has no clue what is going on behind the scenes. This method is used to create lots of software such as Windows. While there is nothing inherently bad about it, it does mean less people have seen the code. Also, if a company abandons a project, everyone relying on the project will be out of luck with no one to support and fix it. With open source, that issue is solved. If the original creator decides they no longer want to keep maintaining a project, anyone else can fork it and take over.
What about a combination of the two?
Some software is developed with a mix of the two. For instance, the client application is open source but the server is closed source. This method is better than most but the server is still a black box. If the project were to become unmaintained, then the client would be worthless even though it is open source. It may be possible to reverse engineer the server but it would take some time. The general public could still get a good idea how the software worked based on the client software, though. The client could also be reused to for another project. It’s considered bad practice to reinvent the wheel. If an open source project already exists which gets the job done, there’s no reason to recreate it, simply adopt it.
Examples of Open Source Software
As mentioned earlier, the shining example of open source software is Linux. Linux was the brainchild of Linus Torvalds. It was initially a small project which became a global project. Most websites run on a Linux based operating system. It’s widely used to power servers. The Android mobile phone operating system also runs on the Linux kernel. Another great project is Mozilla’s Firefox. Firefox got its origins from the ashes of Netscape and became an extremely useful browser. It even competes with larger browsers backed by resource heavy companies like Google. Speaking of Google, the Chrome web browser has an open source component called Chromium. This is developed in the open and when they go to compile Google Chrome, they pull in Chromium along with other closed source components to create the browser.
Examples of Closed Source Software
There are lots of closed source projects. Microsoft’s Windows is one of them. Over the years, though, Microsoft has involved its community more and more. With the introduction of Windows 10, anyone can sign up to test the new versions of Windows 10 before they are released to the general public. This gives Microsoft the benefit of people testing the new software while still maintaining their closed source code. MacOS is another example. MacOS is based on an open source operating system called BSD. Apple has added lots of closed source components to this original fork over the years and they are quite different projects at this point. It was smart of Apple to start from such a solid foundation and build off it.
Closing the Loop
Closed source software means only creators of the software can view and edit the code. This method may be useful if you want to keep your secret sauce a secret but it also means you don’t get other people’s suggestions. Open source software means anyone can view and suggest changes to a project. This allows for unparalleled collaboration. Also, if the original maintainers decide to no longer work an a project, anyone can take their code and continue it.