Developer ecosystem switching costs proprietary API dependency