The recent decision by the government to flip-flop on the wording of changes to the Patents Bill has pushed the concept of "embedded" software back into the limelight. The whole concept that there is an obvious or well defined line between "software" and "embedded software" is nonsense, but we seem to be persisting with this idea.

If you've read this blog before, you'll have noticed I am spending a bit of time writing code for a few projects that could be called "embedded". Actually, I don't personally see them that way at all, they are just code running on general purpose CPUs with some restricted hardware configuration. To me, they are no different in concept to a PC or any other general purpose CPU.

That is, after all, the definition of software: instructions executed by a general purpose machine. Hardware is not a set of discrete abstracted instructions with a concept of execution. The line is very sharp between those two realms.

The arguments seem to boil down to an idea that if the software is invisible enough (to whom is not defined) then it is "embedded". For example, recently I spent some time with a large aircraft manufacturer discussing some aspects of their aircraft systems. One component was described as an "embedded" security appliance. It actually turned out to be a Linux machine - a general purpose, commonly used OS - on merely a slightly restricted and custom board.

Does a general purpose OS, running on special hardware, but otherwise no different to any other implementation of that OS, constitute "embedded" in any meaningful way?

Invisible to some is not enough to consider it to be some special class of software, because it's still software. Another example is the fact that microcontrollers (general purpose CPUs in a very compact form) have reached a price point and size where they are suitable replacements for traditional logic designs. So, every headphone cable shipped with an iPhone or an iPod contains a CPU: it's in the case with the control buttons in the cord. It's "invisible", so therefore it's now a special class of software, even though it is just software?

Software should not be patentable. Period. How invisible it is, or whatever organisation structure is around how it's written is irrelevant. Software is not different merely because it's hidden from view.

Where this becomes complicated is inventions which depend on general purpose CPUs and code. The line should be explicitly stated in the bill: an invention may depend on such a thing but patent protection does not apply to any software involved in the invention, regardless of the form that takes.

Anything else is open to be gamed by industry to create effective patent controls on software, and "embedded" is fluid enough that you can regard all software as embedded in some way.