Blasphemy! Open source software is the greatest thing that has ever happened to the industry! It’s free! Why on Earth would we ever want to avoid open source software? This may surprise some readers but despite our love for “open source” and “free software”, there are several reasons that developers should consider that justify avoiding open source software.
Reason #1 – Accidentally exposing confidential intellectual property
Developers often think that all open source software is free and comes with no hooks attached. The problem is that this isn’t the case. There are several different licensing schemes that open source software developers use. Some really do give away the farm; However, there are also licenses that require any modifications or even associated software to be released as open source. If close attention is not being paid, then a developer could find themselves having to release confidential code and algorithms to the world. Free software just cost the company in revealing the code or if they want to be protected, they now need to spend money on attorney fees to make sure that they aren’t giving it all away by using “free” software.
Make sure that if you are going to use open source software, that you calculate the attorney costs to verify you are in the clear.
Reason #2 – Designed for functionality not robustness
Open source software is often written functionally. Access and write to an SD card. Communicate over USB. The issue here is that while it functions the code is generally not robust and expects that a wrench will never be thrown in the gears. This is rarely the case and while the software is free, very quickly developers can find that their open source software is just functional and can’t stand-up to real world pressures.
Reason #3 – Lacks a traceable software development life cycle
Open source software usually starts with an ingenious developer working out their garage or basement and they create something very functional and useful. Eventually multiple developers with spare time on their hands get involved. The software evolves but it doesn’t really follow a traceable design cycle or even follow best practices. These various developers implement what they want or push the code in the direction that meets their needs. The result is software that works in limited situations and circumstances and users need to cross their fingers and pray that their needs and conditions match them.
Reason #4 – Lacking automated or manual tests
Yes, this one might be a stickler since there are so many engineers and clients I know that don’t use automated tests. A formalized testing process, especially automated tests are critical to ensuring that a code base is robust and has sufficient quality to meet its needs. I’ve seen open source Python projects that include automated testing which is encouraging but for low level firmware and embedded systems we seem to still lag behind the rest of the software industry. Without automated tests, we have no way to know if integrating that open source component broke something in it that we won’t notice until we go to production.
Reason #5 – Poor documentation or lacking completely
Documentation has been getting better among open source projects that have been around for a long time or that have strong commercial backing. Smaller projects though that are driven by individuals tend to have little to no documentation. If the open source code doesn’t have documentation, putting it into practice or debugging it is going to be a nightmare and more expensive than just getting commercial or industrial grade software.
Reason # 6 – Real-time support is lacking
There are few things more frustrating than doing everything you can to get something to work or debugged and you just hit the wall. When this happens, the best way to resolve the issue is to get support. The problem with open source is that there is no guarantee that you will get the support you need in a timely manner to resolve any issues. Sure, there are forums and social media to request help but those are manned by people giving up their free time to help solve problems. If they don’t have the time to dig into a problem, or the problem isn’t interest or is too complex, then the developer is on their own.
Reason #7 – Integration is never as easy as it seems
The website was found, the demonstration video was awesome. This is the component to use. Look at how easy it is! The source is downloaded and the integration begins. Months later, integration is still going on. What appeared easy quickly turned complex because the same platform or tool-chain wasn’t being used. “Minor” modifications had to be made. The rabbit hole just keeps getting deeper but after this much time has been sunk into the integration, it cannot be for naught.
By no means am I against open source software. It’s been extremely helpful and beneficial in certain circumstances. It’s important though not to just use software because it’s free and open source. Developers need to recognize their requirements, needs and the robustness level that they need for their product and appropriately develop or source software that meets those needs.