In my opinion the whole notion of coupling the UI to the API was a step in the wrong direction. It makes it effectively impossible to compose apps the way you can compose command line utils with piping. Apps should be designed as client/server by default, and then you could always leverage the service API for the app any way you want, slap a custom UI, use it in automation scripts, etc. It’s just way more flexible that way.
In my opinion the whole notion of coupling the UI to the API was a step in the wrong direction. It makes it effectively impossible to compose apps the way you can compose command line utils with piping. Apps should be designed as client/server by default, and then you could always leverage the service API for the app any way you want, slap a custom UI, use it in automation scripts, etc. It’s just way more flexible that way.