The programmability of the systems has always been attainable.
Even back in 1995 when I got started in HA there were several choices for relatively cheap/flexible controllers.
The problem has been that the stereotypical homeowner does NOT want to program anything. VCR's blinking "12:00" was the joke of the 90's, and the concept is still true today, even if VCR's don't really exist anymore.
Can you imagine the average person wanting to program an HA system? Telling it when to turn lights on and off, how to factor in shifting sunrise/sunset times, occupancy sensors and the like? It's very very difficult to make a system that is both powerful and simple, unless you break it down to a very very basic function.
Most people would love an automated home experience, but the setup is daunting. Especially when you consider all the edge cases... Turn on the interior lights at 30 minutes before dusk, but not if we're away or out. Shut off the HVAC system or zone if a window is open, unless the door to that room is closed or the humidity is very high (like in a bathroom), and so on.
I have personally found that if you don't carry the system logic far enough, it is just annoying and perceived as "stupid". In order to make the system very intelligent it needs to be rather complex and incorporate a lot of environmental (temperature, humidity, occupancy, seasonal, etc) inputs.
Heave on top of all that there is no one system that covers all the basic sub-functions really well:
- Phone
- Security
- Lighting
- HVAC
- Irrigation
- A/V (multi-room or single room).
- User Interface (remote controls, keypads, input/control panels, etc.).
There are a some systems that do a couple of these well. HAI OmniPro alarm systems do a pretty good job with security, HVAC and lighting. Their audio is passable, but not great, and their irrigation is kind of lacking.
The JDS Stargate is kind of outdated, but does a good job with lighting and basic I/O (relays, TTL inputs, etc.). It has no security, but integrates with Interlogix alarm panels. But, you pretty much have to program both devices independently.
Russound makes great multi-room audio, and they have a robust serial interface, but not much direct plug-and-play capabilities.
All of the various sub-systems seem to almost, but not quite, talk to each other.
I've personally moved to an OSX based system (Indigo) and do apple-scripting to handle a lot of things.
In the past, I had a JDS Stargage, HAI OmniPro, and PC running an application I wrote to handle email, web and IM interfacing to the Internet, plus some PIC-based stuff I build for other one-off sensors and interfaces to things.
My stuff works well, and most people can use and understand it, but this is the result of no small bit of effort and many custom bits...
Not exactly joe-consumer friendly.
As for MS-home, they've been in and out of this space for 10 years. I don't expect much from them, and like most of their solutions, I find the approach too closed.