I have historically been somewhat skeptical about open source software [OSS]. I am always wary of anything that is “free” and subscribe to the TANSTAAFL ["there ain't no such thing as a free lunch"] principle. It has taken me quite a few years to understand that open software is not free – it is just a different business model from the usual “we make it, you buy it” approach.
I am only now coming to grips with how the OSS model really works, why it is a good thing and how business can leverage it to mutual benefit …
We are used to thinking about software development as writing code. However, if we are going to build an embedded Linux system with hundreds of packages, most of the code already exists! This is the big attraction of using the operating system. Our challenge is gluing it together – which of course does require some code. But, the primary hard problems become different. For example, when something breaks, it may well not be in your code – it is in the underlying OSS. This raises some interesting questions:
- How can you figure out what is broken?
- Since nobody that works for you wrote the code, how can you fix it?
- If you can fix it, can you get the fix upstream so that you do not have to fix it again in the next release?
- What do you do if the basic trade-offs [e.g. speed vs space] made by the OSS developers are different from your needs?
These are all very valid questions, which occur all the time during deployment of OSS. Solving them costs money. This is why OSS is not free.
With lots of software, like a real time operating system [RTOS], for example, you have a “make vs buy” decision to make. You can write your own RTOS, which will have significant development and ongoing support costs, or go to a commercial supplier and purchase a product like Nucleus. Deployment of OSS gives a similar opportunity to choose between two possible approaches:
- You can develop the expertise to work with available Linux distributions etc., learn the processes for sharing your work and nurture relationships within the OSS community. This is a major investment, but it makes sense if you have an ongoing need to deploy significant amounts of OSS across numerous projects and over an indefinite time period.
- You can work with a company [like Mentor Embedded] that is well established in the OSS world and are able to offer you the support to deploy OSS for your project, without you needing to develop significant expertise. This support might include the straightforward provision of Linux distributions, tailored to your needs, along with integrated [OSS] tools and technical support, if you have queries or problems.
The choice is yours. But, however you go about it, OSS is not free.
Thanks to my colleague Mark Mitchell who provided the core ideas for this posting.