I suppose you are replying to me.
Some valid points, although sometimes choices are historical, sometimes merely for user convenience.
As example of the first, Chess for Android started with UCI support in 2010 and added Win/XBoard support a bit later. And even though recently I showed that Polyglot for Android works just fine as well, there is no reason for me now to remove UCI support
Well yes because the adapter will do all the job so you can be sure it works without even testing. Packaging the adapter with your app is the same us writing code yourself in your app except the latter is tedious and not extensible when you have general game playing in mind (not just chess)
As example of the second, PJ+'s utility has already been used for a long time to import remote chess servers into Chess for Android (so they are directly first class citizens). By popular demand, however, I also added built-in support for connecting a network socket. These built-in network engines were not first class citizens yet, and my posting merely served to announce that this would soon be resolved. But it is great to see a nice discussion going!
A socket connection encompasses everything so it can be used for local/remote engines, connecting to servers, connection to another phone etc... The problem is with defining _protocols_. I have four of them already. I like this server/client design with communication protocol. Even epd testing against engines/humans (remote or local for that matter) are done this way ,after installing an EPD server engine.For my case all engines (humans, local engines, remote engins, ICS servers/clients etc..) are installed the same way. They all share the same interface and are installed using command line and working directory. The type of the game play is decided from the selected engines. For example if a TCP server engien is selected, then the app would act like a dumb client. If a human engine is selected, it provides gui input to it etc.. This makes life much easier