I understand this, but it doesn't solve the problem. Imagine if someone said: "the developers of grep have come out with an SDK so that other text-oriented programs can integrate text matching!" The idea of grep-as-library is great, but it doesn't replace having pipes so that you can use grep with arbitrary programs, most of which have no idea they're being used with grep.
To build larger abstractions on top of these things, we need looser coupling. I want to draw and erase with Pencil, but use a manual dial to set the pressure because I do very precise architectural drawings. I want to draw with Pencil but use Mighty to make my lines snap to a grid and some other French Curve thing I hacked together with some dials for snapping to curves. I want to use two Pencils at once on two separate iPads and draw together with someone. I want my LeapMotion to understand my hand gestures to rotate data in an Excel pivot table and project it into a graph.
Yes, I want crazy things. But abstractions work to build crazy, unexpected text-oriented programs in Unix. So what are the abstractions we need to build arbitrary crazy programs with UIs and hardware peripherals?