Well, then you can see that I was sincere when I said I knew nothing about software! I'm sure they've got their best team developing a robust and world-class firmware system. Now if only I knew what firmware was . . . :smile:
I think the best definition, for these purposes, is "software that goes in embedded hardware". Your microwave oven has a microprocessor in it, and it runs "firmware". You wouldn't expect your microwave to run "apps". Firmware is rarely changed, and you have to go through a special procedure to change it.
Your PC can run zillions of different programs from different sources, and they are "software". It's a much more dynamic and flexible, general-purpose environment. As many have noted it's also a lot more susceptible to glitches and deliberate abuse (virus/spyware etc.).
Now the Model S touchscreen will reportedly be able to run some "apps", but they will be in an environment that is thoroughly isolated from the firmware that runs the car. By "thoroughly isolated" I don't just mean firewalls and other security (although I would expect that), I mean it runs on a completely separate microprocessor and it cannot be modified in any way by the end user.
I do also suspect, contrary to others' speculation here, that the drivetrain software is based on (but clearly updated given the hardware changes) the same software as in the Roadster and is carefully isolated from UI software via APIs. I've spent my life in software development (as many others here probably have too) and if it were me with a situation where reliability is so key, I'd be sure to evolve from what's already proven and tested rather than reinventing the wheel. Even if they did a rewrite (which I doubt given that it was already working well and would therefore only be necessary if the software environment had changed significantly), they would rely on extensive design work and test cases already hammered out with the Roadster.
+1. I'd go so far as to say that unless it was really horribly designed - and it sure doesn't work like it was - it would be utterly stupid to toss out the Roadster firmware and start fresh. Some products I've developed over the years have all been based on the exact same firmware base, even though three different generations ran on utterly different hardware. I just ported over the code, fixed the minor differences (port addresses etc.) and carried on from a base of production-quality code. It means you only have to worry about the things you add, or break, rather than having everything be suspect.