If you read through PStuart's posts in other threads, you'll see he had many problems with the lack of documentation and with the incompleteness and inaccuracy of what little is there. It just doesn't work well.
I don't agree with Ryan though that they're protecting their own investment; I think instead they're overwhelmed and a bit incompetent. Plus Ryan wants "fully open", by which he presumably means "open source", which isn't really necessary if only Samsung/SmartThings would fix the current APIs and document stuff better.
- Why can I see a HubAction sending data, and see data being returned (watched via packetsniffer), but Parse() is not called?
- How does one point Tiles at more representative icons?
- Why can't Actions support parameters? It's beyond stupid that a typical device command (i.e. deviceNofitication.Notify or speechSynthesis.Speak) take a parameter, but that you cannot pass it one from the Action of a standardTile..
- Only supported Capability Attributes are supported; when will they allow extension of events to support more?
- If you're writing a real custom Device Driver (as LANdroid is), your SmartApp still is constrained to looking for legacy device types... which means having to choose a non-representative type and risk the SmartApp being connected to an insufficient device. Why?
- There's no list of types supported by Device Preferences; the documentation is still officially incomplete. Why? How hard could this be?
- Why isn't cloud storage or local storage documented at all at this point?
Too much of the effort in supporting SmartThings is in trying to get capabilities tied to methods or data back from calls or to determine the magical incantation to get something to work.
But, on the other hand, this little hub only cost $99 and does a lot for that. I can be a bit frustrated and still, over all, consider it fun and a decent value. Ryan, it's not like there are competitive better values. (Says the author of a popular plug-in for HomeSeer years ago. )