Since I have been dealing with software and product construction as well as programming media servers, I have often come across this topic.
A nerdy battle between those who support the Windows faction or the Linux faction at all costs.
If you want, let’s also put into the Risk Apple and Android, which are the other two main platforms on which to run an application. A nice debate.
Everyone has their strengths and weaknesses, and obviously, here as in many other cases, the panacea for all ills does not exist, it always depends on what their goals are.
I don’t want to digress and then I’ll focus on the topic of the post: Linux.
Linux is in my humble opinion the best operating system, if your product has these features:
- It must do only one specific activity (for example, play a movie)
- You sell to your customer a combination of Hardware / Software
- The hardware you sell is not subject to a life cycle of less than two years
For all that does not respect even one of these three points it is often better to use other systems. It makes no sense to run a cross-platform app on Linux; nor does it make sense to run software on Linux that is not equipped with hardware; if we talk about an ioT device, on the other hand, it makes absolutely sense that it runs on Linux: a multimedia player like KU makes Linux its strong point against the competition.
But what are the advantages of building a product based on Linux rather than on an operating system?
- First of all: a total control of the environment in which your software runs;
- A stability without compromise;
- A huge team of developers working for you.
Each of these advantages has a price to pay, so here are the reasons.
Starting from the first point, we consider the assumption that having absolute control over something involves more work and more responsibility, in any field. Entrepreneurs who want to maintain total control over their employees know this, or mothers who want total control over their children.
These two examples concern a need for control that often becomes harmful but, if we talk about Linux, total control is not harmful at all, if not for the workload that this entails.
Linux is a completely customizable system. Every component of the kernel (the kernel is the heart) of the operating system can be modified, deleted or replaced with something that works better for your purpose. It goes without saying that all this freedom involves hours of programming. The components of the Linux kernel, in fact, do not compile themselves, it takes someone capable of dedicating themselves, and it will take a lot of time.
Again about the control, I get to point two. Linux can become an extremely stable system, thanks to its complete customization flexibility. In fact, any useless process can be eliminated, to the delight of performance as well as stability.
I repeat: Linux is pretty cool, but compiling a custom kernel is not something anyone can do. We need very high skills and experience.
So far, that’s fine, there’s a lot of work to do, but where’s the rip-off?
The rip-off is in responsibility. Programmers prefer to develop on Windows or other more common platforms because the responsibility of the operating system is no longer theirs, they are not in control of it. It may seem a small factor, but it all depends on the application you need to develop. If there are sensitive data or probable attempts to attack by enemies and competitors, often not using Linux is a forced choice, in order not to have to bear the costs and risks that protection against attacks on the system entails.
Working with commercial development environments gives the security and stability of a part of the system to the company that produces the operating system, downloading the poor team of developers from a responsibility that often they would not have the least resources to manage. I am absolutely not suggesting that your developers are inactive, just consider that they might be afraid of building your product on a structure that requires 360° maintenance compared to what a structure running on a commercial operating system would involve.
But let’s get to the third point. It’s true that Linux is the icon of the largest open source software communities in the world. Any work you have to do on Linux is partly tracked by others. This allows you to save time by retrieving “bits and pieces” of code around the web, but it puts you in the position to be extremely attentive to the license of what you use. Open source software, in fact, is often supplied with a GPL license, a code supply contract that forces you to re-publish what you’ve developed for those who come after you. That’s ethically very valid, but destructive for everything that is commercial.
But then how to deal with this? The most often used solution is to publish the code or part of the code that you have evolved.
By publishing the software sources, in fact, one does anything but put the competition in the condition to copy the product. A lot of parts will be missing, like the interface or the operating system, and they will require a development time to be written which could sometimes exceed the time it takes to do the job from the beginning.
Another solution that you can practice is to mention in the commercial software disclaimer that you used GPL with a text like this:
“This software uses code of FFmpeg licensed under the LGPLv2.1 and its source can be downloaded here.”
It is therefore possible to make commercial products with Linux, applying some simple rules of good digital behavior.
I conclude by telling you that for KU, the multimedia player I developed for projection mapping and digital signage, we chose Linux. An impervious and uphill road, but that is paying all the effort made. It’s been two years now since the product went on the market while I’m writing this post and we’ve never had any problems with the operating system.
If you need clarification or any information do not hesitate to contact me, I will reply as soon as possible.