A little while ago, I was attending a funeral. Afterwards there was a meal, at which I was to say a “few words”. At the appropriate time, I tapped a glass with a spoon to get attention and explained to everyone that, although they thought that they were getting a free lunch, courtesy of the departed’s estate, this was not the case. The price was to listen to me for a few minutes. I explained that this was an example of the TANSTAAFL Principle – “There Ain’t No Such Thing As A Free Lunch”.
This does not just apply to a midday meal. There are few, if any, things in the world that are truly free. Although sometimes it can be challenging to uncover the true cost.
I have lost count of the number of people who say, “I never pay for apps.” Typically, these are people who actually make heavy use of their smartphone or tablet. They get upset when the performance of their device is compromised, and their mobile data usage is higher than they would expect. This is because free apps need to be paid for somehow and that is typically through advertising. The adverts are annoying and the download of information to display them is what hits the mobile data. The “free apps” folks are so surprised when I pay, say $1.99 for an app. I commonly think, generally I know, that I am getting a bargain.
This attitude is somewhat excusable if someone is not an engineer. They have no idea how much time and effort is needed to develop good software. However, there is also a demand for free software in other quarters – notably from embedded software engineers. These are just the people who should really understand the value of software. But everyone is after free tools, real-time operating systems, etc. Interestingly, this is classic psychology: people negotiate quite differently when they are buying compared with when they are selling.
There are many reasons why embedded software development tools and runtimes should have some kind of price ticket. This price might be a license for the software, or it could be a support contract for an open source product; the effect is the same. Here are some of the reasons:
1)For a business-critical project, where time to market may be tight, having access to good technical support is non-optional. Relying on community goodwill is not sound business sense.
2)Some types of software (like networking protocols, USB stacks etc.) need to be validated to ensure interoperability with other systems. This validation can be expensive. Nobody will do it for free. If you license software, you can expect it to be validated; if you get that software for free, the validation cost is down to you.
3)Many applications need to be certified (for safety or security). This requires code to be of good quality. A commercial product may have a track record and/or the vendor may provide some pre-certification support that will ease the process (and make it cheaper!).
4)Developing an embedded device is commonly a long-term investment. That investment needs care.
This list goes on. The bottom line is that, with embedded software, like so many things in life, you tend to get what you pay for.