It's one thing to allow independent applications to use the protocol and service, like Pidgin and others. And also many services did not like this and repeatedly changed their proprietary custom protocol to make this difficult.
It's another thing to be interoperable between services. Then you could continue to use only one service but still be able to talk to people on other services.