Somebody asked me: “What is the plural of Linux?” Maybe it is Linuxes. That sounds a bit messy, which seems rather appropriate really…
If we think about the desktop world and buying application software, you might have a Windows PC or a Mac or perhaps you run Linux. It is typical for the spec for an application to discuss hardware and OS compatibility. There will normally be ridiculously low memory size and CPU frequency minimums and a statement like “Requires Windows XP or later”. This leaves me a little wary. Will it run under Windows 7, which did not exist when the spec was written? But anyway, this information gives you something to go on. Much the same information is there for Mac users. If a program is available for Linux, there is more small print, which not only talks about OS versions, but also variants – which Linux distributions the program has been tested on. I think it is likely that, if you are smart/knowledgeable enough [I am not] you could get a Linux app to run under any variant, but it is something of a minefield.
In the embedded world, things are different. Traditional RTOSes, like our Nucleus product, are quite stable. There are, of course, new versions from time to time, but backward compatibility of functionality, API etc. are always important. However, many developers are finding that Linux is a viable option for their applications. But this opens up a new issue: which Linux variant do you use? Unless you really want to go down the “roll your own route”, this decision really comes down to which embedded software supplier you should select. Interestingly, many of the factors, that need to be considered, are the same as those applied when selecting an RTOS [as I have often talked about]. The way we build embedded systems may be changing, but the fundamental considerations are the same.
[Thanks to my colleague Brad Dixon for planting the seeds of these ideas.]