Yes, from your subjective points of view, you're all right
Just to proof you, that everything is possible, look at the picture below:
It shows you a .NET application, that uses the DLL interface of the Samurize WMP9 Plugin. The Combo Box will list all methods contained in this DLL. When you select a method, it'll display the result in the label below.
The second label shows the date/time, that is coming from an COM Server made with VB6.
The third one, shows the current version info from Winamp.
Nothing special, you've seen this a hundred times before, except, this app can be configured via a text/xml file, that defines what DLL / COM-Server / whatever to use and what's the name of the methods to be called for that.
If you are a developer, you would write specific functions into a DLL / COM Server without thinking about the user interface. You just put in the functions that you think they are important and make sense for this particular app.
You don't have to think whether someone would need a GPS interface as well... cause this comes from another DLL / COM Server and they're combined in one screen through the UI (this is the users part).
Also, for supporting your app, you don't have to care about my code. If there is a bug, I will fix it (hopefully ).
Each developer is responsible for his own code himself. If the code is crap... the user will choose another one
To make such thing work, a clearly defined and simple interface is a must. But this is not deficit, this is a feature. The simpler it is, the better is the handling.
With this concept you'll not be able to replace whole (complex) applications, but most of the apps used in a CarPC are not complex.
The trick is, to start thinking of small libraries, that provide a few functions that can be usefull. Such as your Windows is not one big block of code, it constists of thousands little drivers, DLL and what so ever. If you need them, load them.
Hope, you now understand my concept a bit better